Python Google 地图地理编码 API
Python Google Maps Geocoding API
我正在使用 Google 的地理编码 API 使用 Python 库(尝试过 GeoPy 1.11.0)。
对于诸如 "Utica" 之类的查询,我得到了一个单一的响应:
{u'geometry': {u'location_type': u'APPROXIMATE', u'bounds': {u'northeast':
{u'lat': 43.132269, u'lng': -75.1609059}, u'southwest': {u'lat':
43.0644689, u'lng': -75.295296}}, u'viewport': {u'northeast': {u'lat':
43.132269, u'lng': -75.1609059}, u'southwest': {u'lat': 43.0644689, u'lng':
-75.295296}}, u'location': {u'lat': 43.100903, u'lng': -75.232664}},
u'address_components': [{u'long_name': u'Utica', u'types': [u'locality',
u'political'], u'short_name': u'Utica'}, {u'long_name': u'Oneida County',
u'types': [u'administrative_area_level_2', u'political'], u'short_name':
u'Oneida County'}, {u'long_name': u'New York', u'types':
[u'administrative_area_level_1', u'political'], u'short_name': u'NY'},
{u'long_name': u'United States', u'types': [u'country', u'political'],
u'short_name': u'US'}], u'place_id': u'ChIJKXZqNVE32YkRhvztGCY2GhE',
u'formatted_address': u'Utica, NY, USA', u'types': [u'locality',
u'political']}
问题是美国有多个尤蒂卡,例如纽约州尤蒂卡和威斯康星州尤蒂卡。我期待 Google 到 return 所有可能的名字中有 Utica 的地方,有没有办法做到这一点?
这是使用 GeoPy 和 Google 的代码:
locations = ["Utica"]
from geopy.geocoders import GoogleV3
geolocator = GoogleV3(api_key=GoogleAPIKey)
for location in locations:
print location
results = geolocator.geocode(query=location, language='en', exactly_one=False, timeout=5)
for result in results:
print result.raw
恐怕无法从执行 Web 服务请求的 Google 数据库中获取具有特定名称的所有可能的地理特征。
请注意,地理编码 API 的目的是将地址字符串解析为其坐标。通常,地理编码 API 网络服务将根据 Google 标准(显着性、内部评分等)仅提供一个与地址字符串最匹配的结果。如果您的搜索字符串不明确,如 'Utica',地理编码 Web 服务将选择显然是 'Utica, NY, USA'.
的最显着结果
作为解决问题的方法,您可以尝试使用 Places API autocomplete 请求。自动完成请求将为您的搜索地址字符串 return 最多 5 个建议。不幸的是,它不能保证所有可能的地理特征,但您将至少拥有其中的 5 个。
查看以下搜索美国境内名称为 'Utica' 的地区的请求:
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Utica&types=(cities)&components=country%3AUS&key=YOUR_API_KEY
此请求 returns 以下预测:
- 美国纽约州尤蒂卡(地点 ID ChIJKXZqNVE32YkRhvztGCY2GhE)
- 美国密歇根州尤蒂卡(地点 ID ChIJz8RnUrndJIgRNUbzGmaEdTk)
- 美国俄亥俄州尤蒂卡(地点 ID ChIJ1ajvLWQwOIgR6Axda9Ip9XA)
- 美国伊利诺伊州尤蒂卡(地点 ID ChIJdeJyBUlZCYgRpPiIgT2O7gE)
- 美国肯塔基州尤蒂卡(地点 ID ChIJzbKUniCWb4gRj_IDgwlk-N0)
最后,当您使用 Python 时,我建议使用 Python 客户端库 Google 地图 API Web 服务 为了执行地方自动完成请求:
https://github.com/googlemaps/google-maps-services-python
此客户端库的文档位于:
https://googlemaps.github.io/google-maps-services-python/docs/
希望对您有所帮助!
我正在使用 Google 的地理编码 API 使用 Python 库(尝试过 GeoPy 1.11.0)。 对于诸如 "Utica" 之类的查询,我得到了一个单一的响应:
{u'geometry': {u'location_type': u'APPROXIMATE', u'bounds': {u'northeast':
{u'lat': 43.132269, u'lng': -75.1609059}, u'southwest': {u'lat':
43.0644689, u'lng': -75.295296}}, u'viewport': {u'northeast': {u'lat':
43.132269, u'lng': -75.1609059}, u'southwest': {u'lat': 43.0644689, u'lng':
-75.295296}}, u'location': {u'lat': 43.100903, u'lng': -75.232664}},
u'address_components': [{u'long_name': u'Utica', u'types': [u'locality',
u'political'], u'short_name': u'Utica'}, {u'long_name': u'Oneida County',
u'types': [u'administrative_area_level_2', u'political'], u'short_name':
u'Oneida County'}, {u'long_name': u'New York', u'types':
[u'administrative_area_level_1', u'political'], u'short_name': u'NY'},
{u'long_name': u'United States', u'types': [u'country', u'political'],
u'short_name': u'US'}], u'place_id': u'ChIJKXZqNVE32YkRhvztGCY2GhE',
u'formatted_address': u'Utica, NY, USA', u'types': [u'locality',
u'political']}
问题是美国有多个尤蒂卡,例如纽约州尤蒂卡和威斯康星州尤蒂卡。我期待 Google 到 return 所有可能的名字中有 Utica 的地方,有没有办法做到这一点?
这是使用 GeoPy 和 Google 的代码:
locations = ["Utica"]
from geopy.geocoders import GoogleV3
geolocator = GoogleV3(api_key=GoogleAPIKey)
for location in locations:
print location
results = geolocator.geocode(query=location, language='en', exactly_one=False, timeout=5)
for result in results:
print result.raw
恐怕无法从执行 Web 服务请求的 Google 数据库中获取具有特定名称的所有可能的地理特征。
请注意,地理编码 API 的目的是将地址字符串解析为其坐标。通常,地理编码 API 网络服务将根据 Google 标准(显着性、内部评分等)仅提供一个与地址字符串最匹配的结果。如果您的搜索字符串不明确,如 'Utica',地理编码 Web 服务将选择显然是 'Utica, NY, USA'.
的最显着结果作为解决问题的方法,您可以尝试使用 Places API autocomplete 请求。自动完成请求将为您的搜索地址字符串 return 最多 5 个建议。不幸的是,它不能保证所有可能的地理特征,但您将至少拥有其中的 5 个。
查看以下搜索美国境内名称为 'Utica' 的地区的请求:
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Utica&types=(cities)&components=country%3AUS&key=YOUR_API_KEY
此请求 returns 以下预测:
- 美国纽约州尤蒂卡(地点 ID ChIJKXZqNVE32YkRhvztGCY2GhE)
- 美国密歇根州尤蒂卡(地点 ID ChIJz8RnUrndJIgRNUbzGmaEdTk)
- 美国俄亥俄州尤蒂卡(地点 ID ChIJ1ajvLWQwOIgR6Axda9Ip9XA)
- 美国伊利诺伊州尤蒂卡(地点 ID ChIJdeJyBUlZCYgRpPiIgT2O7gE)
- 美国肯塔基州尤蒂卡(地点 ID ChIJzbKUniCWb4gRj_IDgwlk-N0)
最后,当您使用 Python 时,我建议使用 Python 客户端库 Google 地图 API Web 服务 为了执行地方自动完成请求:
https://github.com/googlemaps/google-maps-services-python
此客户端库的文档位于:
https://googlemaps.github.io/google-maps-services-python/docs/
希望对您有所帮助!