この記事について
位置情報分析をしていると、住所から緯度経度を取得したくなるケースに遭遇する。
アドホック分析においては、各種無料で利用できるAPIを叩くのが一般的である。
毎回手で書くのもいい加減めんどくさかったので、備忘録がてらメモを残しておく。
利用するAPI
geocoding.jpのAPIを利用する。API提供元に迷惑をかけないようにアクセス間隔は10秒あける。
コード
本体はこんな感じ。利用方法はdocstringに書いたとおり。
なお、コメントに@shiracamus様がキレイに整えてくれた実装が有るので、実用上はそちらをおすすめします。
.py
import requests
from bs4 import BeautifulSoup
import time
from tqdm import tqdm
def get_lat_lon_from_address(address_l):
"""
address_lにlistの形で住所を入れてあげると、latlonsという入れ子上のリストで緯度経度のリストを返す関数。
>>>>get_lat_lon_from_address(['東京都文京区本郷7-3-1','東京都文京区湯島3丁目30−1'])
[['35.712056', '139.762775'], ['35.707771', '139.768205']]
"""
url = 'http://www.geocoding.jp/api/'
latlons = []
for address in tqdm(address_l):
payload = {"v": 1.1, 'q': address}
r = requests.get(url, params=payload)
ret = BeautifulSoup(r.content,'lxml')
if ret.find('error'):
raise ValueError(f"Invalid address submitted. {address}")
else:
lat = ret.find('lat').string
lon = ret.find('lng').string
latlons.append([lat,lon])
time.sleep(10)
return latlons