Leafletについては 統計・データ解析 のほうの Leaflet のページをご覧ください。
ここではLeafletを用いた地図を簡単に描くためのPythonのライブラリ folium を使ってみます。
もしインストールされていなければ pip install folium
などとしてインストールしておきます。
デフォルトでは OpenStreetMap を使います:
import folium
map1 = folium.Map(location=[34.7468,136.5248], height=300, zoom_start=15)
folium.Marker(location=[34.7468,136.5248], popup='ここにいます',
icon=folium.Icon(color='red', icon='home')).add_to(map1)
これで Google Colaboratory なら map1
と打ち込めば地図が現れます。ただ,Coogle Colaboratory の中で表示させると,アイコンをクリックして出るポップアップの文字「ここにいます」が文字化けしてしまいます。これは japanize-matplotlib を使ってもダメのようです。そこで,
map1.save('folium-osm-example.html')
のようにファイルに保存し,左端の「ファイル」からダウンロードしてダブルクリックすれば正常に動作します。これをWebブラウザにアップロードすれば,どこからでも見えるようになります。
地理院地図を使う例:
map2 = folium.Map(location=[34.7468,136.5248], height=300, zoom_start=15,
tiles='https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png',
attr='© <a href="https://maps.gsi.go.jp/development/ichiran.html">国土地理院</a>')
folium.Marker(location=[34.7468,136.5248], popup='ここにいます',
icon=folium.Icon(color='red', icon='home')).add_to(map2)
map2.save('folium-gsi-example.html')
応用として,津市のAED設置場所のプロット:
import pandas as pd
import folium
df = pd.read_csv('https://www.info.city.tsu.mie.jp/www/contents/1001000000855/simple/43472.csv')
map3 = folium.Map(location=[34.7468,136.5248], zoom_start=14,
tiles='https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png',
attr='© <a href="https://maps.gsi.go.jp/development/ichiran.html">国土地理院</a>')
for _, row in df.iterrows():
folium.Marker(location=[row['緯度'], row['経度']],
popup=row['施設名']).add_to(map3)
map3.save('folium-tsu-aed.html')