【发布时间】: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