データをダウンロードする
!wget https://www.iiojun.com/iDS/2023/hachimap.kml
!wget https://www.iiojun.com/iDS/2023/libraries.kml
GeoPandasをインストールする
!pip install geopandas
モジュールを読み込む
import geopandas as gpd
import fiona
import folium
import matplotlib.pyplot as plt
from fiona.drvsupport import supported_drivers
データを読み込む
supported_drivers['KML'] = 'rw'
df = gpd.read_file('hachimap.kml', driver='KML')
df.head()
試しにプロットしてみる
df.plot(figsize=(12,12))
plt.show()
地図を表示する
m = folium.Map(location=[35.66, 139.28], zoom_start=12, tiles='openstreetmap')
m
町丁目区画を重ねて表示する
for _, r in df.iterrows():
sim_geo = gpd.GeoSeries(r['geometry'])
geo_j = sim_geo.to_json()
geo_j = folium.GeoJson(data=geo_j,
style_function=lambda x: {'fillColor': 'grey', 'color': 'grey',
'weight': 0.5, 'fill_opacity': 0.3, 'line_opacity': 0.1 })
folium.Popup(r['Name']).add_to(geo_j)
geo_j.add_to(m)
図書館の位置を読み込む
import pandas as pd
df_libs = gpd.read_file('libraries.kml', driver='KML')
df_libs
地図上に表示する
for _, row in df_libs.iterrows():
folium.Marker(location=[row['geometry'].y, row['geometry'].x], popup=row['Name']).add_to(m)
m
アイコンが大きすぎるので,地図を作り直してサークルマーカーで図書館を表示する
m = folium.Map(location=[35.66, 139.30], zoom_start=12, tiles='openstreetmap')
for _, r in df.iterrows():
sim_geo = gpd.GeoSeries(r['geometry'])
geo_j = sim_geo.to_json()
geo_j = folium.GeoJson(data=geo_j,
style_function=lambda x: {'fillColor': 'grey', 'color': 'grey',
'weight': 0.5, 'fill_opacity': 0.3, 'line_opacity': 0.1 })
folium.Popup(r['Name']).add_to(geo_j)
geo_j.add_to(m)
for _, row in df_libs.iterrows():
folium.CircleMarker(
location=[row['geometry'].y, row['geometry'].x],
radius=4, color='red', fill_color='red', weight=3
).add_to(m)
m
0 件のコメント:
コメントを投稿