ST_ISVALID
ST_ISVALID
ST_ISVALID 함수는 지정된 GEOGRAPHY 또는 GEOMETRY 객체가 유효한 도형을 나타내는지 여부에 따라 TRUE를 반환해요.
출처: ST_ISVALID
본문
ST_ISVALID 함수는 지정된 GEOGRAPHY 또는 GEOMETRY 객체가 유효한 도형을 나타내면 TRUE를 반환해요. 잘못된 도형의 예로는 자기 교차(self-intersections)와 스파이크(spikes)가 있는 도형이 있어요.
구문 (Syntax)
ST_ISVALID( <geography_or_geometry_expression> )
인자 (Arguments)
- geography_or_geometry_expression — 인자는
GEOGRAPHY또는GEOMETRY타입의 표현식이어야 해요.
반환 (Returns)
BOOLEAN 값을 반환해요.
사용 메모 (Usage notes)
ST_ISVALID는 도형의 유효성만 확인해요. 데이터를 수정하지 않아요. 공간 형식(WKT, WKB, EWKT, EWKB 또는 GeoJSON 등)에서 객체를 구성할 때 변환 함수(예:TO_GEOGRAPHY,TO_GEOMETRY,ST_GEOGRAPHYFROMWKT,ST_GEOMETRYFROMWKT)는 입력을 파싱하고 기본적으로 도형을 검증하거나 수리하려고 시도해요. 변환 함수가 도형을 수리할 수 없으면 잘못된 도형을 허용하지 않는 한 오류를 반환해요.- 잘못될 수 있는 데이터(예: 나중에 수정하려고 계획한 데이터)를 수집하려면 변환 함수를 호출할 때 추가
allow_invalid인자에TRUE를 지정하여 잘못된 도형을 허용해요. 그런 다음ST_ISVALID함수를 사용해 테이블에서 잘못된 행을 표시할 수 있어요. - 일부 지리공간 함수는 잘못된 도형이 주어지면 오류를 반환하거나 사용할 수 없는 결과를 반환할 수 있어요.
ST_ISVALID함수를 사용해 유효성을 확인해요. 공간 분석을 수행하기 전에 잘못된 도형을 수정할 수 있어요. - 도형이 잘못된 경우 간단한 수정으로는 작은 양수 또는 음수 거리로 버퍼링(예: 작은 스파이크를 제거하거나 자기 교차를 해결)한 다음
ST_ISVALID함수로 유효성을 다시 확인하는 것이 있어요.
예제 (Examples)
다음 예제는 ST_ISVALID 함수를 사용해요.
폴리곤이 유효한 도형인지 확인해요:
SELECT ST_ISVALID(
TO_GEOGRAPHY('POLYGON((-93.086 37.557,-86.699 37.497,-93.198 35.123,-93.086 37.557))')
) AS is_valid;
+----------+
| IS_VALID |
|----------|
| True |
+----------+
SELECT ST_ISVALID(
TO_GEOGRAPHY( 'POLYGON((-92.799 37.601,-88.240 37.617,-92.733 36.198,-88.305 36.171,-92.799 37.601))', TRUE)
) AS is_valid;
+----------+
| IS_VALID |
|----------|
| False |
+----------+
ST_BUFFER 함수를 사용해 작은 버퍼를 추가하여 잘못된 도형을 수정해요:
WITH g AS (
SELECT TO_GEOMETRY('POLYGON((0 0, 2 2, 2 0, 0 2, 0 0))', TRUE) AS geom
)
SELECT ST_ISVALID(geom) AS is_valid_before_buffer,
ST_ISVALID(ST_BUFFER(geom, -0.001)) AS is_valid_after_buffer
FROM g;
+------------------------+-----------------------+
| IS_VALID_BEFORE_BUFFER | IS_VALID_AFTER_BUFFER |
|------------------------+-----------------------|
| False | True |
+------------------------+-----------------------+
더 알아보기 (Learn more)
- 지리공간 함수 (Geospatial functions)
- ST_BUFFER
- TO_GEOGRAPHY, TO_GEOMETRY