明明走的是同一段路,两个 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。免费下载。