Геопсия не показывает правильный вывод
Я рассчитываю широты и долготы из почтового индекса.
Я установил 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']