【问题标题】:Using my Google Geocoding API key with Python geocoder将我的 Google Geocoding API 密钥与 Python 地理编码器一起使用
【发布时间】: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')

【问题讨论】:

    标签: python google-maps pandas google-geocoding-api


    【解决方案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')
      

    详情

    1. 您正在使用名为geocoder 的python 库,它本身是多个地理编码服务的包装器。

    2. 如果您查看pypi page of geocoder,您可以(忽略渲染问题)找到用于地理编码器的docs。在您的情况下,您可能想看看Google related part of the docs

    3. 对于基本用法,即使没有 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 的链接以供进一步参考,这通常是一种更好的方法。
      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多