[POSTGRESSQL] [XX000] ERROR: ST_Intersects: Operation on mixed SRID geometries (Point, 0) != (Polygon, 4326)

Castle_Junny·2024년 1월 26일

행안부에서 제공하는 담배판매 업소 위치 데이터가 있어서 다운 받아서 DB에 적재를 해두었다. (행안부 데이터 링크)

해당 데이터를 시도 / 시군구 별로 담배가게 요약을 하는 화면을 개발하기 위해 공간 조인(spatial join)을 하는 쿼리를 작성했고 실행했을 때 아래와 같은 Error를 마주하게 되었다.


 [XX000] ERROR: ST_Intersects: Operation on mixed SRID geometries (Point, 0) != (Polygon, 4326)
 

이런 Error 가 발생함

# 원인.

공간조인 시 좌표계가 서로 맞지 않아서 발생 하는 문제.

# 해결방법

요약하자면 좌표계를 맞춰 주면됨 !

우선 어떤 좌표계가 섞여있나 확인 하기 위해서 검색을 해봄.

여기서 LOC_CD는 지역 코드이고 '01'은 서울이다.(문제되는 지역)

SELECT DISTINCT ST_SRID(GEOM) FROM [테이블 명] WHERE LOC_CD = '01';

ST_SRID는 좌표계를 반환하고 GEOM의 타입은 geometry여야 한다.

암튼 이렇게 조회 했을 때 아래 사진에는 빠져있지만 '1' 이 추가 되어 있었다.
이것 하나 때문에 서울 지역 공간조인 시 문제가 생김.

# 문제 해결

아래 코드 처럼 ST_Transform(GEOM, 4326) 을 통해서 좌표계를 변경하려고 했더니 무슨 원인인지 변경이 안됨.

UPDATE  [테이블 명] SET GEOM = ST_TRANSFORM(GEOM, 4326)
WHERE LAT IS NOT NULL
  AND LNG IS NOT NULL
  AND ST_SRID(GEOM) = 0

그래서 문제되는 GEOM값을 Text 타입으로 변경한 뒤 다시 Geometry 타입으로 변경해줬더니 문제가 해결 됨.


UPDATE  [테이블 명] SET GEOM = ST_GeomFromText(Geom::text, 4326)
WHERE LAT IS NOT NULL
  AND LNG IS NOT NULL
  AND ST_SRID(GEOM) = 0

이렇게 해서 만들어본 카카오 API 테스트 페이지

0개의 댓글