본문 바로가기
Data-driven Methodology/DS (Data Science)

[Data Science] folium을 활용한 지도 그리기

by goatlab 2022. 10. 26.
728x90
반응형
SMALL

folium을 활용한 지도 그리기

 

# 설치
pip install folium
import folium
import requests # 웹 요청
import json

# 기본 지도 그리기
m = folium.Map(location=[37,126]) # 좌표 37,126을 중심으로 그림 그리기 
m

# 본인의 IP
query = 'naver.com'
url = f'http://ip-api.com/json/{query}'

# 웹 요청
res = requests.get(url)
location_data = json.loads(res.text)
location_data['lat'], location_data['lon']
m = folium.Map(location=[location_data['lat'], location_data['lon']])

# 지도를 html로 출력
m.save('my_location_map.html')
m

folium.Map(location=[37.491362, 126.70], tiles='Stamen Toner', zoom_start=13)

folium.Map(location=[37.491362, 126.70], tiles='Stamen Terrain', zoom_start=13)

folium.Map(location=[37.491362, 126.70],
           tiles='Stamen Watercolor', 
           zoom_start=13, min_zoom=12, max_zoom=14
          )

 

마커 그리기

 

m = folium.Map(location=[37.491362, 126.70],
           tiles='Stamen Watercolor', 
           zoom_start=13, min_zoom=12, max_zoom=14
          )

# 마커 추가
tooltip = '마커를 클릭해보세요.'
folium.Marker([37.50, 126.70], tooltip=tooltip, popup='<i>위</i>').add_to(m) # 기울어진
folium.Marker([37.48, 126.70], tooltip=tooltip, popup='<b>아래</b>').add_to(m) # 두꺼운
m

m = folium.Map(location=[37.45, 126.70],
           zoom_start=14, min_zoom=14, max_zoom=20)

# 마커 추가
folium.Marker(
    location=[37.46, 126.70],
    icon=folium.Icon(icon='cloud') # 구름 아이콘
).add_to(m)

folium.Marker(
    location=[37.45, 126.70],
    icon=folium.Icon(icon='info-sign', color='green') # 초록 정보
).add_to(m)

folium.Marker(
    location=[37.44, 126.70],
    icon=folium.Icon(icon='home', color='red') # 빨간 집
).add_to(m)

# 원 그리기
folium.Circle(
    location=[37.45, 126.69], # 서쪽에
    radius=100, # 지름의 길이
    color='#F15F5F', 
    fill=True,
    fill_color='#F15F5F'
).add_to(m)

folium.Circle(
    location=[37.45, 126.71], # 동쪽에
    radius=300, # 지름의 길이
    color='#3176CC', 
    fill=True,
    fill_color='#3176CC'
).add_to(m)

m.add_child(folium.ClickForMarker(popup='Waypoint'))
m

'skorea-provinces-geo.json'

 

GeoJSON을 활용한 지도 경계 나타내기

 

import folium
import json
import requests

res = requests.get('https://raw.githubusercontent.com/southkorea/southkorea-maps/master/gadm/json/skorea-provinces-geo.json')
jsonData = json.loads(res.text)

map_osm = folium.Map(location=[35.566345, 126.977893], zoom_start=6)

# json 파일을 지도로 매핑하는 기능
folium.GeoJson(jsonData, name='json_data').add_to(map_osm)
map_osm

728x90
반응형
LIST