У меня есть список широт / длинных координат, и мне нужно получить состояние для каждого. Это можно сделать с помощью кода:
df = pd.read_csv('SOL_A.dsv', delimiter = '|', low_memory=False)
for index, row in df.iterrows():
lat = row['LAT']
lon = row['LONG']
g = geocoder.osm([lat,lon], method='reverse')
st = '_UN'
if g.state != None:
st = g.state
geom_states.append(st)
df['STATE'] = geom_states
Но для моих ~ 5k записей это в итоге начинает давать Status code 429 from https://nominatim.openstreetmap.org/search: ERROR - 429 Client Error: Too Many Requests for URL: tps://nominatim.openstreetmap.org/search?q=0.0%2C+0.0&format=jsonv2&addressdetails=1&limit=1
, что ожидается.
Мне нужно обработать это только один раз и не не против, если это займет целый день. Я прочитал OSM Политика допустимого использования , и он звучит так:
- Нет интенсивного использования (абсолютный максимум 1 запрос в секунду).
- Укажите действительное HTTP Referer или User-Agent, идентифицирующий приложение (стандартные пользовательские агенты, установленные HTTP-библиотеками, не подойдут).
- Четко отображать атрибуцию как подходящую для вашего носителя.
- Данные предоставлены под Лицензия ODbL, которая требует совместного использования (хотя небольшие извлечения, вероятно, будут покрыты добросовестным использованием / добросовестным обращением).
Итак. Это должно быть возможно (?)
I попытался добавить мой ключ API (geocoder.osm([lat,lon], method='reverse', key=API_KEY)
), а также добавил time.sleep(1.1)
перед каждым вызовом, но это не помогло.
Идеи?