将我的 Google Geocoding API 密钥与 Python 地理编码器一起使用
Posted
技术标签:
【中文标题】将我的 Google Geocoding API 密钥与 Python 地理编码器一起使用【英文标题】:Using my Google Geocoding API key with Python geocoder 【发布时间】:2018-01-02 08:31:39 【问题描述】:我是 Python 的初学者,我一直致力于在 Jupyter 上使用 Pandas 和 Geocoder 对数据库进行地理编码。
由于 df 有点长(大约 3000 行),我想使用 Google 的 Geocoding API。
我已经创建了一个免费密钥,但我不知道我应该用它做什么。帮忙?
顺便说一下,我的代码是这样的:
import geocoder
import pandas as pd
geo = geocoder
df=pd.read_excel('hsp2.xlsx')
df['Coordinates']=df['Address'].apply(geo.google).apply(lambda x: x.latlng if x != None else None)
df.to_csv('output.csv', sep='|', encoding='iso8859_15')
【问题讨论】:
【参考方案1】:你需要在导入geocoder
之前设置环境变量:
import os
os.environ["GOOGLE_API_KEY"] = "api_key_from_google_cloud_platform"
import geocoder
geo = geocoder.google(address)
latlong = geo.latlng
注意:
正如 Murmel 在 cmets 中提到的,不应在您的代码中设置包含键(以及一般情况下)的环境变量。 如果你在某个地方部署它,那么在你的配置文件中设置环境变量。或者甚至更好,作为 Kubernetes 之类的秘密。
在 bash 中设置环境变量export GOOGLE_API_KEY=api_key_from_google_cloud_platform
【讨论】:
正如我在my answer 中所写,我认为您的回答在某种程度上滥用了提供 API KEY 的概念。根据docs,env 变量旨在用于“[...] mak[ing] sure your API key is stored safely on your computer, you can define that API key using your system’s environment variables.
”因此,我认为最好至少提及这一点或描述如何在 python 代码中执行此操作。
在导入库之前必须导入密钥有点蹩脚..【参考方案2】:
基本上有2个选项:
将 API KEY 作为环境变量传递:
GOOGLE_API_KEY=YOUR-API-KEY-HERE python your_program.py
将 API KEY 作为参数传递:
geocoder.google('some address', key='YOUR-API-KEY-HERE')
详情
您正在使用名为geocoder 的python 库,它本身是多个地理编码服务的包装器。
如果您查看pypi page of geocoder,您可以(忽略渲染问题)找到用于地理编码器的docs。在您的情况下,您可能想看看Google related part of the docs。
对于基本用法,即使没有 API KEY 也可以使用此接缝,但您可以使用 2 个变体指定一个:
Environment variable:喜欢Roman already showed。出于安全原因,此方法旨在用于在代码中不包含 API KEY。 (可能您希望将代码上传到公共存储库,但又不会向所有人公开您的 API KEY。)
"Key" parameter: 您还可以通过使用key
参数指定您的API KEY,例如:
geocoder.google('some address', key='YOUR-API-KEY-HERE')
【讨论】:
【参考方案3】:我同意Roman 的回答。你可以使用它并且它正在工作。我有点害怕如果我在循环中使用地理编码器,那么谷歌肯定会阻止我的 IP 地址,所以我通过 git hub 代码发现地理编码器从os.environ.get('GOOGLE_API_KEY')
获取 google api 密钥。你可以在图片中看到:
【讨论】:
嗯不太清楚,你想说什么?这更像是对罗马答案的评论,不是吗? Meta:我建议您不要链接到 Roman 的个人资料,而是链接到他的实际答案。此外,与其发布代码图像,不如简单地复制并粘贴代码并提供指向 github 的链接以供进一步参考,这通常是一种更好的方法。以上是关于将我的 Google Geocoding API 密钥与 Python 地理编码器一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Google Geocoding API 返回错误的语言作为响应
使用 Google Geocoding API(或类似的)实现地址查找 [关闭]
Google Maps (Reverse) Geocoding API 应该只显示 Cityname
Google Maps Geocoding APi 不返回 lat 和 long