【问题标题】:Reverse Geocoding using Mapquest API and Python使用 Mapquest API 和 Python 进行反向地理编码
【发布时间】:2015-11-02 22:17:24
【问题描述】:

大家好,所以我正在尝试使用 Mapquest API 进行地理编码。我想通过提供 LAT/LONG CSV 进行反向地理编码,并使用 Mapquest API 通过 Python 脚本对其进行处理。我在下面创建了脚本,但是当我从脚本中获取输出时,我没有得到任何响应。任何人都可以修改我的脚本,以便我从中获取 JSON,然后我可以将地址数据从地理编码解析到另一个文件。谢谢

这是我输入的 CSV 样本数据

objectID    lat lon
1   52.36732733 4.9491406

我的 Python 脚本

import pandas as pd
import json
import requests 

df = pd.read_csv('/Users/albertgonzalobautista/Desktop/Testing_MPQ.csv')

# create new columns
df['geocode_data'] = ''
df['address']=''

# function that handles the geocoding requests

def reverseGeocode(latlng):
    result = {}
    url = 'http://www.mapquestapi.com/geocoding/v1/address?key={1}'
    apikey = 'XXX'
    request = url.format(latlng, apikey)
    data = json.loads(requests.get(request).text)
    if len(data['results']) > 0:
        result = data['results'][0]
    return  result

for i, row in df.iterrows():
    df['geocode_data'][i] = reverseGeocode(df['lat'][i].astype(str) + ',' + df['lon'][i].astype(str))

df.to_csv('test8.csv', encoding='utf-8', index=False)

我的脚本的输出

objectID    lat lon geocode_data
1   52.36732733 4.9491406   {'providedLocation': {}, 'locations': []}

【问题讨论】:

  • 您似乎没有将 latlng 变量传递到请求 url。
  • 一般来说,您应该做更多的工作来缩小脚本中发生错误的位置。
  • 建议再看一遍文档:mapquestapi.com/geocoding/#reverse
  • 基本上,我的脚本中的错误是我没有得到我所在位置的返回地址,如我的脚本部分的输出所示。这样我如何通过请求 url 传递 latlng 变量?
  • 我的意思是,您的脚本正在做很多不同的事情:* 迭代数据帧 * 从数据帧中读取单个值 * 将单个值分配给数据帧 * 进行 API 调用等。如果您可以缩小问题的范围,您可以提出更好的问题。

标签: python json csv pandas mapquest


【解决方案1】:

问题在于你的函数中的以下三行:

url = 'http://www.mapquestapi.com/geocoding/v1/address?key={1}'
apikey = 'XXX'
request = url.format(latlng, apikey)

您发送到 mapquest API 的 url 不包括纬度和经度!您只是将您的 apikey 发送给他们。

如果您查看他们的文档,您可以看到 URL 需要采用的格式: http://www.mapquestapi.com/geocoding/#reverse

【讨论】:

  • 所以我正在尝试修改 URL 以适合我的代码。你能建议我怎么做吗?
  • 我也希望使用 JSON,以便在可能的情况下解析信息。
  • 如果您点击我发布的链接,它会提供一个示例 URL(“反向地理编码示例”部分)。该 URL 与您脚本中的 URL 有什么区别?
  • 如何在folium中添加代码?
  • @AnonymousUser 我认为这是一个足够不同的主题,您应该将其作为一个单独的问题提出,它需要更多关于您的情况的背景才能很好地回答。
猜你喜欢
  • 2015-10-30
  • 2019-06-16
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多