geopy 没有显示正确的输出
geopy does not show correct output
我正在根据邮政编码计算纬度和经度。
我已经安装了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=
关键字 and/or 显式传递域,而不是默认值 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))
不return任何匹配项。
[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']
我正在根据邮政编码计算纬度和经度。
我已经安装了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=
关键字 and/or 显式传递域,而不是默认值 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))
不return任何匹配项。
[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']