カテゴリ:

地理空間関数変換関数

TRY_TO_GEOMETRY

入力を解析し、 GEOMETRY 型の値を返します。

この関数は TO_GEOMETRY と同じですが、 TO_GEOMETRY がエラーを返したときに NULL を返す点が異なります。

こちらもご参照ください。

TO_GEOMETRY

構文

次のいずれかを使用します。

TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )

TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )

TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
Copy

引数

必須:

varchar_expression

引数は、次のいずれかの形式で有効なジオメトリオブジェクトを表す文字列式である必要があります。

  • WKT (よく知られているテキスト)。

  • WKB (周知のバイナリ)16進数形式(先頭に 0x なし)。

  • EWKT (周知のテキスト)。

  • EWKB (周知のバイナリ)16進数形式(先頭に 0x なし)。

  • GeoJSON

binary_expression

引数は WKB または EWKB 形式のバイナリ式である必要があります。

variant_expression

引数は、 GeoJSON 形式の OBJECT である必要があります。

オプション:

srid

使用する SRID の整数値。

allow_invalid

TRUE の場合、入力形状が有効ではなく修復できない場合でも、関数が GEOGRAPHY または GEOMETRY オブジェクトを返すことを指定します。詳細については、 無効な地理空間形状の処理方法の指定 をご参照ください。

戻り値

この関数は、TO_GEOMETRY がエラーを返す場合、型 GEOMETRY の値または NULL を返します。

使用上の注意

  • 入力が、サポートされている適切な形式(NULL、WKT、WKB、EWKT、EWKB)として解析できない場合は、GeoJSON を返します。

  • GeoJSON、 WKT、および WKB 入力の場合は、 srid 引数が指定されていないと、結果の GEOMETRY オブジェクトの SRID は0に設定されます。

これは、 TRY_TO_GEOMETRY 関数と VARCHAR データの簡単な使用法を示しています。

SELECT TRY_TO_GEOMETRY('INVALID INPUT');
Copy
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL                             |
+----------------------------------+
Copy

仮テーブルを作成し、GEOMETRY の値の行を挿入します。

CREATE OR REPLACE TEMP TABLE demo_to_geometry AS
SELECT
  1                                                     AS id,
  'POINT(10 20)'                                        AS wkt_col,         -- VARCHAR (WKT)
  'SRID=32633;POINT(500000.0 4649776.22)'               AS ewkt_col,        -- VARCHAR (EWKT)
  ST_ASWKB(TO_GEOMETRY('LINESTRING(0 0, 1 1)'))         AS wkb_bin_col,     -- BINARY (WKB)
  PARSE_JSON('{"type":"Point","coordinates":[10,20]}')  AS geojson_col,     -- VARIANT (GeoJSON)
  TO_GEOGRAPHY('POINT(-122.35 37.55)')                  AS geog_col,        -- GEOGRAPHY
  'POLYGON((0 0,2 2,2 0,0 2,0 0))'                      AS invalid_wkt_col, -- invalid shape
  0                                                     AS srid0,           -- SRID columns to show positional args
  3857                                                  AS srid_col,
  TRUE                                                  AS allow_true,      -- allow_invalid flags from columns
  FALSE                                                 AS allow_false
UNION ALL
SELECT
  2,
  'LINESTRING(0 0, 10 10)',
  'SRID=32633;POINT(389866.35 5819003.03)',
  ST_ASWKB(TO_GEOMETRY('POINT(2 3)')),
  PARSE_JSON('{"type":"LineString","coordinates":[[0,0],[1,1]]}'),
  TO_GEOGRAPHY('LINESTRING(-124.2 42,-120.01 41.99)'),
  'POLYGON((0 0,1 1,1 0,0 1,0 0))',
  0,
  3857,
  TRUE,
  FALSE;
Copy

このテーブルには、TO_GEOMETRY 関数が入力として受け入れる次の形式のデータ型の列があります。

  • VARCHAR (WKT/WKB および16進数/EWKT/EWKB/GeoJSON)

  • BINARY (WKB/EWKB)

  • VARIANT (GeoJSON オブジェクト)

  • GEOGRAPHY

オプションの srid 値と allow_invalid 値は、これらの形式のいずれかに従うことができます。ST_ASWKB , ST_ASBINARY 関数は有効な WKB BINARY 値を生成します。

次の例では、invalid_wkt_col 列の VARCHAR 値を GEOMETRY 値に変換しようとしていますが、形が有効ではありません。

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT id, TRY_TO_GEOMETRY(invalid_wkt_col) AS g_or_null
  FROM demo_to_geometry;
Copy
+----+-----------+
| ID | G_OR_NULL |
|----+-----------|
|  1 | NULL      |
|  2 | NULL      |
+----+-----------+