gpt4 book ai didi

list - 使用 Python (Google Maps API) 从地理编码结果列表中提取纬度/经度

转载 作者:行者123 更新时间:2023-12-05 08:33:39 25 4
gpt4 key购买 nike

我正在尝试将 Google Maps API 与 GoogleMaps Python 库结合使用,以便在提供完整或部分地址时对纬度/经度进行地理编码(在此示例中,我使用的是城市/州,但我也有数据集只有邮政编码,我需要用它来完成这条线)。

 import googlemaps
gmaps = googlemaps.Client(key=[insert API key here])
geocode_result = gmaps.geocode('Sacramento, CA')
print(geocode_result)

Result:[{u'geometry': {u'location_type': u'APPROXIMATE', u'bounds': {u'northeast': {u'lat': 38.685507, u'lng': -121.325705}, u'southwest': {u'lat': 38.437574, u'lng': -121.56012}}, u'viewport': {u'northeast': {u'lat': 38.685507, u'lng': -121.325705}, u'southwest': {u'lat': 38.437574, u'lng': -121.56012}}, u'location': {u'lat': 38.5815719, u'lng': -121.4943996}}, u'address_components': [{u'long_name': u'Sacramento', u'types': [u'locality', u'political'], u'short_name': u'Sacramento'}, {u'long_name': u'Sacramento County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Sacramento County'}, {u'long_name': u'California', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'CA'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}], u'place_id': u'ChIJ-ZeDsnLGmoAR238ZdKpqH5I', u'formatted_address': u'Sacramento, CA, USA', u'types': [u'locality', u'political']}]

我的问题是我不确定如何从此列表中提取适当的纬度/经度值。我尝试使用以下代码(取自 this question on SO 的答案)解析列表:

import operator
thirditem=operator.itemgetter(3)(geocode_result)
print(thirditem)

当我运行它时,我收到一个 IndexError 提示索引超出范围。我也通过调试器运行它,但我得到了同样的错误,但没有任何其他信息。我用谷歌搜索并查看了其他 SO 问题,但我仍然不确定问题出在哪里。

作为旁注,我还尝试使用 this tutorial 中的代码示例,但当我尝试运行它时,我得到的答案是“0”,不幸的是,这比 IndexError 的帮助还小。

我的目标是能够从这里解析适当的纬度/经度值并将它们动态插入到这个 basemap 脚本中。值目前是硬编码的,但最终我希望能够为值 llcrnrlon、llcrnrlat、urcrnrlon、urcrnrlat、lat_0 和 lon_0 使用变量:

map = Basemap(projection='merc',
# with high resolution,
resolution= 'h',
# And threshold 100000
area_thresh = 100000.0,
# Centered on these coordinates
lat_0=37, lon_0=119,
#and using these corners to specify the lower left lon/lat and upper right lon/lat of the graph)
llcrnrlon=-130, llcrnrlat=30,
urcrnrlon=-110, urcrnrlat=45)

我对这一切都非常陌生,所以可能有一个我只是没有看到的简单答案。欢迎任何帮助!谢谢。

最佳答案

我能够向我的一些开发人员寻求帮助,我在这里回答我自己的问题,希望它能帮助其他也在为同样的问题而苦苦挣扎的人。

地理编码结果返回一个 JSON 对象,在 Python 中将其视为仅包含单个对象(结果)的字典。因此,为了提取适当的经纬度值,您需要使用“geocode_result[0]["geometry"]["location"]["lat"]",其中 [0] 是数组中的第一个对象(结果)。

我编写此函数是为了在我的 basemap 脚本中使用,以从作为参数传入的位置提取纬度/经度值。

def geocode_address(loc):
gmaps = googlemaps.Client(key=[insert your API key here])
geocode_result = gmaps.geocode(loc)
lat = geocode_result[0]["geometry"]["location"]["lat"]
lon = geocode_result[0]["geometry"]["location"]["lng"]
#test - print results
print (lat,lon)

当我使用加利福尼亚州萨克拉门托作为地点对其进行测试时:

geocode_address('Sacramento, CA')

这是我的结果:

Result: 38.5815719, -121.4943996

关于list - 使用 Python (Google Maps API) 从地理编码结果列表中提取纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311687/

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