반응형
공간 쿼리 수행 중 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));
반응형
'PostGIS' 카테고리의 다른 글
[PostGIS] st_equals 함수 속도 느림 공간 index 안타는 문제 (1) | 2022.07.11 |
---|---|
[PostGIS] 좌표계 변환 함수(ST_Transform, ST_SetSRID) (0) | 2022.06.29 |
[PostGIS] ST_CollectionExtract (0) | 2022.05.31 |
[PostGIS] Polygon 단위로 겹치는 Geometry 조회 (0) | 2022.05.27 |
[postgresql] postGIS 공간 쿼리 함수 (0) | 2022.05.27 |