ToolkitHub 地理工具箱

GPS轨迹工具

导入GPX/KML/GeoJSON轨迹,统计总里程、分段距离、海拔爬升下降与时间跨度,支持三种格式互转导出。全程本地处理。

请启用 JavaScript 使用完整功能。

GPX 轨迹案例:里程、时长与爬升为何不同

轨迹统计取决于点序、分段和时间字段。下面用一条人工构造的三点轨迹解释本工具的统计口径,它不是实际运动记录。

操作与预期结果

下载下方 GPX 并导入。示例沿赤道从经度 0 到 0.002,共 3 点、1 段;时间覆盖 120 秒,海拔依次为 10、15、12 米。预期里程约 222.390 米、爬升 5 米、下降 3 米,平均速度约 6.672 千米/小时。

里程使用半径 6,371,000 米的 Haversine 球面距离,逐段相邻点求和;不把段与段之间的空隙计入距离,也不包含三维坡面距离。

为什么结果不等于运动 App

时长是最早与最晚有效时间之差,包含中途停留和分段空隙,不是自动识别的“运动时间”。平均速度使用这个总时长作分母。运动 App 可能采用停留识别、道路匹配或轨迹滤波,因此不能保证差异小于固定百分比。

爬升、下降按相邻有效海拔的差累计,没有海拔平滑;GPS 高程抖动会使累计值增大。点位缺少时间或海拔时,不能从经纬度推断这些字段。

格式转换保留什么

当前 GPX 解析读取轨迹点的经纬度、ele 和 time;KML 与 GeoJSON 路径不会恢复运动 App 私有的时间扩展。GPX 转换到其他格式再转回,可能丢失时间、样式或扩展字段。保留原始文件,并对导出内容重新检查。

当前解析针对常见 GPX/KML 点线结构,不是完整 XML 格式验证器;不承诺支持所有命名空间前缀、扩展标签、压缩文件或设备厂商变体。若不能读取,先导出标准 GPX 或 GeoJSON LineString 再尝试。

可下载与复制的样例

下载人工构造的三点 GPX

<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="ToolkitHub examples" xmlns="http://www.topografix.com/GPX/1/1">
  <trk><name>Synthetic three-point track</name><trkseg>
    <trkpt lat="0" lon="0"><ele>10</ele><time>2026-01-01T00:00:00Z</time></trkpt>
    <trkpt lat="0" lon="0.001"><ele>15</ele><time>2026-01-01T00:01:00Z</time></trkpt>
    <trkpt lat="0" lon="0.002"><ele>12</ele><time>2026-01-01T00:02:00Z</time></trkpt>
  </trkseg></trk>
</gpx>

常见问题

这里显示的是运动时间吗?

不是,当前时长是最早与最晚有效时间之差,包含停留。均速也包含这些停留时间。

转成 GeoJSON 后再导入,时间为什么不见了?

当前 GeoJSON 轨迹解析不读取时间数组或设备扩展字段。若要保留时间,应保留原始 GPX,并核对导出字段。

数据处理与隐私

坐标与文件的解析、转换在浏览器本地执行,不通过计算接口上传文件。地图瓦片请求可能透露查看区域,外部地图及分享链接可能携带坐标;打开或刷新带坐标参数的链接会将该网址发送给服务器,访问统计也会产生第三方请求。工作区与草稿可能保存在当前浏览器,请在共用设备上清除站点数据。 查看完整隐私政策。

格式与实现参考