反向地理编码与Python的局限性&;地理编码器的改进

反向地理编码与Python的局限性&;地理编码器的改进,python,reverse-geocoding,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) rectangl

我需要根据纬度和经度获取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'))
但这显然不起作用,因为它需要坐标作为强制参数


可以做什么。

首先,根据提名使用政策,唯一的限制是每秒一个请求。我看不到任何超出每天86400个请求(1秒*60*60*24)的每日限制,该限制源自一个请求限制

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

  time.sleep(1)
在通过请求进行交互时,在发出请求之前

其次,location对象保留坐标和地址作为属性:

print(location.latitude, location.longitude, location.adress)
第三,使用geopy可以声明语言。默认情况下为
false

reverse(query, exactly_one=True, timeout=DEFAULT_SENTINEL, language=False,  addressdetails=True)
检查与提名相关的geopy文档:

@Luis\u Tavares是否有办法使用geopy内置的速率限制器进行反向地理编码?也许可以尝试类似于
geocode=RateLimiter(geoloator.reverse,min\u delay\u seconds=1)
。由于
RateLimiter
是一个
geoloator
属性,它应该与
geocode
reverse
一起使用。