[python] follium 지도 시각화

데이터 분석/[Python] GIS

[python] follium 지도 시각화

INCHELIN 2024. 1. 25. 10:40
728x90
import folium
!pip3 install git+https://github.com/python-visualization/branca.git@master # 한글깨짐방지

 

  • Map

base map 표현

- locatioin : X, Y좌표 (google map에서 가져오면 쉬움)

- zoom_start : 지도를 몇배 확대해서 볼건지

m = folium.Map(
    location = [37.54734, 126.9906]
    ,zoom_start=11
)

 

  • marker

- location : 어디에 마커를 찍을지 좌표

- popup : 마커를 눌렀을 때 어떤 내용을 넣을지

- tooltip : 마커에 마우스 올려놨을 때 어떤 내용을 넣을지

- icon : 마커 스타일

커스터마이징 가능 --> from folium.features import CustomIcon (예:이미지파일 불러와서 마커 표현)

folium.Marker(
    location = [37.66121, 126.9922]
    ,popup = '<strong>북한산<strong>'
    ,tooltip = tooltip
    ,icon = folium.Icon(color = 'blue', icon = 'star')
).add_to(m)


 

다양한 Plugin 기능들

  • cluster

- 지도를 줌아웃 했을 때, 마커들을 클러스터링 하여 표현

# cluster
# mt라는 데이터프레임이 존재함

from folium.plugins import MarkerCluster

m = folium.Map(
    location = [37.54734, 126.9906]
    ,zoom_start=8
)

mc = MarkerCluster()
for _, row in mt.iterrows():
    mc.add_child(
        folium.Marker(location = [row['X좌표'], row['Y좌표']],
                      popup=row['명산_이름']
                      )
    )
m.add_child(mc)

m

  • 측정기능

줄자 기능을 통해 직선거리를 측정할 수 있음

# 측정기능 
from folium.plugins import MeasureControl

m = folium.Map(
    [33.38, 126.55],
    zoom_start = 10
)

m.add_child(MeasureControl())

m

 

  • mouse position

지도에 마우스를 올리면 x,y좌표를 알려줌

from folium.plugins import MousePosition

m = folium.Map(
    [33.38, 126.55],
    zoom_start = 10
)

m.add_child(MousePosition())

m

 

  • 테이블삽입

마커 팝업에 테이블을 삽입

m = folium.Map()

df = pd.DataFrame(data = [[2019, 500000],
                          [2020, 600000],
                          [2021, 700000]],
                  columns = ['연도', '인구'])

html = df.to_html(classes='table')

folium.Marker(
    [33.38, 126.55], # mouse position 기능으로 한라산 pick
    popup=html
).add_to(m)

m

 

 

 

 

[참고]

Getting started — Folium 0.1.dev1+gc18677f documentation (python-visualization.github.io)

728x90