我需要根據緯度和經度獲取 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
提交
取消