反向Python命名限制和改进的地理编码geopy.geocoders

时间:2019-03-01 13:03:27

标签: python reverse-geocoding

我需要根据纬度和经度获取地址10000,为此我使用了geopy.geocoders。但是,第一个限制是您在一天中可以反转地理编码的座标数存在限制。

from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter
geolocator = Nominatim(user_agent="specify_your_app_name_here",timeout=None)

rectangles_df=df["LatLong"].head(2)

location=rectangles_df.apply(geolocator.reverse)

&其次,当将其应用于多个坐标的数据框时,它仅打印不带坐标的地址,这使得映射到原始数据集变得困难。另外它没有给出英语输出,我也尝试了以下方法:

test=rectangles_df.apply(geolocator.reverse(language='en'))

但这显然不起作用,因为它期望将坐标作为必需参数。

可以做什么。

1 个答案:

答案 0 :(得分:1)

首先,根据Nominatim使用策略,唯一的限制是一个请求/秒。我看不到每天从一个请求限制得出的86400个请求(1秒* 60 * 60 * 24)之外的任何每日限制 https://operations.osmfoundation.org/policies/nominatim/

确保您每秒发出的请求不超过一个的最简单方法是

  time.sleep(1)

在进行请求之前进行互动,然后再提出请求。

第二,位置对象将坐标和地址都作为属性:

print(location.latitude, location.longitude, location.adress)

第三,使用geopy,您可以声明语言。默认为false

reverse(query, exactly_one=True, timeout=DEFAULT_SENTINEL, language=False,  addressdetails=True)

检查有关名词名词的geopy文档: https://geopy.readthedocs.io/en/stable/#nominatim