Геопсия не показывает правильный вывод

Я рассчитываю широты и долготы из почтового индекса.

Я установил geopy

pip install geopy

В моем коде:

from geopy.geocoders import GoogleV3
def get_lat_lng(zip_code):
    lat, lng = False, False
    geocoder = GoogleV3()
    location = geocoder.geocode(query=str(zip_code))
    if location:
        print location
        lat, lng = location.latitude, location.longitude
    return lat, lng

Когда я вызываю вышеупомянутый метод, и я даю почтовый индекс Лахора, Пакистан, который составляет 54000.

get_lat_lng(54000)

Выход из широты и долготы:

(46.975033, 31.994583)

Фактическая широта и долгота Лахора

31.5546° N, 74.3572° E

И на распечатке места я получил:

Mykolaiv, Mykolaivs'ka oblast, Ukraine, 54000

В чем может быть проблема?

1 ответ

Решение

Единственный способ заставить его работать - использовать ключевое слово components, передавая код страны и местность:

from geopy.geocoders import GoogleV3
def get_lat_lng(zip_code):
    geocoder = GoogleV3()
    location = geocoder.geocode(query=str(zip_code),components={"country": "PK","locality":"lahore"})
    if location:
        print location._address
        lat, lng = location.latitude, location.longitude
    return lat, lng

print(get_lat_lng(54000))

Какие выводы:

Lahore, Pakistan
(31.55460609999999, 74.3571581)

Другой вариант - попробовать region= ключевое слово и / или передать домен явно что-то, отличное от значения по умолчанию maps.google.com,

Даже настройки exactly_one ложно:

from geopy.geocoders import GoogleV3
def get_lat_lng(zip_code):
    lat, lng = False, False
    geocoder = GoogleV3()
    location = geocoder.geocode(query=str(zip_code), exactly_one=False)
    if location:
        print [loc.address for loc in location]
print(get_lat_lng(54000)) 

Не возвращает ни одного совпадения.

[u"Mykolaiv, Mykolaivs'ka oblast, Ukraine, 54000", u'54000 Nancy, France', u'54000, Thailand', u'Kampung Datuk Keramat, 54000 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia', u'Tlalnepantla Centro, 54000 Tlalnepantla, M\xe9x., Mexico', u'54000, Broken Bow, OK 74728, USA', u'54000, Oklahoma, USA']
Другие вопросы по тегам