将大型地址列表映射到(经度,纬度)坐标

时间:2018-02-12 03:02:39

标签: python python-requests

我有一个超过250,000个地址的列表,我需要转换为经度,纬度对。我在网上找到了两个解决方案:

import requests
from geopy.geocoders import Nominatim
geolocator = Nominatim()

def lonlat(address):
    address = address.replace(' ', '+')
    response = requests.get('https://maps.googleapis.com/maps/api/geocode/json?address=%s' % address)
    resp_json_payload = response.json()
    return resp_json_payload['results'][0]['geometry']['location']

def lonlat2(address):
    location = geolocator.geocode(address)
    try:
        return (location.longitude, location.latitude)
    except:
        return address

这些方法都不能扩展到超过250,000个地址;我甚至不确定API限制是什么。什么是合适的解决方法?

1 个答案:

答案 0 :(得分:1)

您可以使用Google的地理编码API,每天最多可获得10万次请求,费用为50美元。企业合同允许甚至更多(并且显然会花费更多)。

因此,在三天内,您可以将所有地址转换为大约125美元。如果您每秒使用最多允许的50次查询,您将在每天约34分钟内达到速率限制。

参考:https://developers.google.com/maps/documentation/geocoding/usage-limits