オープンデータを読み込んで、地図上に表示する。
今回は福井県鯖江市が公表しているオープンデータを使ってみます。 「消火栓の位置データ」と「店舗データ」を使い、地図上に表示してみましょう。 「http://data.city.sabae.lg.jp」
右上の「オープンデータ」をクリックします。
目当ての「消火栓の位置データ」と「店舗データ」を見つけ「csv」をクリックしてダウンロードします。
ファイルの中身はこんな感じです。
データや項目を調べてみましょう
消火栓について
店舗について
外部ライブラリ、foliumをインストール
folium(フォリウム)は地図を表示したり、地図上にマーカーをつけたりできる外部ライブラリです。
Windowsにインストールするときは、コマンドプロンプトを使います。「pip install folium」
macOSにインストールするときは、ターミナルを使います。「pip3 install folium」
地図を表示する
解説
import folium | 地図を表示したり、地図上にマーカーを付けたりできる外部ライブラリ、foliumをimportします。 |
m = folium.Map(location=[35.6895 ,139.6917],zoom_start=12) | 指定した地点の地図は、m = folium,Map(location[緯度、経度], zoom_start=ズーム倍率)で指定します。 |
m.save(“tokyo.html”) | m.save(“ファイル名.html”)でHTMLを一旦作ります。 |
デスクトップにtokyo.htmlが作られました。
これをブラウザで開くと・・・東京都の地図が出ました。
地図上にマーカーをつけてみよう
解説
import folium | 地図を表示したり、地図上にマーカーを付けたりできる外部ライブラリ、foliumをimportします。 |
m = folium.Map(location=[35.6895 ,139.6917],zoom_start=12) | 指定した地点の地図は、m = folium,Map(location[緯度、経度], zoom_start=ズーム倍率)で指定します。 |
folium.Marker([35.6895 ,139.6917]).add_to(m) | マーカーを追加するには、folium.Marker([緯度,経度]).add_to(m) |
m.save(“tokyo_mark.html”) | m.save(“ファイル名.html”)でHTMLを作ります。 |
マーカーが付きましたね。
この要領で鯖江市の消火栓の位置をマーカーでつけてみましょう。
解説
import pandas as pd | 表データを読み込み、様々な作業を行えるpandasライブラリをimportします。省略してpdとします。 |
import folium | 地図を表示したり、地図上にマーカーを付けたりできる外部ライブラリ、foliumをimportします。 |
df = pd.read_csv(“200.csv”,encoding=”shift-jis”) | ファイルを読み込み、変数dfに代入します。 |
hydrant = df[[“緯度”,”経度”]].values | 消火栓のある地点(緯度、経度)をリスト化します。変数hydrantに代入します。 |
m = folium.Map(location=[35.942957 ,136.198863],zoom_start=15) | 指定した地点の地図は、m = folium,Map(location[緯度、経度], zoom_start=ズーム倍率)で指定します。 |
for data in hydrant: | 配列形式で呼び出します。 |
folium.Marker([data[0] ,data[1]]).add_to(m) | マーカーを追加するには、folium.Marker([緯度,経度]).add_to(m)と指定します。リスト化したのでdata[0],data[1]とします。 |
m.save(“sabae.html”) | m.save(“ファイル名.html”)でHTMLを作ります。 |
たくさんのマーカーが付きましたね。
地図上に店舗名を表示してみよう(tooltipを使って)
今度はもう一つのダウンロードした店舗データ「898.csv」ファイルを使用しましょう。解説
import pandas as pd | 表データを読み込み、様々な作業を行えるpandasライブラリをimportします。省略してpdとします。 |
import folium | 地図を表示したり、地図上にマーカーを付けたりできる外部ライブラリ、foliumをimportします。 |
df = pd.read_csv(“898.csv”) | ファイルを読み込み、変数dfに代入します。 |
shop = df[[“緯度”,”経度”,”店舗名(日本語)”]].values | 店舗のある地点(緯度、経度)と店舗名をリスト化します。変数shopに代入します。 |
m = folium.Map(location=[35.942957 ,136.198863],zoom_start=15) | 指定した地点の地図は、m = folium,Map(location[緯度、経度], zoom_start=ズーム倍率)で指定します。 |
for data in shop: | 配列形式で呼び出します。 |
folium.Marker([data[0] ,data[1]], tooltip=data[2]).add_to(m) | マーカーを追加し、ツールチップ付きにするには、folium.Marker([緯度,経度], tooltip=”文字列”).add_to(m)と指定します。リスト化したのでdata[0],data[1],data[2]とします。 |
m.save(“shop.html”) | m.save(“ファイル名.html”)でHTMLを作ります。 |
マーカーにマウスカーソルを合わせると、その店舗名がツールチップで表示されました。わかりやすいですね。
*尚、ここではバージョン「Python 3.10.1」を使用しています。
この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。