python中的地理编码使用API​​密钥从地址获取纬度和经度

Posted

技术标签:

【中文标题】python中的地理编码使用API​​密钥从地址获取纬度和经度【英文标题】:Geocoding in python get Latitude and Longitude from addresses using API key 【发布时间】:2018-04-27 05:58:33 【问题描述】:

我目前有一个数据框,其中包含某个地方的地址详细信息。我想使用 Google 地理编码 API 密钥来查找坐标 - 纬度和经度以绘制地图。有人知道怎么做这个吗?我已经尝试了下面的代码,但它在所有地址行上都返回“错误,正在跳过地址...”。

我将非常感谢任何帮助!

import pandas as pd
import os
from geopy import geocoders
from geopy.geocoders import GoogleV3

API_KEY = os.getenv("API1234")
g = GoogleV3(api_key=API_KEY)


loc_coordinates = []
loc_address = []

for address in df.Address:
    try:
        inputAddress = Address
        location = g.geocode(inputAddress, timeout=15)
        loc_coordinates.append((location.latitude, location.longitude))
        loc_Address.append(inputAddress)
    except:
        print('Error, skipping address...')


df_geocodes = pd.DataFrame('coordinate':loc_coordinates,'address':loc_address)

【问题讨论】:

前面有两件事: 1. 这可能只是一个复制粘贴错误,但是当我想你的意思是inputAddress = address 时,你写了inputAddress = Address,以便不为其分配类型变量,但你的 for 循环的变量。 2. 不要在 except 子句中打印“错误,跳过地址...”,而是尝试捕获实际的异常,这可能会给您更多提示出了什么问题(我敢打赌,在 inputAddress 分配之后的行中是 TypeError )。你会做except Exception as e:,然后打印有关实际异常的信息。 另请参阅this question 以获取更多参考。 【参考方案1】:

您有一些拼写错误:Address 而不是 addressloc_Address 而不是 loc_address

但是df.Address 是什么?

试试这个:

import pandas as pd
import os
from geopy import geocoders
from geopy.geocoders import GoogleV3

API_KEY = os.getenv("API1234")
g = GoogleV3(api_key=API_KEY)


loc_coordinates = []
loc_address = []
for address in df.Address:
    try:
        inputAddress = address
        location = g.geocode(inputAddress, timeout=15)
        loc_coordinates.append((location.latitude, location.longitude))
        loc_address.append(inputAddress)
    except Exception as e:
        print('Error, skipping address...', e)


df_geocodes = pd.DataFrame('coordinate':loc_coordinates,'address':loc_address)

【讨论】:

谢谢你! df.Address df 是我正在处理的数据框,Address 是我试图获取纬度和经度的列 我已经在上面的行中声明了 import pandas as pd import numpy as np df.Address = pd.read_csv("") 一旦我使用给定的更正运行代码,我仍然会收到“错误,跳过地址” 你能在 for 循环之前添加一个print(df.Address) 并告诉我它在说什么吗? 我现在试试

以上是关于python中的地理编码使用API​​密钥从地址获取纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章

用于地理编码的 Maps API 密钥不再起作用?

地理编码地址到 R 中的县

我可以从 HERE 的反向地理编码 API 调整返回的地址标签吗?

api 地理编码错误响应“此 IP、站点或移动应用程序无权使用此 API 密钥”

谷歌地理编码 API 错误消息“不推荐使用无密钥访问谷歌地图平台......”

这里批量地理编码 API 停止工作 - HTTP 错误 500