明明走的是平路,爬升数字为什么还是很高
沿运河走的步道、环湖一圈、废弃铁道改成的小径——这种腿从头到尾都没感觉到一丝坡度的路,App 最后却报出四十米、八十米,有时甚至超过一百米的累计爬升。地面什么都没爬。这个数字是「真」的,因为它确实是从手机记录到的数据里正确算出来的;但它又是误导人的,因为里面绝大部分跟地面实际的起伏没什么关系。
先说结论
GPS 测的高度,哪怕人站在完全平坦的地面上一动不动,也会自己上下飘一两米,因为垂直方向的位置本来就是手机 GPS 里精度最差的一项。爬升不是最高点和最低点的差,而是把路线上每一次「往上走的瞬间」全部加在一起。走在平路上时,这种细小的随机抖动大约一半会被记成「向上」。一段又长又平又走得不急的路,把这些抖动一点点累积起来,它就不再像噪声了,反而看起来像一座根本不存在的小山。
腿觉得平的路,GPS 未必觉得平
走路是个很好的坡度判断器:地面稍微一斜,腿上用的力马上就知道。手机没有这种感觉。它算高度靠的是头顶那些卫星的几何分布——能看见的卫星永远在上空某处,不会有一颗从地平线以下帮着约束高度,所以高度天生就比东西、南北方向的位置更难测准。结果就是,哪怕这段地面在走路的人看来千真万确是平的,原始高度读数在相邻两个时刻之间还是会飘个一两米。
这种抖动平均下来是围着真实高度对称分布的,不是朝一个方向慢慢漂移的。可偏偏是这种对称的噪声,才会算出一个偏向一边的总和——这跟手机测错了没关系。
噪声本身不偏不倚,为什么加总之后会偏高
爬升的算法是这样的:把轨迹上的点一个一个按顺序过一遍,只要相邻两点之间高度上升了,就把差值加进总数;下降了就直接丢掉,不计入任何一边。问题就出在这个「只加上升、不减下降」的不对称上。一枚概率对半开的硬币,如果只数正面朝上的次数、每次反面都直接不算,正面的计数照样会越滚越大。噪声爬升算法对着一串带噪声的高度数据做的,正是同一件事——每一次向下的抖动都被直接丢掉,而不是去抵消它前后那次向上的抖动,所以累加的总数只会往上走,不会往下走。
单独一次抖动看不出什么。可一段很长的平路走下来,这样的抖动积累了几百次,地面明明一次都没动过,手机记录的平均高度也几乎没变,总数却肉眼可见地涨上去了。
为什么平路走得越久,数字反而越大
因为要加总的点变多了。同一段平路,匆匆走十分钟,可能只捕捉到寥寥几个带噪声的读数,多算出来的爬升不过几米;换成同一段平地,手机每分钟记好几个高度点,慢悠悠走上三个小时,并不是路变陡了,而是随机抖动落到总数「向上」那一边的机会成倍增加。这里走了多远其实关系不大,真正推高数字的是在这段平路上记录了多长时间。
阈值过滤能压低数字,但压不到零
几乎所有报爬升的 App 都会做一层降噪:把小于某个阈值——常见是几米——的变化直接忽略,不计入总数。这也是为什么平路上的爬升很少像原始高度抖动那么夸张。但这也解释了它为什么很少刚好是零:阈值定低了,连噪声都会被当成爬升;定高了,一段本来就有点起伏的路上真实的小上坡,又会跟着噪声一起被扔掉。没有哪个阈值能把两者完美分开,能做到的只是取舍。这也是为什么在所有徒步数据里,爬升是最该当参考、而不是当准确数字来看的一项。
什么时候值得多看一眼
- 一段平路的爬升有几十米,数值大致跟记录时长成正比,跟印象里的起伏对不上——这就是上面说的正常情况,不是记录出了问题。
- 地图上的海拔曲线是一条密密麻麻的平坦锯齿,而不是偶尔冒个真实小坡的顺滑曲线——看到的是同一批噪声,只是这次是直接看曲线,而不是看加总之后的数字。
- 爬升数字大到几百米,而这段地面确定一次都没往上走过——这值得对着地图核实一下,而不是直接归为噪声,因为也有可能是某一刻 GPS 高度突然跳了一下,而不是普通的抖动。
- 同一段平坦环线,一次走得快、一次走得慢,两次的爬升数字明显不一样——这是意料之中的,原因跟走得越久噪声越多是同一个;这种地形下,比较几次行程更适合看距离和行进时长,而不是爬升。
和 TrailCam 的关系
TrailCam 会给每条记录的路线画出爬升曲线,放在地图下方,不管是正在记录还是之后回放都能看到,导出成 GPX 1.1 或 CSV 时也会带上,和距离、行进时长、配速放在一起。一段沿运河走的平路,最后爬升数字不是零、但也就那么一点,这是上面说的 GPS 高度数据的正常表现,不代表记录出了差错。App 免费下载。
常见问题
- 平路上的爬升数字,是不是一直都是错的?
- 算法本身没有算错——它确实是把手机记录到的高度数据老老实实加总出来的。误导人的地方在于,这些记录到的高度变化里,大部分是 GPS 噪声,不是真的在爬,而这是垂直方向 GPS 精度本身固有的性质,不是某个 App 的毛病。
- 同一段平路,为什么走得慢一些爬升反而更高?
- 因为爬升算法是把记录里每一次向上的区间都加起来的。同一段地面,记录时间越长,采到的点就越多,普通的高度抖动落到总数「向上」那一边的机会也就越多。地面没变,变的是采样点的数量。
- App 能不能把这种噪声完全过滤掉?
- 不能完全过滤掉。App 一般是设一个阈值,忽略小于它的变化再加总,这样能把影响压小,但没法在不连带丢掉缓坡上真实小起伏的前提下,把这个效应彻底消除——没有哪种设置能完美分清两者。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。