TrailCam

指南

明明走的是同一段路,两个 App 显示的距离为什么不一样

两个口袋各揣一部手机走同一段路,或者把同一个文件传到两个平台,回头一看距离对不上。实际走的路明明只有一条,数字却给出两个答案,听着有点怪。原因是没有一个 App 是直接「量」出距离的——它们都是把记录下来的一个个点之间的间隔加起来,而这个「怎么加」,不同 App 之间的差别比大多数人以为的要大。

简单说

距离不是从地上读出来的数字,是事后算出来的。把记录到的点按顺序连起来,相邻两点之间的直线距离一段段加起来,就是总距离。这个加法结果取决于手里有哪些点、点与点之间隔了多久记录一次,以及在加之前有没有对这条线做过简化或者平滑处理。这三样里随便一样不同,哪怕走的是完全同一条路,算出来的总数也会不一样。

所以「为什么距离不一样」这个问题里其实藏着两个不同的问题:是同一个文件被两种方式重新算了一遍,还是两次记录本来就得到了两套不同的点。两种情况都常见,解释也不一样。

同一个文件,算出两个总数

把同一个 GPX 文件传到两个平台,数字照样能对不上,因为接收方完全可以不理会文件里带的总数,自己重新从坐标点算一遍。有的平台把每两点之间的距离原样全部加起来,有的会先把几乎在同一条直线上的点删掉一些再加,总数会因此略微变短,还有的会先把细小的锯齿抹平了再加,总数又会再短一点。这些做法没有谁对谁错,只是对「这条略带弯曲的线到底有多长」这个问题,给出的答案不太一样而已。

这正是为什么把同一个 GPX 换个平台重新上传一次,数字就可能挪个百分之一二——路线本身没变,文件内容也没变,变的是在它上面做的那道算术。

两次记录,压根就是两套不同的点

更大的差异往往出现在文件形成之前,也就是记录本身这一步。同一段路,两个 App 几乎不会记录到完全相同的点。手机的 GPS 定位落在真实位置附近几米的范围内,而不是分毫不差,这几米的抖动落在记录下来的每一个点上。把成千上万个各自带一点抖动的点两两之间的距离全部加起来,抖动不会像想的那样互相抵消,反而多半会多算出一小截原本没走过的锯齿——因为在两点之间走一条弯弯曲曲的路,长度不可能比这两点间的直线还短。

这段多出来的锯齿有多少,取决于记录间隔和有没有对噪声做平滑处理。不加平滑、每一两秒记一个点的 App,往往比记录间隔更长或者会先滤掉噪声的 App,累加出来的锯齿要多一些。这不是谁做得不对,只是「尽量留原始记录」和「留一份稍微整理过的记录」之间的取舍,不同 App 落在不同的位置上。

还有几样也在悄悄影响数字

  • 手机揣在口袋、背包还是拿在手上,决定了它能看到多干净的一片天空,也就决定了记录里混进多少抖动。
  • 把记录到的点自动「吸附」到已知步道或道路上再显示的 App,和照原始点画线的 App,算出来的距离可能不一样。
  • 有明显起伏的路段,按坡面实际长度算距离的 App 会比按地图平面投影算的显得更长——爬升和下降走过的地面,本来就比地图上那条线看起来要多。
  • 开始记录早了几秒、结束晚了几秒,原地站着不动那几秒的抖动也会被算进去,和另一个掐得更准的 App 相比就多出一点。

实际该怎么办

不用把这当成一场「哪个才是真实距离」的比赛。对一趟徒步来说,GPS 本来就不可能给出精确到米的数字,两种都算合理的测法之间有点小差异,不代表哪一个坏了。比起非要跟别的 App 对上,更值得在意的是自己前后一致——一直用同一个 App 记录,它给出的数字彼此之间就能拿来比较,哪怕永远对不上朋友的 App 或者登山口牌子上的数字。

TrailCam 会给每条路线记录距离、行进时长、配速和爬升,并且能把背后的轨迹导出成 GPX 1.1 或者 CSV,想看清楚一个总数到底是从哪些点算出来的,自己拉出来看就是了,不用只凭 App 说的数字。

常见问题

两个 App 里哪个算出来的距离才是「对的」?
通常没有谁更对。两边都是从一串带着几米噪声的 GPS 点里,按各自 App 或平台选定的方法算出来的。小小的差异是正常现象,不代表哪个出了问题。
把同一个 GPX 文件传到另一个平台,距离怎么就变了?
因为接收方常常会重新从坐标点算一遍距离,而不是直接用文件里带的总数,不同平台在加之前把线简化或者平滑掉多少,做法各不相同。
记录间隔调短一点,距离会更准吗?
不一定。间隔调短确实能更细致地捕捉路线的形状,但同时也会多拾进每个点自身的一点 GPS 抖动,没做平滑的原始总数往往因此偏大一些,而不是更接近真实距离。

记录你自己的轨迹

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

在 App Store 下载