일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- geopandas에러
- 코로나
- 인코등
- QGIS라벨링
- r
- Python
- kepler.gl
- 에러
- kepler
- 마커클러스터
- map
- 공공데이터포털
- 파이썬
- riotapi
- 오픈API
- 라이엇
- pipwin
- OSMnx
- 라이엇api
- geopandas설치
- 시각화
- Folium
- 막대그래프
- geopnadas
- matplotlib
- 지도
- covid19
- 오류
- API
- covid
- Today
- Total
Nerdy
[Folium] 부산광역시 지하철 역 위치를 지도에 표시하기(Marker, Cluster) 본문
지도 시각화 기능을 가진 Folium 파이썬 모듈을 사용해 지도 내 부산광역시 지하철 역 위치(Point)를 표시해본다.
- Moduel Setting
import pandas as pd
import folium
from folium import Marker
from folium.plugins import MarkerCluster
1. 지하철 위도/경도 정보가 담긴 csv 파일 불러오기
df = pd.read_csv('subway.csv')
df.head()
Unnamed: 0 역사명 ... 역경도 위경도
0 0 다대포해수욕장 ... 128.964100 [35.04867, 128.9641]
1 1 다대포항역 ... 128.971300 [35.05782, 128.9713]
2 2 낫개역 ... 128.979873 [35.065265, 128.979873]
3 3 신장림역 ... 128.977041 [35.074433, 128.977041]
4 4 장림역 ... 128.977500 [35.08109, 128.9775]
[5 rows x 6 columns]
2. 첫 장소가 표출될 화면 지정(Basemap)
location : 처음 표출될 지역을 위도/경도로 지정
tiles : 맵 종류를 선택할 수 있으며 대표적으로 많이 사용하는 타일은 OpenStreetMap이다.
zoom_start : 처음 표출될 화면을 zoom 지정
map = folium.Map(location=[35.1795543, 129.0756416], tiles="OpenStreetMap", zoom_start=11)
map
주피터 노트북, 코랩이 아닌 VS code, 파이참 등의 IDE를 사용하는 경우 지도가 바로 안 나오니 "map.save('파일명.html)" 코드를 작성하여 html 내에서 확인을 하면 된다.
3. Marker 표시하기
좌표별로 Marker 표시가 가능하며 특정 지역의 Marker를 클릭 시 팝업 내용이 표출이 가능한 기능이다.
iterrows : 데이터프레임 자료를 한 라인씩 정보를 읽는다.
location : Marker를 표시할 위도/경도 정보
popup : Marker 클릭 시 표출할 내용
icon : Marker 색상 및 스타일 변경
for _, i in df.iterrows():
Marker(location = [i['역위도'], i['역경도']],
popup = "노선명: " + str(i['노선명']) + "<br>" + "역사명: " + str(i['역사명']) + "<br>",
icon = folium.Icon(color = 'blue')
).add_to(map)
# 팝업 내용이 세로 형식으로 출력이 되면 HTML 태그 중 줄바꿈을 뜻하는 <br> tag를 사용하여 공백이 있게끔 수정해주면 된다.
for _, i in df.iterrows():
Marker(location = [i['역위도'], i['역경도']],
popup = "<pre>" + "노선명: " + str(i['노선명']) + "<br>" + "역사명: " + str(i['역사명']) + "<br>" + "</pre>",
icon = folium.Icon(color = 'blue')
).add_to(map)
4. Marker Cluster 사용하여 표시하기
군집을 뜻하는 Cluster를 Marker에 사용하여 지저분만 마커들을 몇개의 군집으로 만들어 더 좋은 시각화를 만들어 본다.
MarkerCluster 함수를 객체에 담아 add_child 함수를 사용해 지도에 표시를 해주면 된다.
cluster = MarkerCluster()
for _, i in df.iterrows():
cluster.add_child(
Marker(location = [i['역위도'], i['역경도']],
popup = "<pre>" + "노선명: " + str(i['노선명']) + "<br>" + "역사명: " + str(i['역사명']) + "<br>" + "</pre>",)
).add_to(map)