Skip to content

지도 라이브러리 folium

HaeBin edited this page Nov 8, 2023 · 1 revision

folium이란?

  • python에서 제공하는 지도를 다루는 대표적인 라이브러리
  • 지도를 생성하고 Marker를 추가하여 시각화하거나 원으로 범위를 표기하고 html 파일로 내보내기 등을 수행한다.

folium 사용법

  • 설치 : pip install folium
  • 사용 : import folium

지도 생성하기

  • folium.Map(location=[위도, 경도], zoom_start=숫자)
    • location : 처음 지도 띄울 때의 좌표
    • zoom_start : 처음 지도 띄울 때의 확대 정도. 최대 18

지도의 경계선 그리기

  • folium.Choropleth()
    • 단계구분도(Choropleth Map)를 표시하는 기능
    • 즉, 행정구역 등과 같이 지도상의 어떤 경계로 구분된 지도 영역에 색을 칠하거나 음영 등을 넣어 정보를 나타내는 기능이다.

예시

...

folium.Choropleth(
    geo_data = "json파일" #경계선 좌표값이 담긴 파일
    data = data  #DataFrame (주로 excel파일이나 csv파일을 pandas를 사용해서 변환)
    columns = ['fields1', 'fields2']   #columns[0]은 key_on과 매핑되는 (String)값, columns[1]은 시각화를 위한 값
    key_on = 'fields명'  #geo_data의 필드명
    fill_color = '색상'
    fill_opacity = '색의 투명도'
    line_opacity = '경계선의 투명도'
    legend_name = '시각화 범주 이름'
)add_to(map)

...

마우스 이벤트

  • tooltip : 마우스 올리면 보여질 정보
  • popup : 클릭하면 보여질 정보

popup 예시

...

folium.GeoJson(
    geo_data = "json파일" #경계선 좌표값이 담긴 파일
    popup = folium.GeoJsonPopup(
        fields = ['필드명1', '필드명2', ..],  #geo_data의 필드명(경로 필요없이 필드이름만 작성)
        aliases = ['시이름', '지역명', '코드번호']
    )
).add_to(map)

Django에서 folium

  • 기본적으로 folium은 html파일로 save할 수 있다.
  • Django template에 삽입하기 위해 iframe이 있는 문자열로 반환하는 작업이 필요하다.
    =>map = map._repr_html_()
  • render할 때 dict형식으로 보내준다.
    =>render(request, 'html파일 경로', {'my_map' : map})