Recent Posts
Recent Comments
Adsense
Archives
Visitor
Today
Total
관리 메뉴

Annotation

PostGIS SRID 변경방법 (CRS 좌표계 코드 변경) 본문

PostgreSQL

PostGIS SRID 변경방법 (CRS 좌표계 코드 변경)

devs 2015. 1. 28. 20:38

PostGIS에서 객체의 좌표체계를 바꿔야 할 경우가 있습니다.

함수를 통해 SRID코드를 변경하게되면, 레코드 별로 적용할 수 있습니다.

SRID변경항법을 위해서는 몇가지 확인해야할 절차가 있습니다.


1. spatial_ref_sys 테이블에 변경해야 할 좌표체계 정보가 존재하는가?

2. 변경해야 할 테이블에 SRID 제약조건이 걸려있지는 않는가?


테이블에 제약조건이 있다면 쿼리를 날려도 변경이 되지 않습니다.

그렇기때문에 제약조건을 삭제한 후, 다시 추가하셔야 합니다.

그럼 이제 쿼리를 살펴보자면,


select updategeometrysrid('DB명','스키마명','테이블명', 'geometry컬럼명', SRID코드);

 

이렇게 날리시면 됩니다. 즉, updategeometrysrid 함수를 이용하시면 됩니다.

여기서 구지 DB명, 스키마명 까지는 입력하지 않으셔도 됩니다.

대부분 pgAdmin툴에서 수정할 스키마 까지 마우스로 선택해서 쿼리를 날리기 때문에,

이런 경우에는 적지 않으셔도 됩니다.

당연한 이야기지만, 스키마까지 이동하지않은 상태에서는 DB명, 스키마명까지 꼭 기입하셔야 합니다.

결국


SELECT updategeometrysrid('테이블명', '_geometry', 1);

 

이정도로 축약하여 쿼리를 날리시면 되겠네요. :)

쿼리를 날리셔서 이상없이 수행되었다면 다음 쿼리를 이용하여 확인해봅시다.


select st_srid(_geometry) from 테이블명 limit 1


 위에 쿼리를 날리면 해당 테이블의 SRID를 알 수 있습니다.

이상없이 변경되었으면 잘 하신거구요.

그 이후에는 제약 조건을 추가하시면 되곘습니다.


ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK (st_srid(컬럼명) = SRID코드)

 

구지 제약사항이 필요없다면 넣지 않으셔도 무방하구요 :)



Comments