#TL;DR;
引っ越しをしたので自分の場所の一宮がよくわからない。初詣に行こうと思う。
せっかくだから全国の場所も確認したかった。それだけです。
環境
Anaconda 64bit Python3
一覧の取得
Wikipediaの[諸国一宮一覧]
(https://ja.wikipedia.org/wiki/%E4%B8%80%E5%AE%AE#%E8%AB%B8%E5%9B%BD%E4%B8%80%E5%AE%AE%E4%B8%80%E8%A6%A7)を参照しました。
csvへ加工
Google スプレッドシートを利用して適当に加工しました。
国名,社名,所在地
肥後国,阿蘇神社,熊本県阿蘇市
但馬国,粟鹿神社,兵庫県朝来市
安房国,安房神社,千葉県館山市
...
Geocoding
今回はGoogleMaps APIを利用します。
API Keyを先に取得しておきます。下記サイトを参考に取得しました。
https://nendeb.com/276
pythonからGeocoding可能なモジュールがあったので利用しました。
conda install -c conda-forge googlemaps
コードは下記の通りです。
import csv
import googlemaps
# GoogleMaps API Key
api_key = '***' # 取得したAPI KEYを入力してください。
gmaps = googlemaps.Client(key=api_key)
# read csv
geo_loc = list([['site','lat','lon']])
with open('一宮一覧.csv', 'r', encoding='utf-8') as fp:
reader = csv.reader(fp)
header = next(reader)
for row in reader:
results = gmaps.geocode(row[1])
for result in results:
addr = result['formatted_address']
location = result['geometry']['location']
lat = location['lat']
lng = location['lng']
geo_loc.append([row[1], lat, lng])
# write csv
with open('geocoding_list.csv', 'w', encoding='utf-8', newline='') as fp:
writer = csv.writer(fp)
for line in geo_loc:
writer.writerow(line)
Mapping
Geocodingの結果を地図に落とし込みます。
conda install -c conda-forge folium
import folium
m = folium.Map(location=[36.003583, 138.000791],
zoom_start=7,
attr='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors')
with open('geocoding_list.csv', 'r', encoding='utf-8') as fp:
reader = csv.reader(fp)
header = next(reader)
for row in reader:
code = [float(row[1]), float(row[2])]
folium.Marker(code, popup='<i>{}</i>'.format(row[0])).add_to(m)
m.save('ichinomiya.html')
結果
下記の通りとなりました。
https://porksteak3.github.io/IchinomiyaMap/ichinomiya.html
おわりに
- 今回みたいに100以下ならサクッと表示されると思うんだけど1000以上になってくるとさすがに表示が重い
- Geocoding後の結果を精査してないので誤りがある可能性が高いです