gpxpy解析GPX文件更简洁语义化,支持自动提取航路点、轨迹点及路线,可计算总距离与爬升并导出为GPX或GeoJSON等格式。

用 gpxpy 解析 GPX 文件非常直接,它专为处理 GPX(GPS Exchange Format)设计,能自动解析轨迹点(trackpoints)、航路点(waypoints)、路线(routes)等结构,比原生 xml.etree.ElementTree 更简洁、更语义化。
安装与基础读取
先通过 pip 安装:
pip install gpxpy
然后加载文件或字符串:
立即学习“Python免费学习笔记(深入)”;
import gpxpywith open('route.gpx', 'r') as f: gpx = gpxpy.parse(f)
如果从字符串解析,直接传入字符串内容即可:gpxpy.parse(gpx_string)。
提取航路点(Waypoints)
GPX 中的 标签对应 gpx.waypoints,每个点包含经纬度、海拔、时间、名称等属性:
-
wp.latitude、wp.longitude、wp.elevation -
wp.time是datetime对象(若 GPX 中有 time 字段) -
wp.name和wp.comment可读取标注信息
示例:打印所有航路点坐标
for wp in gpx.waypoints: print(f"{wp.latitude:.6f}, {wp.longitude:.6f} — {wp.name or '无名'}")
Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。
遍历轨迹点(Trackpoints)
轨迹()可能含多个段(),每段含多个点()。需嵌套遍历:
for track in gpx.tracks: for segment in track.segments: for point in segment.points: print(point.latitude, point.longitude, point.time)
注意:point.elevation 和 point.time 若缺失则为 None,建议加判断。
写回 GPX 或导出为其他格式
修改后可序列化为标准 GPX 字符串:
gpx_xml = gpx.to_xml()with open('output.gpx', 'w') as f: f.write(gpx_xml)
也支持导出为 GeoJSON、CSV(需自行转换)或生成简易统计(如总距离、爬升):
print(f"总距离: {gpx.length_2d():.1f} 米")print(f"总爬升: {gpx.get_uphill_downhill()[0]:.1f} 米")
这些方法会自动按轨迹/航路点顺序计算,无需手动差分。









