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)