【发布时间】:2014-02-01 23:37:07
【问题描述】:
我想要做的是沿着由纬度和经度坐标指定的路径从谷歌地图 API 中提取高程数据,如下所示:
from urllib2 import Request, urlopen
import json
path1 = '42.974049,-81.205203|42.974298,-81.195755'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()
这给了我一个看起来像这样的数据:
elevations.splitlines()
['{',
' "results" : [',
' {',
' "elevation" : 243.3462677001953,',
' "location" : {',
' "lat" : 42.974049,',
' "lng" : -81.205203',
' },',
' "resolution" : 19.08790397644043',
' },',
' {',
' "elevation" : 244.1318664550781,',
' "location" : {',
' "lat" : 42.974298,',
' "lng" : -81.19575500000001',
' },',
' "resolution" : 19.08790397644043',
' }',
' ],',
' "status" : "OK"',
'}']
当作为 DataFrame 放入时,我得到的是:
pd.read_json(elevations)
这就是我想要的:
我不确定这是否可能,但主要是我正在寻找一种能够将海拔、纬度和经度数据放在熊猫数据框中的方法(不必有花哨的多行标题)。
如果有人可以就如何处理这些数据提供帮助或提供一些建议,那就太好了!如果你看不出我之前没有太多处理过 json 数据......
编辑:
这种方法不是很吸引人,但似乎很管用:
data = json.loads(elevations)
lat,lng,el = [],[],[]
for result in data['results']:
lat.append(result[u'location'][u'lat'])
lng.append(result[u'location'][u'lng'])
el.append(result[u'elevation'])
df = pd.DataFrame([lat,lng,el]).T
最终数据框包含纬度、经度、海拔列
【问题讨论】:
-
你好朋友,你知道如何获取一段json吗?一些子部分?
标签: python json google-maps pandas