TO_GEOMETRY¶
입력을 구문 분석하고 GEOMETRY 형식의 값을 반환합니다.
구문¶
다음 중 하나를 사용하십시오.
TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )
TO_GEOMETRY( <geography_expression> [ , <srid> ] [ , <allow_invalid> ] )
인자¶
필수:
- varchar_expression
- 인자는 다음 형식 중 하나로 유효한 기하학적 오브젝트를 나타내는 문자열 식이어야 합니다. - WKT(잘 알려진 텍스트) 
- 16진수 형식의 WKB(잘 알려진 바이너리)(선행 - 0x제외)
- EWKT(확장된 잘 알려진 텍스트) 
- 16진수 형식의 EWKB(확장된 잘 알려진 바이너리)(선행 - 0x제외)
- GeoJSON 
 
- binary_expression
- 인자는 WKB 또는 EWKB 형식의 이진 식이어야 합니다. 
- variant_expression
- 인자는 GeoJSON 형식의 OBJECT여야 합니다. 
- geography_expression
- 인자는 GEOGRAPHY 형식의 식이어야 합니다. 
선택 사항:
- srid
- 사용할 SRID의 정수 값입니다. 
- allow_invalid
- TRUE인 경우 입력 형태가 유효하지 않고 복구할 수 없는 경우에도 함수가 GEOGRAPHY 또는 GEOMETRY 오브젝트를 반환하도록 지정합니다. 자세한 내용은 유효하지 않은 지리 공간 도형을 처리하는 방법 지정하기 섹션을 참조하세요. 
반환¶
함수는 GEOMETRY 형식의 값을 반환합니다.
사용법 노트¶
- 지원되는 형식(WKT, WKB, EWKT, EWKB, GeoJSON) 중 하나로 입력을 구문 분석할 수 없는 경우, 오류가 발생합니다. 
- GeoJSON, WKT 및 WKB 입력의 경우 - srid인자가 지정되지 않으면 결과 GEOMETRY 오브젝트의 SRID가 0으로 설정됩니다.
- WKT 또는 EWKT 입력에서 GEOMETRY 오브젝트를 구성하려면 ST_GEOMETRYFROMWKT 를 사용할 수도 있습니다. 
- WKB 또는 EWKB 입력에서 GEOMETRY 오브젝트를 구성하려면 ST_GEOMETRYFROMWKB 를 사용할 수도 있습니다. 
예¶
다음 예제에서는 TO_GEOMETRY 함수를 사용하여 WKT에 표시된 오브젝트를 GEOMETRY 오브젝트로 변환하는 방법을 보여줍니다. 이 예제에서는 srid 인자를 지정하지 않으며 SRID는 오브젝트의 입력 표현에 지정되지 않으므로 SRID가 0 으로 설정됩니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('POINT(1820.12 890.56)');
+--------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)') |
|--------------------------------------|
| SRID=0;POINT(1820.12 890.56)         |
+--------------------------------------+
다음 예제에서는 EWKT로 표시된 오브젝트를 GEOMETRY 오브젝트로 변환합니다. 입력 EKWT는 사용할 SRID를 지정합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)');
+------------------------------------------------+
| TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)') |
|------------------------------------------------|
| SRID=4326;POINT(1820.12 890.56)                |
+------------------------------------------------+
다음 예제에서는 SRID를 srid 입력 인자로 지정하는 방법을 보여줍니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('POINT(1820.12 890.56)', 4326);
+--------------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)', 4326) |
|--------------------------------------------|
| SRID=4326;POINT(1820.12 890.56)            |
+--------------------------------------------+
다음 예는 EWKT 형식으로 설명된 Z축을 가진 지리 공간 오브젝트에 대한 GEOMETRY 오브젝트를 반환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)');
+-----------------------------------------------------------+
| TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)') |
|-----------------------------------------------------------|
| SRID=32633;POINTZ(389866.35 5819003.03 30)                |
+-----------------------------------------------------------+
GEOGRAPHY 오브젝트를 GEOMETRY 오브젝트로 변환하는 예는 GEOGRAPHY와 GEOMETRY 간에 변환하기 섹션을 참조하십시오.
다음 예제에서는 테이블의 데이터에 대한 쿼리에 TO_GEOMETRY 함수를 사용합니다.
임시 테이블을 만들고 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 , ST_ASBINARY 함수는 유효한 WKB BINARY 값을 생성합니다.
다음 예제에서는 기본 SRID 0 을 사용하여 wkt_col 열의 VARCHAR 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(wkt_col) AS g
  FROM demo_to_geometry;
+----+------------------------------+
| ID | G                            |
|----+------------------------------|
|  1 | SRID=0;POINT(10 20)          |
|  2 | SRID=0;LINESTRING(0 0,10 10) |
+----+------------------------------+
다음 예제에서는 srid_col 열의 SRID 값을 사용하여 wkt_col 열의 VARCHAR 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(wkt_col, srid_col) AS g
  FROM demo_to_geometry;
+----+----------------------------------+
| ID | G                                |
|----+----------------------------------|
|  1 | SRID=3857;POINT(10 20)           |
|  2 | SRID=3857;LINESTRING(0 0,10 10)  |
+----+----------------------------------+
다음 예제에서는 ewkt_col 열 값에 포함된 SRID 값을 사용하여 ewkt_col 열의 VARCHAR 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(ewkt_col) AS g
  FROM demo_to_geometry;
+----+--------------------------------------------+
| ID | G                                          |
|----+--------------------------------------------|
|  1 | SRID=32633;POINT(500000 4649776.22)        |
|  2 | SRID=32633;POINT(389866.35 5819003.03)     |
+----+--------------------------------------------+
다음 예제에서는 wkb_bin_col 열의 BINARY 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET BINARY_OUTPUT_FORMAT='HEX';
SELECT id, TO_GEOMETRY(wkb_bin_col) AS g
  FROM demo_to_geometry;
+----+----------------------------+
| ID | G                          |
|----+----------------------------|
|  1 | SRID=0;LINESTRING(0 0,1 1) |
|  2 | SRID=0;POINT(2 3)          |
+----+----------------------------+
다음 예제에서는 srid_col 열의 SRID 값을 사용하여 geojson_col 열의 VARIANT 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(geojson_col, srid_col) AS g
  FROM demo_to_geometry;
+----+--------------------------------+
| ID | G                              |
|----+--------------------------------|
|  1 | SRID=3857;POINT(10 20)         |
|  2 | SRID=3857;LINESTRING(0 0,1 1)  |
+----+--------------------------------+
다음 예제에서는 srid_col 열의 SRID 값을 사용하여 geog_col 열의 GEOGRAPHY 값을 대상으로 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(geog_col, srid_col) AS g
  FROM demo_to_geometry;
+----+-----------------------------------------------+
| ID | G                                             |
|----+-----------------------------------------------|
|  1 | SRID=4326;POINT(-122.35 37.55)                |
|  2 | SRID=4326;LINESTRING(-124.2 42,-120.01 41.99) |
+----+-----------------------------------------------+
다음 예제에서는 srid0 열의 SRID 값(0)과 allow_true 열의 allow_invalid 값을 사용하여 invalid_wkt_col 열의 VARCHAR 값을 GEOMETRY 값으로 변환합니다.
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';
SELECT id, TO_GEOMETRY(invalid_wkt_col, srid0, allow_true) AS g
  FROM demo_to_geometry;
출력에 유효하지 않은 형태가 포함됩니다.
+----+---------------------------------------+
| ID | G                                     |
|----+---------------------------------------|
|  1 | SRID=0;POLYGON((0 0,2 2,2 0,0 2,0 0)) |
|  2 | SRID=0;POLYGON((0 0,1 1,1 0,0 1,0 0)) |
+----+---------------------------------------+