TrailCam

指南

为什么在别处打开 GPX 文件,距离会不一样?

因为 GPX 文件本来就没有存过"距离"这个数值——它存的是一串点,打开它的那个程序得自己重新把总距离加出来。一条 GPX 轨迹就是一个个点,每个点有经纬度,通常还有海拔和时间,格式里从来没有"总距离"这一项。徒步结束时显示的数字,和另一个程序导入之后显示的数字,是从同一批原始点出发做的两次独立计算,不是文件里带着一个数字被传来传去。两者之间出现一点点差异几乎是必然的;差距特别大才值得留意,但原因往往和大家想的不一样。

简单说

GPX 文件是一串轨迹点,每个点有经纬度,通常还带海拔和时间。距离从来不是其中存好的一个值。任何显示距离的程序——包括当初录制的那个 App 自己——都是把点按顺序过一遍,把相邻两点之间的直线距离一段段加起来,自己算出来的。同样一批点,两个程序分别去加,只要中间处理方式稍有不同,加出来的总数就可能不一样。这就是文件换个地方打开、数字就会变的全部原因。

GPX 文件里到底存了什么

用文本编辑器打开一个 GPX 文件,看到的就是一串点,每个点带着经纬度,通常还有海拔和时间,基本上仅此而已。文件里没有一个不断累加的里程表,没有配速曲线,也没有标记哪一段在走、哪一段在停。距离、配速、移动时间、爬升这些比原始位置更进一步的数字,都是之后由某个程序看着这些点算出来的,不是文件本身随身带着的存储值。

这不是格式的疏漏,而是刻意划的一条线。GPX 记录的是设备在一串时刻各自在哪里,至于从这条路径里读出多远、多快、爬升多少,全都留给之后打开文件的那个程序自己去解读。

为什么加同样的点,两个程序算出来会不一样

把相邻点之间的直线距离加起来,听起来应该只有一个正确答案,如果这批点完全干净的话确实如此。实际录到的 GPS 轨迹很少完全干净。任何一条轨迹里都会混进去几个稍微偏离实际位置的点,而怎么处理这几个点,直接决定了加出来的总数。有的程序不管三七二十一,把记录下来的每个点原样加进去;有的程序会先把看起来像噪点的东西——比如一步之内不可能出现的孤立跳跃——过滤或者拉平一下,再去加。这两种做法没有哪个绝对更"对",都只是面对同一批含糊数据时不同的取舍,取舍不同,加出来的总数自然也不同。

当初录制的那个 App,在录制的那一刻往往掌握着一些之后完全不会写进导出文件里的信息——比如每个定位的实时精度估计,或者设备自己判断"现在是不是在移动"。这些辅助信息都不属于 GPX 格式的一部分,所以文件一旦导出,另一个程序就只能拿裸的点去算,原本录制时那套实时过滤就用不上了。这种能拿到的信息不对等,才是两个总数对不上的主要原因,并不是谁算错了。

什么情况下差距会明显变大

差距只占总距离很小一部分,是正常现象,不值得深究,反映的就是上面说的那种日常的小分歧。差距明显偏大,通常能追到一个具体原因:文件里有那么几个点,明显偏离了实际路线,常见于刚开始录制的那一刻、信号短暂中断,或者树冠特别密的一段。不加分辨、把每个点都原样加进去的程序,会把那一次夸张的跳跃原封不动算进总数;先把异常点挑出来的程序则不会。两边看到的点其实是同一批,区别只在于怎么处理那个异常值。

导出成 CSV 也会遇到同样的情况吗?

会,原因是一样的。CSV 导出同样只是一张按行排列的记录点表格,并不存着一个算好的距离总数。拿到表格软件里去把行与行之间的距离加起来,和在别处打开 GPX 文件是同一类事后计算,加的方式一变,总数自然也会跟着有点出入。

容易搞错的地方

  • 看到在别处打开后数字变了,就认定导出本身坏了——文件通常打开得好好的,只是两个程序各自拿原始点独立算了一遍。
  • 默认数字大的那个才是"对的"——数字大并不代表更准,很可能只是一方把异常点留了下来,另一方悄悄把它去掉了。
  • 以为导出文件里也会带着原来那个 App 显示的距离总数——GPX 和 CSV 存的都是点,不是算好的距离数字,所以别的程序根本没有现成的数字可以直接读。
  • 把百分之几的差距当成故障来追查——这种程度的出入,就是两个不同程序各自面对同样不完美的点、做出各自的取舍之后,再正常不过的结果。

TrailCam 在这里的角色

TrailCam 可以把轨迹导出成 GPX 1.1——Strava、Garmin Connect、Komoot 都读得懂的格式——也可以导出成 CSV,这两项都属于可选的 TrailCam Pro。不管哪种导出,带走的都是记录下来的点本身——位置、海拔、时间——而不是一个算好的距离数字,所以之后拿去哪里打开,都会像任何其他程序一样重新自己算一遍总数。TrailCam 本身免费下载。

常见问题

GPX 文件里存着徒步的总距离吗?
不存。存的是一串点——经纬度,通常还有海拔和时间。距离永远是打开文件的程序自己算出来的,不是文件里存好的一个值。
App 里的距离和导出后的距离,该信哪一个?
不存在哪一个绝对更准。小的差距来自两个程序对同一批点各自略有不同的加法方式,是正常现象。差距很大的话,值得去看看是不是有明显的异常点,但这并不能说明哪一个总数是坏的。
导出成 CSV 而不是 GPX,能避开这个问题吗?
不能,原因是一样的。CSV 导出同样只是记录点的表格,而不是算好的距离数字,拿到别处打开,同样会是一次独立的重新计算,跟 GPX 文件的情况没有区别。

记录你自己的轨迹

TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。

在 App Store 下载