Ich versuche, Höhendaten aus einer Google Maps-API entlang eines Pfads zu extrahieren, der durch Breiten- und Längengradkoordinaten wie folgt angegeben wird:
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()
Dies gibt mir Daten, die so aussehen:
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"',
'}']
Wenn ich als DataFrame einsetze, bekomme ich Folgendes:
pd.read_json(elevations)
und hier ist was ich will:
Ich bin mir nicht sicher, ob dies möglich ist, aber ich suche hauptsächlich nach einer Möglichkeit, die Höhen-, Breiten- und Längengrade in einem Pandas-Datenrahmen zusammenzufassen (muss keine ausgefallenen mutilinen Header haben).
Wenn jemand helfen oder Ratschläge zum Umgang mit diesen Daten geben kann, wäre das großartig! Wenn Sie nicht sagen können, dass ich vorher nicht viel mit JSON-Daten gearbeitet habe ...
BEARBEITEN:
Diese Methode ist nicht besonders attraktiv, scheint aber zu funktionieren:
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
endet Datenrahmen mit Spalten Breite, Länge, Höhe