Streamlitで地図に都道府県庁所在地を表示してみよう

Streamlit

はじめに

私は旅行が大好きなのでよくGoogleMapを見ます。Mapに写真もたくさん投稿しています。StreamlitにMap機能があるので何かできないかと考えてみました。とりあえず簡単な都道府県庁の位置をプロットするプログラムを作ってみました。

なにができるの?

Streamlitを使って、地図上に簡単にスポットをプロットすることができます。
ドキュメントには pydeck_chart のラッパーと書かれているので、散布図なども書けるようです。

まずは設定(データの準備)

都道府県庁所在地 緯度経度データ10進数/60進数での座標」から都道府県庁所在地の緯度・経度のデータを取得します。列名は「lat(latitude)」と「lon(longitude)」とする必要があります。緯度と経度以外のデータが含まれていても無視されます。緯度と経度は10進数で指定します。
60進数(例えば北緯43度03分51秒)の場合は、43 + 3/60 + 51/60/60 → で 43.0641666666となります。割り切れない場合は、小数点第5位まででいいのではないかと思います。


latlon
沖縄県26.2125127.68111
鹿児島県31.56028130.55806
宮崎県31.91111131.42389
長崎県32.74472129.87361
熊本県32.78972130.74167
大分県33.23806131.6125
佐賀県33.24944130.29889
高知県33.55972133.53111
福岡県33.60639130.41806
愛媛県33.84167132.76611
徳島県34.06583134.55944
山口県34.18583131.47139
和歌山県34.22611135.1675
香川県34.34028134.04333
広島県34.39639132.45944
岡山県34.66167133.935
奈良県34.68528135.83278
大阪府34.68639135.52
兵庫県34.69139135.18306
三重県34.73028136.50861
静岡県34.97694138.38306
滋賀県35.00444135.86833
京都府35.02139135.75556
愛知県35.18028136.90667
岐阜県35.39111136.72222
神奈川県35.44778139.6425
島根県35.47222133.05056
鳥取県35.50361134.23833
千葉県35.60472140.12333
山梨県35.66389138.56833
東京都35.68944139.69167
埼玉県35.85694139.64889
福井県36.06528136.22194
茨城県36.34139140.44667
群馬県36.39111139.06083
栃木県36.56583139.88361
石川県36.59444136.62556
長野県36.65139138.18111
富山県36.69528137.21139
福島県37.75140.46778
新潟県37.90222139.02361
山形県38.24056140.36333
宮城県38.26889140.87194
岩手県39.70361141.1525
秋田県39.71861140.1025
青森県40.82444140.74
北海道43.06417141.34694

サンプルプログラムを作成してみる(地図に場所を表示)

データが準備出来れば、あとは簡単です。これだけです。

コードサンプル

import streamit as st

st.title('都道府県庁所在地')
df = pd.read_csv('pref.csv')
st.map(df, use_container_width=True)

パラメータ

パラメー値、意味
データデータフレーム、ndarray、Iterable、ディクショナリが対応可能です。
zoom地図の表示範囲。指定なしの場合プロットが入る範囲だと思われます。1だと世界地図になります。
use_container_width初期値:True。グラフの幅を列の幅に設定するかどうか

画面サンプル

都道府県庁所在地が赤の点でプロットされます。

おわりに

簡単に場所をプロットすることができるので、画面上で建物や観光地、お店などを選ぶと地図にその場所を表示するなど、工夫次第で応用が効きそうです。
GoogleMapで出来るので問題はないのですが、将来的に、地図から多種多様の情報に飛べたら便利だと思っています。
地理の勉強など視覚的にできれば、より楽しく分かりやすくなるような気がします。

st.mapはpydeck_chartのラッパーのようです。マップ上に散布図チャートを作成できるようです。
streamlit hello で起動するサンプルにもありますので確認してみてください。

streamlit-foliumというライブラリがあるようなので、そちらも調べてみたいと思います。

参考にさせていただいたもの

コメント

タイトルとURLをコピーしました