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

我需要根据纬度和经度获取 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'))

但这显然不起作用,因为它期望坐标作为强制参数。


可以做什么。


qq_遁去的一_1
浏览 706回答 1
1回答

DIEA

首先,根据 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python