GIS工具箱
格式转换

GPX 轨迹文件解析与 GeoJSON 转换

GPX 文件中的轨迹(trk)与路点(wpt),转换为 GeoJSON LineString 的方法。

GPX轨迹GeoJSONLineString

GPX 轨迹文件解析与 GeoJSON 转换

GPX(GPS Exchange Format)是一种基于 XML 的 GPS 数据交换格式,用于描述轨迹、路由和路点信息。它是 GPS 设备和户外运动应用(如 Strava、Garmin Connect)之间交换数据的标准格式,具有结构简单、兼容性强的特点。

GPX 三种核心数据类型

GPX 文件中包含三种核心数据类型,分别对应不同的使用场景:

wpt(waypoint)—— 路点

wpt 表示单个路点,包含一个独立的坐标点,常用于标记兴趣点、补给站或地标。每个 wpt 可以附带名称、描述、高程、时间等元数据。转换后对应 GeoJSON 的 Point 几何类型。

rte(route)—— 路由

rte 表示一条路由,由有序的 rtept(路由点)序列组成。路由是计划路线,描述的是"打算走"的路径,而非实际走过的轨迹。转换后对应 GeoJSON 的 LineString 几何类型。

trk(track)—— 轨迹

trk 表示一条轨迹,是 GPS 设备实际记录的运动路径。一条轨迹可以包含一个或多个 trkseg(轨迹段),每个 trkseg 由一系列 trkpt(轨迹点)组成。

  • 单个 trkseg 时,转换为 GeoJSON 的 LineString
  • 多个 trkseg 时,转换为 GeoJSON 的 MultiLineString
轨迹和路由的关键区别在于:路由是规划出来的,轨迹是实际记录的。轨迹点通常包含更密集的坐标和时间戳信息。

GPX 文件结构示例

<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="GPS Device">
  <wpt lat="39.90" lon="116.40">
    <name>起点</name>
    <ele>50.0</ele>
  </wpt>
  <trk>
    <name>晨跑轨迹</name>
    <trkseg>
      <trkpt lat="39.901" lon="116.401">
        <ele>52.3</ele>
        <time>2024-01-01T08:00:00Z</time>
      </trkpt>
      <trkpt lat="39.902" lon="116.402">
        <ele>53.1</ele>
        <time>2024-01-01T08:00:30Z</time>
      </trkpt>
    </trkseg>
  </trk>
</gpx>

转换原理

GPX 转 GeoJSON 的核心流程如下:

  1. 使用 DOMParser 将 GPX XML 字符串解析为 DOM 树
  2. 提取所有 wptrtetrk 节点
  3. 分别按数据类型提取坐标点,构建对应的 GeoJSON 几何
  4. nametimeele 等元数据保留到 Feature 的 properties
  5. 组装为 GeoJSON FeatureCollection 输出

需要注意的是,GPX 坐标以 latlon 属性形式存在,而 GeoJSON 坐标为 [lon, lat] 数组,转换时经纬度顺序需要调换。

使用 @tmcw/togeojson 库

@tmcw/togeojson 库同样支持 GPX 格式的转换,使用方式与 KML 类似:

import { gpx } from '@tmcw/togeojson';
import { DOMParser } from 'xmldom';

const dom = new DOMParser().parseFromString(gpxString, 'text/xml');
const geojson = gpx(dom);

该库会自动识别 wptrtetrk 三种类型并分别转换,每个要素的元数据(时间、高程等)会保留在 properties 中,方便后续分析。

属性保留

GPX 转换后,以下元数据通常会保留在 Feature 的 properties 中:

  • time:坐标点记录的时间戳,可用于绘制时间-距离曲线
  • ele(elevation):高程数据,可用于生成海拔剖面图
  • name:路点或轨迹的名称
  • desc:描述信息

部分 GPX 文件还包含速度(speed)、心率等扩展数据,位于 <extensions> 节点中,需特殊处理才能提取。

应用场景

GPX 轨迹数据在实际中有广泛的应用:

  • 运动轨迹分析:跑步、骑行轨迹的距离、配速、海拔分析
  • 旅行路线记录:记录旅行路径并在地图上回放展示
  • 户外活动可视化:徒步、登山轨迹的三维展示
  • 轨迹数据处理:批量转换后导入 GIS 系统进行空间分析

转换工具

如果你需要将 GPX 轨迹文件转换为 GeoJSON 格式,可以使用 GPX 转 GeoJSON 工具,在浏览器端即可完成转换,支持轨迹、路由和路点的完整解析。

本文涉及的工具

打开工具 →

相关文章