본문 바로가기
Develop

[Python] 제주도 오름 데이터 지도에 표시하기

by stuckyi 2024. 3. 11.

 

목표

제주도 오름 데이터를 가지고 지도에 표시해 보기


문제

  1. 제주도 오름 데이터는 어디서 구할 수 있는가
  2. 브라우저에 지도는 어떻게 구현하는가
  3. 지도 위에 데이터를 어떻게 표시할 수 있는가

해결 과정

1.  제주도 오름 데이터

 

제주도 오름 데이터는, 이전에 작성한 글에서 소개한 공공 데이터를 활용해 볼 수 있다. 2024.03.11 - [Daily/Coding in JEJU] - 제주도 공공 데이터 활용하기

 

제주도 공공 데이터 활용하기

제주도로 여행하기 전에 제주도 정보를 얻을 수 있는 사이트가 있는가 찾아보다가 제주데이터허브를 알게 되었다. https://www.jejudatahub.net/about/data-use 제주데이터허브 www.jejudatahub.net 이 사이트에

ziyun.tistory.com

 

나는 '제주특별자치도_제주오름요약설명'의 데이터를 csv 파일로 받았고, 이 정보를 이용해 보았다. 오픈 API 형태로도 사용할 수 있는데 이 방식도 추후 적용해 볼 예정이다.

데이터는 아래와 같이 오름명과 경도, 위도값이 있어서 지도에 마크하기 적합했다. 

오름영문명 오름명 위치 비고(m) 표고(m) 경도 위도 설명

 

2. 브라우저에 지도는 어떻게 구현하는가

구글링 하다 보니, 가장 많이 사용하는 라이브러리 folium을 알게 되었다. folium은 지도 위에 데이터를 다양하게 표현해 주는 파이썬 지도 시각화 라이브러리라 한다. 이 라이브러리를 이용해 지도를 생성하고 마커를 표시하고 html 파일로 내보내기가 가능하다.

https://python-visualization.github.io/folium/latest/getting_started.html 

 

Getting started — Folium 0.1.dev1+g12b8807 documentation

Make this Notebook Trusted to load map: File -> Trust Notebook

python-visualization.github.io

 

3. 지도 위에 데이터를 어떻게 표시할 수 있는가

 

1. 파이썬 라이브러리 설치

  • 데이터 처리 및 분석을 위해 pandas 사용
pip install pandas
  • 지도 시각화를 위해 folium 사용
pip install folium

 

 

2. 다운로드한 csv 파일을 읽어 들이는 작업 수행

import pandas as pd

OLEUM_DATA = pd.read_csv('oleum_detail.csv') # csv파일 경로에 맞게 추가

 

 

3. 기본 좌표 설정

  • location = [위도, 경도]
  • zoom_start = 확대 정도 (최대 18)
center = [33.213795, 126.320850]

m = folium.Map(
    location= center,
    zoom_start=12
)

 

4. 마커 표시

아직 folium의 기능을 다 익혀보지 못해서 기본만 따라 해 보았는데, csv에 총 90개의 오름의 정보가 있어서 for문을 통해 마커를 표시하게 하였다.

  • popup = 표기할 팝업 문구
  • icon = 아이콘 모양, 색상 추가
  • .add_to(m) : 처음 생성해 둔 m(지도)에 마커를 추가함  
for i in range(0,90):
    folium.Marker(
        [OLEUM_DATA['위도'][i], OLEUM_DATA['경도'][i]],
        popup = OLEUM_DATA['오름명'][i],
        icon=folium.Icon(color='green')).add_to(m)

 

5. html 파일로 내보내기

m.save('map.html')

 


결과

map.html 파일을 로컬 서버로 띄어 보았고, 지도에 오름 표시되었다.

 

우선 직접 데이터를 뿌려보면서, 공공 데이터를 활용해서 다양한 사이드 프로젝트를 만들 수 있겠구나 생각이 들었다. 그리고 지금 만든 부분에서 더 많은 기능을 붙일 수 있을 거 같아서 무얼 할지 기대가 된다.

파이썬의 라이브러리가 아주 쉽고 간단하게 구현이 가능하단 점도 이번 기회에 알게 되었다. 기본적으로 어떻게 작동이 되는가는 좀 더 구체적으로 공부를 해보아야겠지만 이걸 만들면서 파이썬에 대한 관심과 흥미를 가지게 되었다.