Leafletとfolium

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='&copy; <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='&copy; <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')

こんなふうになります