### 지도 그리기
### folium 모듈 사용하기
#pip install folium <- 먼저 실행
import folium
# 서울 지도 만들기
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
# 지도를 HTML 파일로 저장하기
seoul_map.save('seoul.html')
'''
tiles 속성 : 지도 스타일 설정
openstreetmap : 기본값
cartodbdark_matter
cartodbpositron
cartodbpositronlylabels
stamentonerbackground
starmentonerlabels
stamenterrain, Stamen Terrain
stamenwatercolor
stamentoner, Stamen Toner
'''
seoul_map2 = folium.Map(location=[37.55,126.98],zoom_start=12,titles='stamenwatercolor')
seoul_map2.save('seoul2.html')
### 파일에서 위도 경도를 읽어 지도에 표시하기
import pandas as pd
import folium
df = pd.read_excel('서울지역 대학교 위치.xlsx', index_col=0, engine='openpyxl')
print(df.head())
print(df.index)
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
for name, lat, lng in zip(df.index, df.위도, df.경도):
folium.Marker([lat,lng], popup=name, tooltip=name).add_to(seoul_map)
seoul_map.save('seoul_colleges.html')
### 원형 마커 출력
### 지도 생성
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
for name, lat, lng in zip(df.index, df.위도, df.경도):
folium.CircleMarker([lat,lng], #위치 : 위도, 경도
radius=10, #원의 반지름
color='brown', #원의 둘레 색상
fill=True,
fill_color='coral',
fill_opacity=0.7,
popup=name
).add_to(seoul_map)
seoul_map.save('seoul_colleges2.html')
### Library.csv 파일을 읽어서 도서관 정보를 지도에 표시하기
import pandas as pd
import folium
from folium import Marker
library = pd.read_csv('Library.csv')
lib_map= folium.Map(location=[37.55,126.98],zoom_start=12)
for name, lat, lng, kbn in zip(library["시설명"],library["위도"],\
library["경도"],library["시설구분"]):
if kbn == '구립도서관' :
color = 'green'
else :
color = 'blue'
Marker(location = [lat,lng],
popup=kbn,
tooltip=name,
icon=folium.Icon(color=color,icon='bookmark')
).add_to(lib_map)
lib_map.save('library.html')
### MarkerCluster 기능 : 지도의 확대에 따라 표시 방법
from folium.plugins import MarkerCluster
lib_map = folium.Map(location=[37.58, 127.0], zoom_start=11)
# Add points to the map
mc = MarkerCluster()
# _ 대신 a i를 넣어도 상관없다. 변수명 의미 없음
# row : 한개의 레코드 값
for _, row in library.iterrows():
mc.add_child(
Marker(location = [row['위도'], row['경도']],
popup=row['시설구분'],
tooltip=row['시설명']
)
)
lib_map.add_child(mc)
lib_map.save('library2.html')
# 경기도 인구 데이터와 위치 정보를 가지고 지도 표시
import pandas as pd
import folium
import json
file_path = './경기도인구데이터.xlsx'
df = pd.read_excel(file_path,index_col='구분',engine='openpyxl')
df.columns = df.columns.map(str)
geo_path = './경기도행정구역경계.json'
#geo_data : 경기도의 시군의 경계부분을 좌표로 가지고 있는 데이터
print(type(geo_path))
try :
geo_data = json.load(open(geo_path, encoding='utf-8'))
except :
geo_data = json.load(open(geo_path, encdoing='utf-8-sig'))
print(type(geo_data))
g_map = folium.Map(location=[37.5502,126.982],zoom_start=9)
year = '2017'
# Choropleth 클래스로 단계 구분도 표시하기
# fill_color : 색상 파렛트 설정
# 'BuGn','BuPu','GnBu','OrRd','PuBuGn',
# 'PuRd', 'RdPu', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd'
folium.Choropleth(geo_data=geo_data, #지도 경계
data = df[year], # 표시하려는 데이터
columns = [df.index, df[year]], #열 지정
fill_color='YlOrRd', fill_opacity=0.7, line_opacity=0.3,
threshold_scale=[10000,100000,300000,500000,700000],
key_on = 'feature.properties.name',
).add_to(g_map)
g_map.save('./gyonggi_population_' + year + '.html')
'Python' 카테고리의 다른 글
Python - 지도 (folium) 연습문제 (0) | 2021.06.30 |
---|---|
Python - Numpy (0) | 2021.06.29 |
Python - 연습문제 [엑셀 파일 불러오고 그래프 그리기 ] (0) | 2021.06.24 |
Python - 시각화, 그래프(plot) (0) | 2021.06.23 |
Python - json 파일 읽기 (0) | 2021.06.22 |