지도 시각화 - Folium

이카루스·2024년 1월 29일
post-thumbnail

[ folium 이란? ]

Folium은 파이썬을 위한 강력한 지도 시각화 라이브러리입니다. Leaflet.js를 기반으로 하여, 개발자들이 파이썬 코드를 사용하여 다양한 지도 시각화를 쉽게 생성할 수 있게 해줍니다. 이 라이브러리는 데이터 과학자, 지리 정보 시스템(GIS) 전문가, 웹 개발자 등 지도와 관련된 작업을 하는 사람들에게 특히 유용합니다.

주요 기능

  1. 지도 생성: 사용자는 Folium을 사용하여 다양한 종류의 지도를 생성할 수 있습니다. 이는 기본 지도부터 시작하여, 위성 이미지, 지형도, 교통 흐름도 등 다양한 베이스맵을 포함할 수 있습니다.

  2. 마커 추가: 지정된 위치에 마커를 추가하여 해당 위치를 강조할 수 있습니다. 마커에는 텍스트, 아이콘, 팝업 등 다양한 요소를 포함시킬 수 있습니다.

  3. 원, 선, 다각형 추가: 지도 위에 다양한 형태의 그래픽 요소를 추가하여 특정 영역을 강조하거나 경로를 표시할 수 있습니다.

  4. 레이어 및 컨트롤 추가: 사용자는 여러 레이어를 지도에 추가하고, 레이어 간 전환을 위한 컨트롤을 설정할 수 있습니다. 이를 통해 다양한 정보를 효과적으로 전달할 수 있습니다.

  5. 인터랙티브: 마커나 그래픽 요소에 마우스를 올리거나 클릭했을 때 정보를 보여주는 등, 사용자와의 인터랙션을 구현할 수 있습니다.

  6. HTML 파일로 내보내기: 생성된 지도를 HTML 파일로 내보내어 웹 페이지에 쉽게 통합할 수 있습니다. 이는 웹 기반 프로젝트에 특히 유용합니다.

가장 까다로웠던 것

지역별 데이터들을 사용하게 되면, 데이터 지역명들과 GeoJSON에서의 지역명들이 안맞는 경우들이 있다. 이런경우, 데이터 지역명들을 수정하는 것을 추천한다.

import folium
import pandas as pd
import json

# Load the GeoJSON file
with open("SIDO_MAP_2022.json") as f:
    geojson_data = json.load(f)

    # Extract the CTP_KOR_NM from the GeoJSON file
    CTP_KOR_NM = [feature['properties']['CTP_KOR_NM'] for feature in geojson_data['features']]

    # Print the extracted CTP_KOR_NM
    print(CTP_KOR_NM)

아예 이렇게 사용할 컬럼명을 보면서 대조해보는 것도 방법 중 하나!

사용 방법

# Load the GeoJSON file
with open("SIDO_MAP_2022.json") as f:
    geojson_data = json.load(f)

# Load the data with order amounts by region
# 이 부분은 앞서 'order_count_by_area' 데이터프레임을 생성한 코드를 바탕으로 가정합니다.
data = order_count_by_area

# Create a folium map centered on the region
# 지도의 중심 좌표를 해당 지역에 맞게 조정합니다.
#folium.Map(location=[위도, 경도], zoom_start=숫자(확대 정도))

m = folium.Map(location=[36, 128], zoom_start=6)


# Create a choropleth map layer
folium.Choropleth(
    geo_data=geojson_data,# GeoJSON 데이터
    name='choropleth',#name: 레이어 이름.
    data=data,#data: 지역별 데이터.
    columns=['CTP_KOR_NM', '주문횟수_normalized'],#데이터프레임에서 사용할 열 이름
    key_on='feature.properties.CTP_KOR_NM',  # GeoJSON 구조에 맞게 key_on 수정
    #key_on: GeoJSON 파일 내 지역 이름을 참조하는 키. feature.properties.CTP_KOR_NM을 사용합니다.
    fill_color='GnBu',#fill_color: 색상 단계 지도의 색상 팔레트.
    fill_opacity= 0.7,#fill_opacity와 line_opacity: 채우기 및 선의 투명도.
    line_opacity=0.4,
    legend_name='도별 주문횟수' #legend_name: 범례의 이름.
).add_to(m)

# Display the map
m
profile
The ones who are crazy enough to think that they can change the world are the ones who do."(steven Jobs, 2015). 세상을 바꾸는 '미친' 아이디어를 찾아내 세상을 바꾸고자 하는 AI 연구자입니다.

0개의 댓글