问题描述
我有一个包含超过 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楼
您可以使用 Google 的地理编码 API 每天最多 10 万个请求,费用为 50 美元。 企业合同允许的甚至更多(并且显然会花费更多)。
因此,在三天之内,您可以将所有地址转换为大约 125 美元。 如果您使用每秒允许的最大 50 次查询,您将在每天大约 34 分钟内达到速率限制。
参考: :