2023年6月14日水曜日

演習用のソースコード

データをダウンロードする

!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)

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 件のコメント:

コメントを投稿