TRY_TO_GEOMETRY¶
入力を解析し、 GEOMETRY 型の値を返します。
この関数は TO_GEOMETRY と同じですが、 TO_GEOMETRY がエラーを返したときに NULL を返す点が異なります。
- こちらもご参照ください。
構文¶
次のいずれかを使用します。
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
引数¶
必須:
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');
+----------------------------------+
| TRY_TO_GEOMETRY('INVALID INPUT') |
|----------------------------------|
| NULL |
+----------------------------------+
仮テーブルを作成し、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;
このテーブルには、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;
+----+-----------+
| ID | G_OR_NULL |
|----+-----------|
| 1 | NULL |
| 2 | NULL |
+----+-----------+