【foliumのPlugins】地図にAntPath(蟻の道)を描く
今回は、地図作成ライブラリfoliumに大量にあるプラグインの中から「AntPath」の使い方をやります。蟻の道。
【実行環境】
座標を用意
経路的に連続した感じの座標(緯度・経度)を複数用意します。AntPathによりその経路に沿って順に線が引かれます。
座標を用意するのが一番面倒なんですけど…
import pandas as pd # 座標のデータ f = 'latlng_list.csv' df = pd.read_csv(f, header=None) df = df.iloc[59:67, :] df = df.drop(65) df
0 | 1 | 2 | |
---|---|---|---|
59 | 吉野ヶ里遺跡 | 33.324316 | 130.384151 |
60 | 吉武高木遺跡 | 33.537937 | 130.318595 |
61 | 那珂八幡古墳 | 33.570873 | 130.435517 |
62 | 小郡駅 | 33.397538 | 130.553428 |
63 | 太刀洗駅 | 33.413898 | 130.618894 |
64 | 由布院駅 | 33.262670 | 131.355101 |
66 | 大宰府政庁跡 | 33.514469 | 130.515170 |
よし、座標はこれを使おう。
カラム1が緯度、2には経度が入っています。
地図の中心座標を算出
地図のベースを作る際に表示の中心座標が必要です。上のデータフレームにある複数の座標の平均値を列で出したものを中心座標として使用します。
# 中心点を出す為に平均値を算出 center = df.mean(axis=0) center
1 33.431672
2 130.597265
dtype: float64
地図作成
ベースの地図を作成し、AntPathをそれに追加し完成させます。
AntPathを使うときはfrom folium import plugins
をインポートする。
import folium from folium import plugins # 地図作成 (座標はリスト型 m = folium.Map(center.tolist(), zoom_start=8) # 経路の座標(numpy配列型 locations = df.iloc[:,1:3].values # 蟻の道を地図に追加 antpath = plugins.AntPath(locations=locations) antpath.add_to(m) # 表示 m
地図オブジェクトの中心座標はリスト型にした。Seriesでやったらエラーが出た為。前回の投稿では出なかったんだけど。違いがわからない。リストかNumpy配列にしておけば間違いないということで。
Make this Notebook Trusted to load map: File -> Trust Notebook
座標の順で動きが表現されている。
吉野ヶ里遺跡 → 吉武高木遺跡 → 那珂八幡(なかはちまん)古墳 → 小郡駅 → 太刀洗駅(たちあらい) → 湯布院 → 太宰府政庁跡
マラソンのテレビ中継かなんかでコースを表示するときこんな風よね(^_^)。意外と簡単、難問は座標の収集。
以上です。