skip to content
barorin&?

Pythonでジオコーディング

/ 1 min read

はじめに

API 別に 2 つ作ってみました。どちらも引数 query に住所またはランドマークを設定すると、緯度、経度を返すコードです。

方法

Geocoding API

import time

import requests
from bs4 import BeautifulSoup

def get_geocoding(query):
    '''
    Args:
    query(str): 住所、ランドマーク
    Returns:
    lat, lng(float): 緯度、経度
    '''
    url = 'https://www.geocoding.jp/api/'
    q = {'q': query}
    r = requests.get(url, params=q)
    time.sleep(60)
    soup = BeautifulSoup(r.text, 'lxml-xml')
    try:
        lat = soup.find('lat').get_text()
        lng = soup.find('lng').get_text()
        lat, lng = lat, lng
    except:
        lat, lng = 0

    return lat, lng

Google Maps API

import googlemaps

def get_googlemaps_geocoding(query):
    '''
    Args:
    query(str): 住所、ランドマーク
    Returns:
    lat, lng(float): 緯度、経度
    '''
    googleapikey = 'APIキー'
    gmaps = googlemaps.Client(key=googleapikey)
    gmap_list = gmaps.geocode(query)
    try:
        ll = gmap_list[0]['geometry']['location']
        lat, lng = ll['lat'], ll['lng']
    except:
        lat, lng = 0

    return lat, lng