O que estou tentando fazer é extrair dados de elevação de uma API do google maps ao longo de um caminho especificado pelas coordenadas de latitude e longitude da seguinte maneira:
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()
Isso me dá um dado parecido com este:
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"',
'}']
ao colocar como DataFrame, aqui está o que recebo:
pd.read_json(elevations)
e aqui está o que eu quero:
Não tenho certeza se isso é possível, mas principalmente o que estou procurando é uma maneira de reunir os dados de elevação, latitude e longitude em um dataframe de pandas (não precisa ter cabeçalhos de mutilina sofisticados).
Se alguém puder ajudar ou dar alguns conselhos sobre como trabalhar com esses dados, isso seria ótimo! Se você não pode dizer que eu não trabalhei muito com dados json antes ...
EDITAR:
Este método não é tão atraente, mas parece funcionar:
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
termina o dataframe com colunas latitude, longitude, elevação