시각화/D3.js

▶d3.js 튜토리얼 :: shp파일을 GeoJSON으로 변환하기

비주얼라이즈 2015. 4. 6. 11:43




▶d3.js 튜토리얼 :: shp파일을 GeoJSON으로 변환하기


이번 글에서는 d3에서 지오데이터를 활용하기위하여 geojson파일로 변환하는 과정에 대해서 소개하고자 한다. 개인적으로 이 과정이 매우 중요한 작업이라고 생각하고 있다. 기본적으로 shp파일은 GIS툴에서 다루는 데이터 형식으로, 인간의 눈도그렇지만 웹브라우저에서도 이를 처리할 방법이 없다. 그럼에도 불구하고,  대부분의 지오데이터들은 shp파일형태로 만들어져 제공되고있기때문에 d3에서 맵핑을 하고자하는 사람이라면 반드시 이해하고 넘어가야할 부분인 것 같다.



 shp파일을 GeoJSON형태로 변환하기위해서는  다음의 라이브러리가 필요하다.


- GDAL(Geospatial Data Abstraction Library, http://gdal.org) 라이브러리

- GEOS(Geometry Engine Open Source, http://trac.osgeo.org/geos)




OS별 준비과정


워낙 자주있는 일이라 특별한 것도 아니지만, GeoJSON변환과정에도 사용자의 OS별 방법이 다르다. 자세한내용은 아래를 참고하자.



mac사용자의 경우

1. Xcode, Homebrew 설치(설치되어있다면 다음단계) 

*Homebrew는 애플에서 기본적으로 제공하지 않는 유용한 패키지들을 관리할 수 있는 도구이다.

2. 터미널 실행 후 'brew install gdal'입력


mac사용자 중 Xcode와 Homebrew가 설치되어있지 않은 사람의 경우 다음사이트에서 GUI를 활용할 수 있다.

http://www.kyngchaos.comsoftware/frameworks

*위 사이트에서 GDAL Complete 최신 버전을 찾는다.






윈도우, 리눅스, 유닉스 사용자의 경우

바로 소스를 받아서 build, make같은 커맨드 명령어로 설치할 수 있다. 스캇머레이(2014)는 이 경우 약간의 문제가 발생할 수 있다고 말하면서,  "더이상 진행할 수 없다면, 설치하려는 패키지와 관련된 책이나 웹페이지를 찾아서 설치방법을 참고하자"라고 언급하고 있다. 약간(?)의 어려움이 예상되기는 하지만 인내하며 설치해보자.



homebrew의 한국어 홈페이지 주소 (http:/brew.sh/index.ko_html)







shape to GeoJSON 변환과정


위의 여러가지 방법중에서 mac사용자인 나는 www.kyungchaos.com사이트에서 여러 패키지를 다운로드 받은 뒤, 설치하는 순서로 진행했다.



www.kyungchaos.com의 모습. 


스캇머레이는 저 중에서 GDAL Complete부분을 다운로드받아 설치하라고 했는데, 뭐가 잘못된 것인지 설치할때마다 다른 하나의 패키지를 먼저 설치하라는 에러메시지가 나와서, 하나하나 설치하다보니 저 페이지에서 제공하는 5~6개의 패키지를 모두 설치한 다음에야 GDAL Complete 패키지를 설치할 수 있었다. 




위 사진은 패키지 설치 완료후 터미널 창을 열어 다음 명령어를 입력한 모습이다.


ogr2ogr


패키지 설치가 안된상황에서는 위 명령어로 아무런 동작이 일어나지 않았으나, 패키지 설치이후 동작하는 것으로 보였다. 이제 다음 단계는 shp파일이 저장된 폴더로 디렉토리를 변경 하고 다음 명령어를 실행하는 것이다.


ogr2ogr -f "GeoJSON" output.json 파일이름.shp


어느정도 감이 오겠지만, ogr2ogr은 이 명령어로 해당 shp파일을 가져온뒤 GeoJSON으로 변환한다.





결과물의 모습이다. mapshaper.org 에 shp파일을 넣어 변환하는 방법도 시도했으나, 그 방법으로는 이렇게 id값을 입력되지 않는다는 단점이있다. 이렇게 ogr2ogr을 사용하는 방법으로 매핑에 적합한형태의 GeoJSON파일을 얻을 수 있다.







참고서적


스캇머레이 지음, 변치훈 옮김 "D3.js - 쉽고빠른 인터랙티브 데이터시각화", 인사이트, 2014, p.283