PostGIS

[PostGIS] geosintersects topologyexception 발생 시 대처 방법

박진만 2022. 5. 27. 10:23
반응형

공간 쿼리 수행 중 st_intersects 함수에서 geosintersects topologyexception 발생.

원인 : Geometry 객체 중 MULTIPOLYGON 객체 데이터가 유효하지 않은 상태라서 st_intersects 함수 실행 불가. MULTIPOLYGON 객체에 구멍이 있는 경우 OGC 표준에 맞게 그려지지 않아서 자주 발생.

객체가 유효한지 확인하는 방법

SELECT st_isvalid(geom)
FROM TABLE;

유효하면 true, 유효하지 않으면 false 반환.

유효하지 않는 객체를 유효하게 수정 편집하는게 가장 좋은 방법..

내 경우 데이터를 편집할 수 있는 권한이 없었음. 그럼에도 불구하고 st_intersects 함수 수행하야 할 때..

SELECT st_intersects(st_makeValid(a.geom), st_makeValid(b.geom))
FROM TABLE_A a JOIN TABLE_B b
ON a.key = b.key;

st_makeValid (올바르지 못한 Geometry를 수정) 함수 사용.

대용량 데이터일 경우 st_makevalid(geom) 을 포함하는 인덱스를 만드는 것을 추천한다고 함.

CREATE INDEX idx_makevalid_geom ON public.table USING gist (ST_MakeValid(geom));
반응형