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