如何通过gpxpy从GPX轨迹extensions中提取speed并写入route_info?
解决gpxpy提取extensions中speed和course字段的问题
gpxpy不会自动解析GPX的扩展字段(比如你文件里的speed、course),所以直接调用point.speed、point.course会返回None,得手动从point.extensions里提取对应元素的文本值。
修改后的代码如下:
import numpy as np import gpxpy with open('kaggle/input/workout-routes/route_2022-02-02_8.06pm.gpx', 'r') as gpx_file: gpx = gpxpy.parse(gpx_file) route_info = [] for track in gpx.tracks: for segment in track.segments: for ind, point in enumerate(segment.points): # 初始化speed和course为None,防止无对应字段时报错 speed = None course = None # 遍历extensions里的所有元素 for ext in point.extensions: # 根据标签名匹配目标字段 if ext.tag == 'speed': speed = float(ext.text) elif ext.tag == 'course': course = float(ext.text) # 将所有字段添加到列表 route_info.append({ 'latitude': point.latitude, 'longitude': point.longitude, 'elevation': point.elevation, 'time': np.datetime64(point.time), 'speed': speed, 'course': course })
关键说明:
point.extensions返回Element对象列表,每个对象的tag对应XML标签名(如'speed'),text对应标签内的数值文本- 把文本转成
float类型,方便后续做数值计算 - 先初始化speed和course为None,避免某些轨迹点缺失这些字段时抛出异常
内容的提问来源于stack exchange,提问作者work work
相关产品推荐
相关产品推荐

