지리 공간 데이터 타입¶
Snowflake는 지표상에 점, 선, 다각형과 같은 지리 공간적 기능을 위한 기본 지원을 제공합니다.
이 항목의 내용:
데이터 타입¶
Snowflake는 지리 공간 데이터에 대해 다음 데이터 타입을 제공합니다.
GEOGRAPHY 데이터 타입¶
GEOGRAPHY 데이터 타입은 WGS 84 표준(공간 참조 ID 4326. 자세한 내용은 https://spatialreference.org/ref/epsg/wgs-84/ 참조)을 따릅니다.
지구상의 점은 경도(-180도~+180도)와 위도(-90~+90도)로 표시됩니다.
고도는 현재 지원되지 않습니다.
선분은 지표상의 측지 호로 해석됩니다.
Snowflake는 GEOGRAPHY 데이터 타입에 대해 작동하는 지리 공간 함수 도 제공합니다.
지리 공간 데이터(예: 경도 및 위도 데이터, WKT, WKB, GeoJSON 등)가 있는 경우 이 데이터를 VARCHAR, VARIANT 또는 NUMBER 열에 원래 형식으로 유지하는 대신 데이터를 변환하여 GEOGRAPHY 열에 저장해야 합니다. GEOGRAPHY 열에 데이터를 저장하면 지리 공간 기능을 사용하는 쿼리의 성능을 크게 개선할 수 있습니다.
GEOMETRY 데이터 타입¶
GEOMETRY 데이터 타입은 평면(유클리드, 데카르트) 좌표계의 특징을 나타냅니다.
좌표는 실수 쌍(x, y)으로 표시됩니다. 현재, 2D 좌표만 지원됩니다.
X와 Y의 단위는 GEOMETRY 오브젝트와 관련된 공간 참조 시스템(SRS) 에 따라 결정됩니다. 공간 참조 시스템은 공간 참조 시스템 식별자(SRID) 번호로 식별됩니다. GEOMETRY 오브젝트를 만들 때 또는 ST_SETSRID 호출로 SRID를 제공하지 않는 한 SRID는 0입니다.
Snowflake는 GEOMETRY 데이터 타입 에 대해 작동하는 지리 공간 함수 세트를 제공합니다. 이들 함수에 대한 사항은 다음과 같습니다.
기하학에서 비평면 SRS를 사용하더라도 모든 함수에서는 평면 좌표를 가정합니다.
측정 함수(예: ST_LENGTH)는 좌표계와 동일한 단위를 사용합니다.
여러 GEOMETRY 식을 인자로 받는 함수(예: ST_DISTANCE)의 경우 입력 식을 동일한 SRS에서 정의해야 합니다.
지리 공간 입력 및 출력¶
다음 섹션에서는 지리 공간 데이터를 읽고 쓸 때 지원되는 표준 형식 및 오브젝트 유형을 다룹니다.
지원되는 표준 입력 및 출력 형식¶
GEOGRAPHY 및 GEOMETRY 데이터 타입은 입력과 출력에 대해 다음의 표준 산업 형식을 지원합니다.
《WKT》 (Well-Known Text)
《WKB》 (Well-Known Binary)
EWKT 및 EWKB(Extended WKT 및 WKB) (EWKT 및 EWKB 처리에 관한 참고 사항 참조)
다음 참고 자료가 도움이 될 수도 있습니다.
Open Geospatial Consortium의 간단한 기능 액세스/공통 아키텍처 및 SQL 옵션:
이러한 표준에서 벗어나는 상황은 Snowflake 설명서에 명시적으로 언급되어 있습니다.
GEOGRAPHY 값의 GeoJSON 처리에 대한 참고 사항¶
WKT 및 WKB 표준에서는 형식만 지정하며, WKT/WKB 오브젝트의 의미 체계는 참조 시스템(예: 평면 또는 구)에 따라 다릅니다.
반면에, GeoJSON 표준은 형식과 의미 체계를 모두 지정합니다. GeoJSON 점은 명시적으로 WGS 84 좌표이고, GeoJSON 선분은 평면 가장자리(직선)여야 합니다.
그와는 반대로, Snowflake GEOGRAPHY 데이터 타입은 GeoJSON 형식에서의 입력이나 이 형식으로의 출력을 포함하여 모든 선분을 측지 호로 해석합니다. 본질적으로, Snowflake는 구형 의미 체계를 사용해 GeoJSON을 JSON 형식의 WKT로 취급합니다.
GEOGRAPHY 값의 EWKT 및 EWKB 처리에 대한 참고 사항¶
EWKT와 EWKB는 PostGIS 에 의해 도입된 비표준 형식입니다. 이들은 데이터와 함께 사용할 좌표 참조 시스템을 지정하는 SRID(Spatial Reference System Identifier) 를 포함함으로써 WKT 및 WKB 형식을 향상합니다. Snowflake는 현재 SRID=4326에 매핑하는 WGS84만 지원합니다.
기본적으로, Snowflake는 EWKB 또는 EWKT 입력값에 4326 이외의 SRID가 포함된 경우 오류를 발생시킵니다. 반대로, 모든 EWKB 및 EWKT 출력값에는 SRID=4326이 있습니다.
지원되는 지리 공간 오브젝트 유형¶
GEOGRAPHY 및 GEOMETRY 데이터 타입은 다음과 같은 유형의 지리 공간 오브젝트를 저장할 수 있습니다.
WKT/WKB/EWKT/EWKB/GeoJSON 지리 공간 오브젝트:
Point
MultiPoint
LineString
MultiLineString
Polygon
MultiPolygon
GeometryCollection
GeoJSON에 특정한 지리 공간 오브젝트:
Feature
FeatureCollection
결과 세트의 출력 형식 지정하기¶
세션 매개 변수 GEOGRAPHY_OUTPUT_FORMAT 과 GEOMETRY_OUTPUT_FORMAT 은 결과 세트에서 각각 GEOGRAPHY 유형 및 GEOMETRY 유형 열의 렌더링을 제어합니다.
GEOGRAPHY_OUTPUT_FORMAT 및 GEOMETRY 매개 변수는 다음 값 중 하나를 가질 수 있습니다.
매개 변수 값
설명
GeoJSON(기본값)
GEOGRAPHY / GEOMETRY 결과는 GeoJSON 형식의 OBJECT로 렌더링됩니다.
WKT
GEOGRAPHY / GEOMETRY 결과는 WKT 형식의 VARCHAR로 렌더링됩니다.
WKB
GEOGRAPHY / GEOMETRY 결과는 WKB 형식의 BINARY로 렌더링됩니다.
EWKT
GEOGRAPHY / GEOMETRY 결과는 EWKT 형식의 VARCHAR로 렌더링됩니다.
EWKB
GEOGRAPHY / GEOMETRY 결과는 EWKB 형식의 BINARY로 렌더링됩니다.
EWKT와 EWKB의 경우, SRID는 출력에서 항상 4326입니다. EWKT 및 EWKB 처리에 관한 참고 사항 을 참조하십시오.
이 매개 변수는 Snowflake UI와 SnowSQL 명령줄 클라이언트뿐 아니라 JDBC, ODBC, node.js, python 등의 드라이버와 커넥터도 포함한 모든 클라이언트에 영향을 줍니다.
예: JDBC 드라이버는 GEOGRAPHY 형식의 결과 열(이 예에서는 i
열)에 대해 다음 메타데이터를 반환합니다.
GEOGRAPHY_OUTPUT_FORMAT='GeoJSON'
또는GEOMETRY_OUTPUT_FORMAT='GeoJSON'
인 경우:ResultSetMetaData.getColumnType(i)
는java.sql.Types.VARCHAR
를 반환합니다.ResultSetMetaData.getColumnClassName(i)
는"java.lang.String"
을 반환합니다.
GEOGRAPHY_OUTPUT_FORMAT='WKT'
또는'EWKT'
인 경우, 또는GEOMETRY_OUTPUT_FORMAT='WKT'
또는'EWKT'
인 경우:ResultSetMetaData.getColumnType(i)
는java.sql.Types.VARCHAR
를 반환합니다.ResultSetMetaData.getColumnClassName(i)
는"java.lang.String"
을 반환합니다.
GEOGRAPHY_OUTPUT_FORMAT='WKB'
또는'EWKB'
인 경우, 또는GEOMETRY_OUTPUT_FORMAT='WKB'
또는'EWKB'
인 경우:ResultSetMetaData.getColumnType(i)
는java.sql.Types.BINARY
를 반환합니다.ResultSetMetaData.getColumnClassName(i)
는"[B"
(바이트 배열)를 반환합니다.
참고
데이터베이스별 형식 이름(JDBC의 getColumnTypeName
및 ODBC의 SQL_DESC_TYPE_NAME
설명자)을 검색하기 위한 API는 GEOGRAPHY_OUTPUT_FORMAT
매개 변수와 GEOMETRY_OUTPUT_FORMAT
매개 변수의 값과 관계없이 항상 형식 이름에 대해 GEOGRAPHY
와 GEOMETRY
를 반환합니다. 자세한 내용은 다음을 참조하십시오.
JDBC 드라이버 설명서의 Snowflake 고유 동작.
ODBC 드라이버 설명서의 결과 및 결과에 대한 정보 검색하기.
GEOGRAPHY 데이터 삽입과 쿼리의 예¶
아래 코드는 GEOGRAPHY 데이터 타입에 대한 샘플 입력 및 출력을 보여줍니다. 다음 사항을 참고하십시오.
WKT, EWKT, GeoJSON에 있는 좌표의 경우, 경도가 위도 앞에 나타납니다(예:
POINT(lon lat)
).WKB 및 EWKB 출력의 경우 BINARY_OUTPUT_FORMAT 매개 변수는
HEX
(매개 변수의 기본값)로 설정된 것으로 간주됩니다.
이 예에서는 GEOGRAPHY 열이 있는 테이블을 만들고 WKT 형식으로 데이터를 삽입하고 데이터를 다른 출력 형식으로 반환합니다.
create table geospatial_table (id INTEGER, g GEOGRAPHY); insert into geospatial_table values (1, 'POINT(-122.35 37.55)'), (2, 'LINESTRING(-124.20 42.00, -120.01 41.99)');alter session set GEOGRAPHY_OUTPUT_FORMAT='GeoJSON';select g from geospatial_table order by id; +------------------------+ | G | |------------------------| | { | | "coordinates": [ | | -122.35, | | 37.55 | | ], | | "type": "Point" | | } | | { | | "coordinates": [ | | [ | | -124.2, | | 42 | | ], | | [ | | -120.01, | | 41.99 | | ] | | ], | | "type": "LineString" | | } | +------------------------+alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';select g from geospatial_table order by id; +-------------------------------------+ | G | |-------------------------------------| | POINT(-122.35 37.55) | | LINESTRING(-124.2 42,-120.01 41.99) | +-------------------------------------+alter session set GEOGRAPHY_OUTPUT_FORMAT='WKB';select g from geospatial_table order by id; +------------------------------------------------------------------------------------+ | G | |------------------------------------------------------------------------------------| | 01010000006666666666965EC06666666666C64240 | | 010200000002000000CDCCCCCCCC0C5FC00000000000004540713D0AD7A3005EC01F85EB51B8FE4440 | +------------------------------------------------------------------------------------+alter session set GEOGRAPHY_OUTPUT_FORMAT='EWKT';select g from geospatial_table order by id; +-----------------------------------------------+ | G | |-----------------------------------------------| | SRID=4326;POINT(-122.35 37.55) | | SRID=4326;LINESTRING(-124.2 42,-120.01 41.99) | +-----------------------------------------------+alter session set GEOGRAPHY_OUTPUT_FORMAT='EWKB';select g from geospatial_table order by id; +--------------------------------------------------------------------------------------------+ | G | |--------------------------------------------------------------------------------------------| | 0101000020E61000006666666666965EC06666666666C64240 | | 0102000020E610000002000000CDCCCCCCCC0C5FC00000000000004540713D0AD7A3005EC01F85EB51B8FE4440 | +--------------------------------------------------------------------------------------------+
Snowflake에서 지리 공간 데이터 사용하기¶
다음 섹션에서는 지리 공간 데이터를 읽고 쓸 때 지원되는 표준 형식 및 오브젝트 유형을 다룹니다.
GEOMETRY와 함께 다른 SRID를 사용하는 효과 이해하기¶
GEOMETRY 열에서 다른 SRID를 가진 오브젝트를 삽입할 수 있습니다. 열에 둘 이상의 SRID가 포함되어 있으면 중요한 성능 최적화 중 일부가 적용되지 않습니다. 이로 인해 특히 지리 공간 조건자에서 조인할 때 쿼리 속도가 느려질 수 있습니다.
GEOGRAPHY 및 GEOMETRY 열에 대한 DML 연산 수행하기¶
GEOGRAPHY 또는 GEOMETRY 열이 DML 작업(INSERT, COPY, UPDATE, MERGE 또는 CREATE TABLE AS…)의 대상일 때는 열의 원본 식이 다음과 같은 유형일 수 있습니다.
GEOGRAPHY 또는 GEOMETRY: GEOGRAPHY 또는 GEOMETRY 형식의 식은 보통 구문 분석 함수, 생성자 함수 또는 기존 GEOGRAPHY 또는 GEOMETRY 열의 결과입니다. 지원되는 함수와 함수 카테고리의 전체 목록은 지리 공간 함수 를 참조하십시오.
VARCHAR: WKT, WKB(16진수 형식), EWKT, EWKB(16진수 형식) 또는 GeoJSON 형식의 문자열로 해석됩니다(TO_GEOGRAPHY(VARCHAR) 참조).
BINARY: WKB 이진 형식으로 해석됩니다(TO_GEOGRAPHY(BINARY) 및
TO_GEOMETRY(BINARY) 참조).
VARIANT: GeoJSON 오브젝트로 해석됩니다(TO_GEOGRAPHY(VARIANT) 및 TO_GEOMETRY(VARIANT) 참조).
스테이지에서 지리 공간 데이터 로딩하기¶
스테이지에 있는 CSV 또는 JSON/AVRO 파일의 데이터를 GEOGRAPHY 열로 직접(즉, 복사 변환 없이) 로딩할 수 있습니다.
CSV: 해당 CSV 열의 문자열 값은 GeoJSON, WKT, EWKT, WKB 또는 EWKB로 구문 분석됩니다(TO_GEOGRAPHY(VARCHAR) 참조).
JSON/AVRO: 파일의 JSON 값은 GeoJSON으로 해석됩니다(TO_GEOGRAPHY(VARIANT) 참조).
COPY 변환을 통해 다른 파일 형식(Parquet, ORC 등)에서 데이터를 로딩할 수 있습니다.
Java UDF와 함께 지리 공간 데이터 사용하기¶
Java UDF는 GEOGRAPHY 형식을 인자와 반환 값으로 허용합니다. 자세한 내용은 SQL-Java 데이터 타입 매핑 및 인라인 Java UDF에 GEOGRAPHY 값 전달 섹션을 참조하십시오.
JavaScript UDF와 함께 지리 공간 데이터 사용하기¶
JavaScript UDFs는 GEOGRAPHY 형식을 인자와 반환 값으로 허용합니다.
JavaScript UDF에 GEOGRAPHY 형식의 인자가 있는 경우 그 인자는 UDF 본문 내 GeoJSON 형식의 JSON 오브젝트로 표시됩니다.
JavaScript UDF가 GEOGRAPHY를 반환할 경우 UDF 본문은 JSON 오브젝트를 GeoJSON 형식으로 반환할 것으로 예상됩니다.
예를 들어, 다음 두 JavaScript UDFs는 내장 함수 ST_X 및 ST_MAKEPOINT와 대략적으로 동등합니다.
create or replace function my_st_x(G geography) returns real
language javascript
as
$$
if (G["type"] != "Point")
{
throw "Not a point"
}
return G["coordinates"][0]
$$;
create or replace function my_st_makepoint(LNG real, LAT real) returns geography
language javascript
as
$$
g = {}
g["type"] = "Point"
g["coordinates"] = [ LNG, LAT ]
return g
$$;
사용할 지리 공간 데이터 타입 선택하기(GEOGRAPHY 또는 GEOMETRY)¶
다음 섹션에서는 GEOGRAPHY 데이터 타입과 GEOMETRY 데이터 타입의 차이점을 설명합니다.
GEOGRAPHY와 GEOMETRY의 차이점 이해하기¶
GEOGRAPHY 및 GEOMETRY 데이터 타입이 둘 다 지리 공간적 특징을 정의하지만, 타입은 서로 다른 모델을 사용합니다. 다음 표에 차이점이 요약되어 있습니다.
GEOGRAPHY 데이터 타입 |
GEOMETRY 데이터 타입 |
---|---|
|
|
GEOGRAPHY 및 GEOMETRY 데이터 타입을 비교하는 예¶
다음 예에서는 GEOGRAPHY 및 GEOMETRY 데이터 타입을 입력으로 사용할 때 지리 공간 함수의 출력을 비교합니다.
예 1: 베를린과 샌프란시스코 사이의 거리 쿼리하기¶
다음 표는 GEOGRAPHY 타입과 GEOMETRY 타입에 대한 ST_DISTANCE 의 출력을 비교한 내용입니다.
ST_DISTANCE . GEOGRAPHY 입력 사용하기 |
ST_DISTANCE . GEOMETRY 입력 사용하기 |
---|---|
SELECT ST_DISTANCE(
ST_POINT(13.4814, 52.5015),
ST_POINT(-121.8212, 36.8252))
AS distance_in_meters;
+--------------------+
| DISTANCE_IN_METERS |
|--------------------|
| 9182410.99227821 |
+--------------------+
|
SELECT ST_DISTANCE(
ST_GEOM_POINT(13.4814, 52.5015),
ST_GEOM_POINT(-121.8212, 36.8252))
AS distance_in_degrees;
+---------------------+
| DISTANCE_IN_DEGREES |
|---------------------|
| 136.207708844 |
+---------------------+
|
위의 예에 표시된 것처럼 다음과 같습니다.
GEOGRAPHY 입력값에서 입력 좌표는 도 단위이고 출력값은 미터 단위입니다. (결과는 9,182km입니다.)
GEOMETRY 입력값에서는 입력 좌표와 출력값이 모두 도 단위입니다. (결과는 136.208도입니다.)
예 2: 독일 면적 쿼리하기¶
다음 표는 GEOGRAPHY 타입과 GEOMETRY 타입에 대한 ST_AREA 의 출력을 비교한 내용입니다.
ST_AREA . GEOGRAPHY 입력 사용하기 |
ST_AREA . GEOMETRY 입력 사용하기 |
---|---|
SELECT ST_AREA(border) AS area_in_sq_meters
FROM world_countries
WHERE name = 'Germany';
+-------------------+
| AREA_IN_SQ_METERS |
|-------------------|
| 356379183635.591 |
+-------------------+
|
SELECT ST_AREA(border) as area_in_sq_degrees
FROM world_countries_geom
WHERE name = 'Germany';
+--------------------+
| AREA_IN_SQ_DEGREES |
|--------------------|
| 45.930026848 |
+--------------------+
|
위의 예에 표시된 것처럼 다음과 같습니다.
GEOGRAPHY 입력값에서 입력 좌표는 도 단위이고 출력값은 제곱미터 단위입니다. (결과는 356,379km^2입니다.)
GEOMETRY 입력값에서 입력 좌표는 도 단위이고 출력값은 제곱도 단위입니다. (결과는 45.930제곱도입니다.)
예 3: 베를린에서 샌프란시스코까지 노선이 겹치는 국가의 이름 쿼리하기¶
다음 표는 GEOGRAPHY 타입과 GEOMETRY 타입에 대한 ST_INTERSECTS 의 출력을 비교한 내용입니다.
입력 데이터 유효성 검사의 차이점 이해하기¶
입력 도형에 대한 GEOMETRY 또는 GEOGRAPHY 오브젝트를 만들려면 간단한 기능에 대한 OGC 규칙 에 따라 제대로 된 형태를 갖추고 유효한 도형을 사용해야 합니다. 다음 섹션에서는 GEOMETRY와 GEOGRAPHY 사이에 입력 데이터의 유효성이 어떻게 다른지 설명합니다.
모양은 유효한 GEOGRAPHY일 수 있지만 유효하지 않은 GEOMETRY임¶
주어진 모양은 유효한 GEOGRAPHY 오브젝트일 수 있지만 유효하지 않은 GEOMETRY 오브젝트일 수 있으며, 그 반대도 마찬가지입니다.
예를 들어 자체 교차 다각형은 OGC 규칙에 따라 허용되지 않습니다. 주어진 점 세트는 직교 영역에서 교차하지만 구에서는 교차하지 않는 모서리를 정의할 수 있습니다. 다음 다각형을 생각해 보겠습니다.
POLYGON((0 50, 25 50, 50 50, 0 50))
직교 영역에서 이 다각형은 선으로 분해되며, 결과적으로 유효하지 않습니다.
그러나 구에서는 위와 똑같은 다각형은 자체적으로 교차하지 않으며 유효합니다.
변환 및 생성자 함수는 유효성 검사를 다르게 처리함¶
입력 데이터가 유효하지 않은 경우 GEOMETRY 함수와 GEOGRAPHY 함수는 서로 다른 방식으로 유효성 검사를 처리합니다.
GEOGRAPHY 오브젝트를 생성하고 이 오브젝트로 변환하는 함수(예: TO_GEOGRAPHY)는 다각형에서 닫히지 않은 루프, 스파이크, 절단 및 자체 교차 루프와 같은 문제를 처리하기 위해 모양을 복구하려고 시도할 수 있습니다.
이 함수는 모양을 복구하는 데 성공하는 경우 GEOGRAPHY 오브젝트를 반환합니다.
GEOMETRY 오브젝트를 생성하고 이 오브젝트로 변환하는 함수(예: TO_GEOMETRY)는 모양을 복구하는 기능을 지원하지 않습니다.
GEOGRAPHY와 GEOMETRY 간에 변환하기¶
Snowflake는 GEOGRAPHY에서 GEOMETRY로, 그리고 그 반대로의 캐스팅을 지원하지 않습니다. 또한 Snowflake는 서로 다른 공간 참조 시스템(SRS)을 사용하는 오브젝트의 변환도 지원하지 않습니다.
GEOGRAPHY 오브젝트를 GEOMETRY 오브젝트로, 또는 GEOMETRY를 GEOGRAPHY로 변환해야 하는 경우 GeoJSON을 중간 형식으로 사용할 수 있습니다.
다음 예제에서는 GEOGRAPHY 오브젝트 geography_expression
를 SRID가 0인 GEOMETRY 오브젝트로 변환합니다.
SELECT TO_GEOMETRY(ST_ASGEOJSON(geography_expression));
GEOMETRY 오브젝트의 SRID를 설정해야 하는 경우 ST_SETSRID 함수를 호출합니다. 예를 들어, GEOGRAPHY 오브젝트 geography_expression
를 SRID가 4326인 GEOMETRY 오브젝트로 변환하는 방법은 다음과 같습니다.
SELECT ST_SETSRID(TO_GEOMETRY(ST_ASGEOJSON(geography_expression)), 4326);
Specifying How Invalid Geospatial Shapes Are Handled¶
By default, when you use a geospatial conversion function to convert data in a supported input format to a GEOGRAPHY or GEOMETRY object, the function does the following:
The function attempts to validate the shape in the input data.
The function determines if the shape is valid according to the Open Geospatial Consortium’s Simple Feature Access / Common Architecture standard.
If the shape is invalid, the function attempts to repair the data (e.g. fixing polygons by closing the rings).
If the shape is still invalid after the repairs, the function reports an error and does not create the GEOGRAPHY or GEOMETRY object. (For the TRY_* functions, the functions return NULL, rather than reporting an error.)
With this preview feature, you have more control over the validation and repair process. You can:
Allow these conversion functions to create GEOGRAPHY and GEOMETRY objects for invalid shapes.
Determine if the shape for a GEOGRAPHY or GEOMETRY object is invalid.
Understanding the Effects of Invalid Shapes on Geospatial Functions¶
Different geospatial functions have different effects when you pass in a GEOGRAPHY or GEOMETRY object for an invalid shape.
Effects on GEOMETRY Objects¶
GEOMETRY 오브젝트:
The following functions return results based on the original invalid shape:
The following functions validate the shape and fail with an error if the shape is invalid:
Effects on GEOGRAPHY Objects¶
GEOGRAPHY 오브젝트:
The following functions return results based on the original invalid shape:
The following functions validate the shape and fail with an error if the shape is invalid:
The following functions return NULL if it is not possible to compute the value:
Working with Invalid Shapes¶
The next sections explain how to allow functions to create invalid shapes and how to determine if a GEOGRAPHY or GEOMETRY object represents an invalid or repaired shape.
Allowing Conversion Functions to Create Invalid Shapes¶
To allow the following conversion functions to create invalid geospatial objects, pass TRUE
for the second argument
(allowInvalid
):
TO_GEOGRAPHY( <input> [, <allowInvalid> ] )
ST_GEOGFROMWKB( <input> [, <allowInvalid> ] )
ST_GEOGFROMWKT( <input> [, <allowInvalid> ] )
TO_GEOMETRY( <input> [, <allowInvalid> ] )
ST_GEOMFROMWKB( <input> [, <allowInvalid> ] )
ST_GEOMFROMWKT( <input> [, <allowInvalid> ] )
By default, the allowInvalid
argument is FALSE
.
When you pass TRUE
for the allowInvalid
argument, the conversion function returns a GEOGRAPHY or GEOMETRY
object, even when the input shape is invalid and cannot be repaired successfully.
For example, the following input shape is a LineString that consists of the same two Points. Passing TRUE
for the
allowInvalid
argument returns a GEOMETRY object that represents an invalid shape:
SELECT TO_GEOMETRY('LINESTRING(100 102,100 102)', TRUE);
Determining if a Shape Is Invalid¶
To determine if a GEOGRAPHY or GEOMETRY object is invalid, call the ST_ISVALID function.
The following example checks if an object is valid:
SELECT TO_GEOMETRY('LINESTRING(100 102,100 102)', TRUE) AS g, ST_ISVALID(g);