2016-06-15 2 views
1

Я хочу убедиться, что я получу лат и lng для правильного города. Например, Сидней в Австралии и Сиднее в Канаде. Это прекрасно работаетКак проехать город и страну до геокода

for d in listofobjs: 
    location = geolocator.geocode(d['city']) 
    d2 = { 
     'username': d['username'], 
     'latitude': location.latitude, 
     'longitude': location.longitude 
    } 
    listofobjs2.append(d2) 

Но я получаю сообщение об ошибке при попытке местоположение, как это вместо

location = geolocator.geocode(d['city'],d['country']) 

я получаю сообщение об ошибке при попытке прочитать широту от locatoion

AttributeError: 'list' object has no attribute 'latitude' 

ли возможно ли передать город и страну на геокод?

ответ

0

В документации указано, что geolocator.geocode может возвращать 0,1 или более значений. Метод может возвращать список, поэтому сообщение об ошибке при попытке получить к нему доступ как один элемент структуры. Или перейдите по списку и добавьте в listofobjs2 столько, сколько необходимо.

Вы не можете быть уверены, что получите ровно 1 совпадение. Но зачем передавать 2 параметра? Я бы объединил их в строку, как в примере с документами:

«некоторый адрес NYC». Так что, если вы положили ваш запрос, как это:

d [ 'город'] +»«+ d [ 'страна']

это будет соответствовать примеру намного лучше

https://geopy.readthedocs.io/en/1.10.0/

+0

Вы правильно, он вернет список. Но список всех возможных мест. [Местонахождение (Ванкувер, район Большого Ванкувера, Британская Колумбия, Канада, (49.2608944, -123.1139382, 0.0)), Местонахождение (Ванкувер, Кларк Каунти, Вашингтон, Соединенные Штаты Америки, (45.6306954, -122.6744556, 0.0)), Местонахождение (Ванкувер, Сан-Антонио-дель-Текендама, Кундинамарка, Колумбия, (4.585473, -74.3518472, 0.0)), .... Это потребует дальнейшей обработки. нет другого более легкого пути? – jas

+0

В документах есть этот пример: location = geolocator.geocode («175 5th Avenue NYC»). Я не знаю API геолокатора, но я полагаю, что geolocator.geocode (d ['city'] + "" + d ['country']) будет работать (1 строка с городом + страна вместо вызова параметра 2, который я не могу соответствие в документации) –

+0

Да, он работает – jas

Смежные вопросы