よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

【foliumのPlugins】地図にAntPath(蟻の道)を描く

今回は、地図作成ライブラリfoliumに大量にあるプラグインの中から「AntPath」の使い方をやります。蟻の道。



f:id:chayarokurokuro:20210731093435j:plain
AntPath



【実行環境】

  • Android
  • Termux
  • Jupyter Notebook6.4.0
  • Python 3.9.6
  • Pandas1.2.5、folium0.12.1



座標を用意

経路的に連続した感じの座標(緯度・経度)を複数用意します。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

座標の順で動きが表現されている。

吉野ヶ里遺跡 → 吉武高木遺跡 → 那珂八幡(なかはちまん)古墳 → 小郡駅太刀洗駅(たちあらい) → 湯布院 → 太宰府政庁跡



ラソンのテレビ中継かなんかでコースを表示するときこんな風よね(^_^)。意外と簡単、難問は座標の収集。

以上です。