본문 바로가기
FrontEnd/React.js

proj4js로 WGS84 <--> GRS80 좌표변환하기

by 푸고배 2020. 10. 14.

도로명 주소 공공 데이터를 사용할 일이 있어 다운을 받았다. 

하지만 좌표체계가 WGS84(EPSG-5179)로 표시되어 google 지도와 같은 지도 서비스에서 해당 위치를 검색해볼 수가 없었다.

따라서 WGS84 좌표를 GRS80(EPSG-4326, UTM-K, 경위도 좌표)로 변환하는 과정이 필요했다.

변환방법은 도로명주소 개발자센터 Tech & Tips에 잘 설명되어 있다.

(https://www.juso.go.kr/addrlink/devCenterEventBoardDetail.do?regSn=123&noticeType=T&currentPage=1&keyword=%EC%A2%8C%ED%91%9C&searchType=subject)

 

WGS84와 GRS80의 차이 

ex) 

WGS84(EPSG-5179) 좌표 : [ 1018158.6666838044, 1980226.7772867724 ]

GRS80 좌표(EPSG-4326, UTM-K, 경위도 좌표) : [ 127.7063258909378, 37.8216025075155 ]

 

자세한 정의는 아래 블로그를 참고하자.

https://m.blog.naver.com/whentlr/220205257624

 

npm 환경설정

 

1. npm을 통해 proj4js 설치

 

$ npm install proj4

 

2. WGS84 <--> GRS80 코드

var proj4 = require("proj4")

const grs80 = "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs";
const wgs84 = "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"

var grs80P = proj4(wgs84, grs80, [127.7063258909378, 37.8216025075155]);
var wgs84P = proj4(grs80, wgs84, [1018158.6666838044, 1980226.7772867724]);

console.log(wgs84P)
console.log(grs80P)

 

아래 공식 github를 참고하면 복잡한 인자 정의 없이도 기본으로 제공하는 좌표 체계의 이름을 통해서 바로 변환이 가능하다. WGS84, GRS80 이외의 인자가 궁금하면 잘 정리된 블로그를 참고하자.

 

proj4s 공식 github : https://github.com/proj4js/proj4js

 

 

하지만 도로명주소 개발자 센터의 전자지도를 다운받으면 아래와 같은 dbf, shp, shx 타입의 파일이 있다.

 

 

python 코딩을 통해서 필요한 데이터를 json 타입으로 변환해도 되지만, QGIS라는 프로그램을 이용하면 좀 더 간단하게 json 파일 변환이 가능하다.

 

QGIS geojson 변환방법은 새로운 글로 정리해야겠다.

 

 

 

 

 

 

반응형

댓글