【问题标题】:Geocoding in python get Latitude and Longitude from addresses using API keypython中的地理编码使用API​​密钥从地址获取纬度和经度
【发布时间】: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 以获取更多参考。

标签: python-2.7 pandas google-api jupyter-notebook geocode


【解决方案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) 并告诉我它在说什么吗?
  • 我现在试试
猜你喜欢
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多