gpt4 book ai didi

python - geopy 没有显示正确的输出

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:43 24 4
gpt4 key购买 nike

我正在根据邮政编码计算纬度和经度。

我已经安装了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

有什么问题?

最佳答案

我能让它工作的唯一方法是使用 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 设置为 False:

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']

关于python - geopy 没有显示正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com