목표
제주도 오름 데이터를 가지고 지도에 표시해 보기
문제
- 제주도 오름 데이터는 어디서 구할 수 있는가
- 브라우저에 지도는 어떻게 구현하는가
- 지도 위에 데이터를 어떻게 표시할 수 있는가
해결 과정
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 파일을 로컬 서버로 띄어 보았고, 지도에 오름 표시되었다.
우선 직접 데이터를 뿌려보면서, 공공 데이터를 활용해서 다양한 사이드 프로젝트를 만들 수 있겠구나 생각이 들었다. 그리고 지금 만든 부분에서 더 많은 기능을 붙일 수 있을 거 같아서 무얼 할지 기대가 된다.
파이썬의 라이브러리가 아주 쉽고 간단하게 구현이 가능하단 점도 이번 기회에 알게 되었다. 기본적으로 어떻게 작동이 되는가는 좀 더 구체적으로 공부를 해보아야겠지만 이걸 만들면서 파이썬에 대한 관심과 흥미를 가지게 되었다.
'Develop' 카테고리의 다른 글
[React] CRA vs Vite? 왜죠? (0) | 2024.03.15 |
---|---|
[React] React 프로젝트를 어떻게 생성해야 할까? (0) | 2024.03.14 |
[공공데이터] API 활용 방법 (0) | 2024.03.14 |
[Visual Studio Code] CSV 파일 한글 깨짐 해결 (0) | 2024.03.11 |
[공공데이터] 제주도 관련 데이터 활용하기 (0) | 2024.03.11 |