我需要根据纬度和经度获取 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
添加回答
举报
0/150
提交
取消