티스토리 뷰

공간정보 데이터를 다루다보면 가끔 한국 좌표가 다른 이상한 곳에 있거나 지도에 표시가 안 되는 좌표도 있다.

그건 바로 좌표계가 맞지 않아서 그러한 현상이발생하는 것이다. (GIS 일을 해본 사람은 좌표계라는 것이 익숙할 것이다.)

 

좌표계라는 것은 간단하게 이야기하면 평면이 아닌 입체 구면인 지구를 어떤 식으로 표현하는냐 그 방법이다.

보통 Google Maps API나 등 지도 라이브러리들에서는 WGS84(4326)을 많이 쓰지만 가끔 공공데이터를 다운 받아서 사용하다보면 Korean 1985(2097)을 사용하기도 한다. 이럴 때 지도 라이브러리에서 사용하기 위해서는 좌표계를 변환해야 한다.

 

 

PostGIS의 ST_Transform 함수

postgreSql에서는 PostGIS라는 함수를 제공하고 사용할 수 있다. 이 PostGIS에서는 좌표계를 변환하는 함수 또한 존재한다.

그게 바로 ST_Transform이다.

 

http://postgis.net/docs/manual-2.0/ST_Transform.html

 

ST_Transform

Name ST_Transform — Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter. Synopsis geometry ST_Transform(geometry g1, integer srid); Description Returns a new geometry with its coordinates transformed to

postgis.net

 

 

사용 방법은 아래와 같이 매우 간단하다.

SELECT ST_Transform(${SRID가 포함된 geometry 데이터}, ${변환할 좌표계})
FROM data

 

여기서 변환할 좌표계는 4326으로 변경하려면 4326으로 해당 좌표계의 고유한 숫자 ID 값으로 넣어야한다.

 

 

SRID가 포함된 geometry 데이터

ST_Transform은 좌표계 정보(SRID)가 포함되어 있는 geometry 데이터를 첫 번째 인수로 넣어야한다.

좌표계를 변환해야하니 당연하겠지만, 일반 geometry 컬럼 데이터는 좌표계에 대한 데이터가 없다.

하지만 geometry 컬럼 데이터를 사용하다보면 자연스레 그곳에 좌표계 정보가 있다고 생각할 수 있는데 이 또한 PostGIS의 ST_SetSRID 함수로 좌표계 정보를 넣어줘야 한다.

 

 

ST_SetSRID

ST_SetSRID 함수 또한 PostGIS에서 제공하는 함수로 geometry 데이터에 좌표계에 대한 정보를 넣는 함수이다.

사용은 아래와 같이 할 수 있다.

SELECT ST_SetSRID(${geometry data}, ${좌표계(번호형식)}
FROM data

 

위와 같이 geometry 데이터를 첫 번째 인수로 넣고 두 번째 인수로 좌표계 번호를 넣는다.

좌표계에서 WGS84처럼 이름 형태가 아닌 해당 좌표계의 고유한 ID 값인 2097, 4326 같은 번호 형식으로 넣어야한다.

예시를 들면 아해와 같다.

 

SELECT ST_SetSRID(the_geom, 2097}
FROM data

 

 

ST_SetSRIDㄹ와 ST_Transform을 사용해서 좌표계를 변환했을 때 아래와 같이 결과가 나온다.

point가 2097 좌표계의 geometry 데이터이고 뒤의 new_point가 4326 좌표계로 변환한 데이터이다.

확실히 2097데이터는 좌표가 익숙하지 않은데 4326 데이터는 표준 좌표계인만큼 익숙한 좌표 모습을 보여주는 것을 확인할 수 있다.

 

 

 

 

✋ PostGIS 공식 문서

http://postgis.net/docs/manual-2.0/reference.html

 

Chapter 8. PostGIS Reference

The functions given below are the ones which a user of PostGIS is likely to need. There are other functions which are required support functions to the PostGIS objects which are not of use to a general user. 8.13. Exceptional Functions These functions are

postgis.net

 

 

 

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함