TRY_TO_GEOMETRY
TRY_TO_GEOMETRY
입력을 파싱해서 GEOMETRY 타입의 값을 돌려주는 변환 함수예요. TO_GEOMETRY와 동일하지만, TO_GEOMETRY가 오류를 내는 상황에서 NULL을 반환한다는 점이 달라요.
출처: 공식 문서
본문
입력을 파싱하고 GEOMETRY 타입의 값을 반환합니다.
이 함수는 TO_GEOMETRY가 오류를 반환할 때 NULL을 반환한다는 점을 제외하면 TO_GEOMETRY와 동일합니다.
참고 (See also): TO_GEOMETRY
구문 (Syntax)
다음 중 하나를 사용합니다:
TRY_TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TRY_TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
인자 (Arguments)
필수 (Required):
varchar_expression
인자는 다음 형식 중 하나로 유효한 기하 객체를 나타내는 문자열 표현식이어야 합니다: WKT(well-known text), WKB(well-known binary) 16진수 형식(앞의 0x 없음), EWKT(extended well-known text), EWKB(extended well-known binary) 16진수 형식(앞의 0x 없음), GeoJSON.
binary_expression
인자는 WKB 또는 EWKB 형식의 바이너리 표현식이어야 합니다.
variant_expression
인자는 GeoJSON 형식의 OBJECT여야 합니다.
선택 (Optional):
srid
사용할 SRID의 정수 값입니다.
allow_invalid
TRUE이면, 입력 모양이 유효하지 않고 복구할 수 없더라도 함수가 GEOGRAPHY 또는 GEOMETRY 객체를 반환하도록 지정합니다. 자세한 내용은 "유효하지 않은 지리 공간 모양 처리 방법 지정"을 참고하세요.
반환값 (Returns)
GEOMETRY 타입의 값을 반환하거나, TO_GEOMETRY가 오류를 반환할 경우 NULL을 반환합니다.
사용 참고 (Usage notes)
- 입력을 적절한 지원 형식(WKT, WKB, EWKT, EWKB, GeoJSON)으로 파싱할 수 없으면 NULL을 반환합니다.
- GeoJSON, WKT, WKB 입력의 경우
srid인자를 지정하지 않으면 결과 GEOMETRY 객체의 SRID는 0으로 설정됩니다.
예제 (Examples)
VARCHAR 데이터와 함께 TRY_TO_GEOMETRY 함수를 간단히 사용하는 예입니다:
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 및 hex/EWKT/EWKB/GeoJSON)
- BINARY (WKB/EWKB)
- VARIANT (GeoJSON 객체)
- GEOGRAPHY
선택적인 srid와 allow_invalid 값은 이 형식들 중 어떤 것 뒤에도 올 수 있습니다. ST_ASWKB 함수는 유효한 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 |
+----+-----------+
더 알아보기 (Learn more)
- TO_GEOMETRY — 오류 발생 버전
- TO_GEOGRAPHY / TRY_TO_GEOGRAPHY
- 지리 공간 데이터 타입