สิ่งที่ฉันพยายามจะทำคือดึงข้อมูลระดับความสูงจาก google maps 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)
และนี่คือสิ่งที่ฉันต้องการ:
ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่ แต่ส่วนใหญ่สิ่งที่ฉันกำลังมองหาคือวิธีที่จะสามารถใส่ข้อมูลระดับความสูงละติจูดและลองจิจูดเข้าด้วยกันใน dataframe แพนด้า (ไม่ต้องมีส่วนหัว mutiline แฟนซี)
หากมีใครสามารถช่วยหรือให้คำแนะนำในการทำงานกับข้อมูลนี้จะดีมาก! หากคุณไม่สามารถบอกได้ว่าฉันไม่ได้ทำงานกับข้อมูล 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
จบลงด้วย dataframe ที่มีคอลัมน์ละติจูด, ลองจิจูด, ระดับความสูง