为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python Nominatim 限制和改进 geopy.geocoders 进行反向地理编码

使用 Python Nominatim 限制和改进 geopy.geocoders 进行反向地理编码

qq_遁去的一_1 2021-11-23 16:13:55
我需要根据纬度和经度获取 10000 的地址,为此我使用了 geopy.geocoders。但是,第一个限制是您可以在一天内反转地理编码的坐标数量是有限的。from geopy.geocoders import Nominatimfrom geopy.extra.rate_limiter import RateLimitergeolocator = 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 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

首先,根据 Nominatim 使用政策,唯一的限制是一个请求/秒。除了源自一个请求限制https://operations.osmfoundation.org/policies/nominatim/ 的每天 86400 个请求(1 秒 * 60 * 60 * 24)之外,我没有看到任何每日限制

保证每秒不超过一个请求的最简单方法是

  time.sleep(1)

在通过请求进行交互时,在发出请求之前。

其次,位置对象同时保留坐标和地址作为属性:

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

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

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

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


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 678 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信