@LakeForest

Geopy не находит адрес по строке, которую сам отдал на основании широты и долготы. Почему?

def get_place(name, lat, long):
    geolocator = Nominatim(user_agent='rir7m')
# for index, row in norm_df.iterrows():
    coord = "{}, {}".format(lat, long)
    location = geolocator.reverse(coord)
    try:
     
     addr_location = geolocator.geocode(location.address)
     return addr_location.raw[name]
    except Exception as e:
     print(location.raw)
     print(e)
    
    #location.raw['class']

norm_df['TypePlace'] = norm_df.apply(lambda x: get_place('type', x['Широта'], x['Долгота']), axis=1)

Детский мир, 9, Петербургская улица, Старо-Татарская слобода, Вахитовский район, городской округ Казань, Татарстан, Приволжский федеральный округ, 420107, Россия
{'place_id': 106787876, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': 79073538, 'lat': '55.7852654', 'lon': '49.12655876972477', 'display_name': 'Детский мир, 9, Петербургская улица, Старо-Татарская слобода, Вахитовский район, городской округ Казань, Татарстан, Приволжский федеральный округ, 420107, Россия', 'address': {'shop': 'Детский мир', 'house_number': '9', 'road': 'Петербургская улица', 'suburb': 'Старо-Татарская слобода', 'city_district': 'Вахитовский район', 'city': 'городской округ Казань', 'state': 'Татарстан', 'region': 'Приволжский федеральный округ', 'postcode': '420107', 'country': 'Россия', 'country_code': 'ru'}, 'boundingbox': ['55.7848491', '55.7858024', '49.1257845', '49.1271768']}

Error:
'NoneType' object has no attribute 'raw'

Я хотел бы получать по широте и долготе type, class и importance участка для создания новых признаков.
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
Похоже, что обрезка элементов имеет некоторый смысл.

addr_location = geolocator.geocode(location.address[:-6])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы