我需要根据纬度和经度获取地址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'))
但这显然不起作用,因为它期望将坐标作为必需参数。
可以做什么。
答案 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