1 분 소요


Folium 지도 시각화

In [1]:
import folium
In [2]:
m = folium.Map((37.517734, 126.886352), zoom_start=16)
# location : 위경도값을 튜플이나 리스트 형태로
# min_lat=-90, max_lat=90, min_lon=-180, max_lon=180 : 중심점을 잡아 그 기준으로
# zoom_start: 시작 확대정도
m.save('map.html')
m
Out [2]:
Make this Notebook Trusted to load map: File -> Trust Notebook

지도 종류 변경

In [3]:
m = folium.Map((37.517734, 126.886352), zoom_start=16, tiles='Stamen Watercolor') # "Stamen" (Terrain, Toner, and Watercolor)
m
Out [3]:
Make this Notebook Trusted to load map: File -> Trust Notebook

마커 찍기

In [4]:
m = folium.Map([37.517734, 126.886352], zoom_start=17)

folium.Marker((37.517734, 126.886352),
              popup="청년취업사관학교", tooltip="SeSAC",
             icon=folium.Icon(icon="cloud")).add_to(m)
# popup: 클릭 시, tooltip: 마우스오버 시
folium.CircleMarker((37.517734, 126.886352), radius=20,
                    color='steelblue', # 테두리 색
                    fill_color='skyblue', fill_opacity=0.5).add_to(m) # 채울 색상과 투명도
m
Out [4]:
Make this Notebook Trusted to load map: File -> Trust Notebook
  • 리스트로 마커 구현
In [5]:
lotto = [
    {"store":"담배","loc":[37.62585944357624,127.01847823823798]},   
    {"store":"화곡본마트","loc":[37.54248103738589,126.84414659211494]},   
    {"store":"용꿈돼지꿈","loc":[37.5447438346992,126.95223862043447]},   
    {"store":"일이오마켓","loc":[37.47943673430032,126.98346178441342]},   
    {"store":"여명슈퍼마켓","loc":[37.61432815661055,127.0415039221072]},   
    {"store":"5가로또레드탑","loc":[37.570756251987575,127.00235901546226]},   
    {"store":"복권세상","loc":[35.91885025656432,128.55034430109828]},   
    {"store":"복권전문점","loc":[37.50384327747725,126.71513104367074]},   
    {"store":"인현동지하가판","loc":[37.47627910055104,126.63147671205866]},   
    {"store":"CU(광주서동점)","loc":[35.14814807640179,126.90555219336346]},   
    {"store":"지산로또방","loc":[35.148338888178,126.93203920504686]},   
    {"store":"천사로또방","loc":[37.63618838692431,127.21107884503209]},   
    {"store":"오렌지통신","loc":[37.42889361993242,127.10232604117991]},   
    {"store":"여수복권방","loc":[37.418353650942116,127.12640523182601]},   
    {"store":"둘리복권방","loc":[37.34532813934063,126.73627994929885]},   
    {"store":"금성24시편의점","loc":[37.84401249737699,127.06236893072152]},   
    {"store":"GS25(청주주은점)","loc":[36.60987111587086,127.49134026856717]},   
    {"store":"장미슈퍼","loc":[36.276304155315685,126.90940713047799]},   
    {"store":"장미슈퍼","loc":[36.276304155315685,126.90940713047799]},   
    {"store":"아이24(수송점)","loc":[35.970108052787594,126.7189421934312]},   
    {"store":"탑로또","loc":[34.87844231008963,128.62803523643754]} 
]
In [6]:
m = folium.Map([37.517734, 126.886352], zoom_start=7)

for i in lotto:
    folium.Marker(i['loc'], tooltip=i['store']).add_to(m)
m
Out [6]:
Make this Notebook Trusted to load map: File -> Trust Notebook
  • 마커 클러스터에 추가
In [7]:
from folium.plugins import MarkerCluster
In [8]:
m = folium.Map([37.517734, 126.886352], zoom_start=7)
mc = MarkerCluster().add_to(m)
for i in lotto:
    folium.Marker(i['loc'], tooltip=i['store']).add_to(mc)
m
Out [8]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Choropleth maps

GeoJSON 정보가 필요하다

In [9]:
import json
In [10]:
m = folium.Map((37.54908187107719, 130.90582702637482))
json_data = open('map.geojson', 'r').read()
print(type(json_data))
json_data = json.loads(json_data) # 파일로 바로 읽어도 되지만 가끔 에러나기에
print(type(json_data))
folium.GeoJson(json_data).add_to(m)
m
Out [10]:
<class 'str'>
<class 'dict'>

Make this Notebook Trusted to load map: File -> Trust Notebook

Reference

  • 이 포스트는 SeSAC 인공지능 자연어처리, 컴퓨터비전 기술을 활용한 응용 SW 개발자 양성 과정 - 심선조 강사님의 강의를 정리한 내용입니다.
  • Folium API
  • Leaflet
  • geojson

댓글남기기