GIS

Pandas와 Plotly를 이용한 공간정보 지도화

유병혁 2019. 10. 17. 07:34

안녕하세요? 이번 글은 Pandas와 Plotly를 이용한 공간정보 지도화 방법를 정리해 보겠습니다.


Pandas(판다스)는 파이썬에서 데이터 구조와 분석 도구를 제공하는 오픈소스 라이브러리입니다.

Python Data Analysis Library | https://pandas.pydata.org/


실습용 자료는 국가공간정보포털을 통해 제공 중인 '공간기반 동물병원 정보'를 사용하였습니다.

공간기반 동물병원 정보 | http://data.nsdi.go.kr/dataset/14739


해당 데이터를 엑셀 형식(*.xlsx)으로 변환하여 사용하였습니다.

AML_HOSP.xlsx


그럼 이 데이터를 한 번 열어볼까요?! 일단 Pandas 라이브러리를 추가하고,


AML_HOSP.xlsx의 AML_HOSP 시트를 열어 5번째 행까지 내용을 확인해 봅니다.

여기서 index_col은 색인 행을 지정하며, parse_dates는 색인의 날짜 분석(파싱) 여부를 정의합니다.


다음으로는 Plotly를 통해 이 공간정보를 지도화해 보겠습니다.


Plotly(플로틀리)는 파이썬 오픈소스 그래프 라이브러리인데요,

Plotly Python Open Source Graphing Library | https://plot.ly/python/


Plotly를 통해 파이썬에서 Mapbox(맵박스) 지도 레이어를 구현하실 수 있습니다.

Mapbox Map Layers in Python | https://plot.ly/python/mapbox-layers/


여기서 쓰는 Mapbox는 맞춤형 디자인 지도를 위한 오픈소스 매핑 플랫폼입니다.

Mapbox | https://www.mapbox.com/


맵박스 지도 레이어를 그려 봤습니다. 맵박스 스타일은 "open-street-map"입니다.


피처에 마우스를 올리면(hover), hover_name과 hover_data에 설정한 컬럼이 아래와 같이 표출됩니다.


이번에는 맵박스 스타일을 "carto-positron"으로 변경해 봤습니다. 간단하죠?!


이번에는 Vworld 레이어를 추가해 보겠습니다.※ 오픈API 인증키는 Vworld 개발자센터(http://dev.vworld.kr/dev/v4api.do)에서 발급받으셔야 합니다.



이번에는 공간기반 동물병원 정보, VworldSatellite, VworldHybrid 레이어를 동시에 표출해 봤습니다.


Plotly에서는 Mapbox가 제공하는 밀도 열지도(Heatmap)도 표현하실 수 있습니다.

Mapbox Density Heatmap in Python | https://plot.ly/python/mapbox-density-heatmaps/


결과를 확인해 볼까요?!


확대해본 결과는 다음과 같습니다.


Notebook(.ipynb) 파일 다운로드

AML_HOSP.xlsx
0.6MB