LoginSignup
79
86

More than 3 years have passed since last update.

住所から緯度経度を取得するpythonスニペット

Last updated at Posted at 2018-10-05

この記事について

位置情報分析をしていると、住所から緯度経度を取得したくなるケースに遭遇する。
アドホック分析においては、各種無料で利用できるAPIを叩くのが一般的である。
毎回手で書くのもいい加減めんどくさかったので、備忘録がてらメモを残しておく。

利用するAPI

geocoding.jpのAPIを利用する。API提供元に迷惑をかけないようにアクセス間隔は10秒あける。

コード

本体はこんな感じ。利用方法はdocstringに書いたとおり。
なお、コメントに@shiracamus様がキレイに整えてくれた実装が有るので、実用上はそちらをおすすめします。

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
79
86
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
86