将大量地址映射到(经度,纬度)坐标



我有一个超过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限制是什么。什么是合适的工作?

您可以每天使用Google的地理编码API最多100K请求,价格为50美元。企业合同允许的范围甚至更多(显然会花费更多(。

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

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

最新更新