📍
OpenStreetMap + foliumを使って周辺のコンビニをプロットする
やること
OpenStreetMapのデータとfoliumを使って周辺にあるコンビニを地図上にプロットする。
やってみる
OpenStreetMapのデータを取得する
今回はpyormを使用してOSMデータを触ってみる。
他にもosmreadでもOSMデータを触ることができるが、別途OSMデータを取得してくる必要があるため、pyormを使用する。
PythonでOSMデータを触る方法は以前Scrapで書いたので良ければこちらも見てもらえると。
関西のOSMデータを取得する
from pyrosm import get_data
fp = get_data("kansai")
使用するOSMデータを京都駅周辺の地図データに絞る
import pyrosm
osm = pyrosm.OSM(fp ,bounding_box=[135.754080,34.981962,135.761659,34.987314])
コンビニ情報を検索する
custom_filter = {"shop": ["convenience"]}
pois = osm.get_pois(custom_filter=custom_filter)
検索したコンビニの情報を表示する
for name, lat, lon in zip(pois['name'], pois['lat'], pois['lon']):
print(name, lat, lon)
> ローソン 34.98695373535156 135.7572784423828
> ローソン 34.984466552734375 135.75430297851562
> ファミリーマート 34.986915588378906 135.7609100341797
> ...
foliumを使ってコンビニをプロットする
京都駅を地図の中心に設定する
import folium
map = folium.Map(location=[34.985506, 135.758998], zoom_start=17)
コンビニをピン留めする
for i, r in pois.iterrows():
folium.Marker([r['lat'], r['lon']], popup=r['name']).add_to(map)
HTMLに出力する
map.save("map_train.html")
京都駅周辺のコンビニのプロット完成!🎉
同じ要領で特定のスポットなどを検索して地図に表示ができます。
Discussion