안녕하세요. Ruk 입니다.
지도 혹은 주소 관련 API를 연동하다보면 좌표체계가 있는데요.
경도, 위도에 대한 값이 API마다 조금씩 다르게 보일 수 있습니다.
이는 좌표체계가 달라서 그렇게 뜨는 현상이더라고요.
해당 API가 어떤 좌표체계를 사용하는지 찾아보면 보다 더 명확하게 알 수 있는데요.
이번 글에서는 이런 다른 좌표체계를 변환하는 방법을 알아보도록 하겠습니다.
저같은 경우 행정안전부의 API를 통하여 얻은 좌표를 카카오API에서 사용 할 수 있는 좌표체계 값으로 변환해 보았습니다.
사용한 Lib는 proj4 입니다.
오픈소스로 javaScript 에서 사용 가능한 js파일 입니다.
제가 2020년에 찾은 3개의 좌표체계 입니다. 해당 좌표는 카카오 문의글과 행정안전부의 문의글 답변에서 쉽게 찾을 수 있었습니다.
Proj4js.defs["EPSG:5181"] = "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +units=m +no_defs";//카카오API 좌표계
Proj4js.defs["EPSG:5179"] = "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs";//행정안전부 오픈API 좌표계
Proj4js..defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";//WGS84
이렇게 각 좌표체계를 찾기만 하면 쉽게 변환이 가능합니다. (위 3개 좌표체계말고도 많은 체계가 존재합니다 ㅠ_ㅜ)
한번 변환을 진행해보도록 하겠습니다.
var proj5181 = new Proj4js.Proj("EPSG:5181");
var proj5179 = new Proj4js.Proj("EPSG:5179");
JavaScript에서 2개의 좌표체계에 대한 변수를 생성합니다.
var p = new Proj4js.Point(37.528, 126.9207);
변경하고자 하는 경위도 좌표를 넣고 p 를 생성합니다.
Proj4js.transform(proj5179, proj4326, p);
그후 Proj4js를 사용하여 미리 만들어둔 좌표체계를 넣어주면 해당 좌표체계에 맞는 값으로 변환됩니다.
행정안전부의 좌표체계와 카카오API의 좌표체계는 다르지만 위 과정을 거치면
특정 지점의 좌표값을 동일하게 찾아낼 수 있습니다.
보통 1개의 API를 통하여 연동하지만 종종 변환이 필요한 경우가 생기죠. 이럴 때 편하게 변경하여 사용하시면 될 것 같습니다.
저도 좌표체계에 대한 지식은 없지만 선배 개발자분들이 만들어주신 자료를 토대로 쉽게 변환이 가능해져서 업무를 잘 처리하였내요.
사용중 문의사항이 생기시면 댓글로 문의주세요. 아는선에서 답변 드리겠습니다.
'컴퓨터' 카테고리의 다른 글
트랜잭션 격리 수준이란? (transaction isolation level) (0) | 2023.12.30 |
---|---|
mysql 언두 로그란 (update 시 일어나는 일) (0) | 2023.12.17 |
intellij project view 경로 숨기고 branch만 표시하는 법 (0) | 2023.03.17 |