안녕하세요.
이번에는 PostgreSQL 내 Geometry 컬럼의 유효성을 조회하는 스크립트에 대해 작성하려고 합니다.
흔히 Geometry 에는
점 (Point), 선(Line), 면형(Polygon)
크게 3가지로 나누어지게 됩니다.
공간 데이터를 생성 또는 다루는 과정에 있어서 위치정보의 오류가 생길 수 있습니다.
예를 들면 면형의 데이터가 서로 겹치거나(Self-ring) *self-touching rings 또는 ESRI flag 라고도 합니다.
그리고 지오메트리 타입이 인식이 제대로 되지 않아 Point 또는 Line 으로 반환하는 상황이 발생되기도 합니다.
아래 설명드릴 방법에서는 공간데이터의 검증을 확인 후
끝 지점을 맞춰주는 스크립트도 포함되어 있습니다.
Geometry Valid Check
SELECT COUNT(1) FROM TL_KOREA_NONI_AREA WHERE NOT ST_ISVALID(GEOM);
한 줄이면 테이블 검증이 끝나네요.
여기서 사용된 함수는 ST_ISVALID 입니다.
Extension (PostGIS)에서 제공하는 함수이며 Geometry 유효성을 검증합니다.
데이터를 웹이나 모바일에 표출하기 이전에 큰 오류를 방지하기 위한 최소한 개발자가 취해야 하는 행동이며,
실제 데이터는 데이터를 다루는 전문가가 하는 것이 맞습니다.
아래 방법은 최후의 방법으로 사용되는 스크립트이며,
실제 Geometry가 깨져있는 경우,
해당 담당자에게 문의하여 데이터 수정 요청을 하는 것이 가장 좋습니다.
Geometry Makevalid
UPDATE TL_KOREA_NONI_AREA
SET GEOM = ST_MAKEVALID(geom)
WHERE NOT ST_ISVALID(geom);
TL_KOREAN_NONI_AREA 테이블 내
geom(geometry) 공간 정보를 담고 있는 데이터 중
st_isvalid(geom)이 거짓인 것들만 st_makevalid 통해 변경하는 함수이네요.
다음 글에서는 다양한 함수를 통해 공간 데이터를 다루는 방법을 작성해 보겠습니다.
'GIS' 카테고리의 다른 글
PostgreSQL Geometry 추출 및 적재 (0) | 2023.07.05 |
---|---|
한국 좌표 목록 개념 (0) | 2023.07.03 |