GPS 坐标要精确到小数点后几位才够用?
GPX 轨迹点里的经纬度,通常带着小数点后 6 位、7 位,有时甚至 8 位数字——对一部揣在口袋里的手机测出来的坐标来说,这个精细程度看着有点说不通。位数多不代表精度高,虽然看上去像是那么回事。下面说清楚每多一位小数在实际距离上到底意味着什么,以及为什么文件会一直把位数留到远超手机 GPS 能力的地方。
先说结论
小数点后 5 位大概对应 1 米的分辨率,6 位大概对应 10 厘米——过了这个点,坐标记录的精度已经没有一台消费级 GPS 接收器能真正给出来了。可 GPX 文件通常还是会存到 6 位甚至更多,不是因为这些位数本身有意义,而是因为把它们删掉不会带来任何好处,反倒可能在后面悄悄留下代价。位数说明的是数字是怎么写出来的,不是手机当时到底知道自己站在哪儿知道得有多准。
每一位小数到底换来了什么
经纬度是用度来量的,1 度对应一段固定又巨大的距离——纬度 1 度大约是 111 公里。小数点后每多一位,这段距离就缩小到十分之一,这也是为什么多一位小数感觉差别这么大:
- 小数点后 1 位 ≈ 11.1 公里 —— 能分清这个镇和邻镇
- 小数点后 2 位 ≈ 1.11 公里 —— 能分清这个片区和邻近片区
- 小数点后 3 位 ≈ 111 米 —— 能分清这个街区和邻近街区
- 小数点后 4 位 ≈ 11.1 米 —— 能分清这栋楼和邻楼
- 小数点后 5 位 ≈ 1.1 米 —— 大致一步的距离
- 小数点后 6 位 ≈ 11 厘米 —— 比任何一台消费级 GPS 接收器实际能定位的精度还要细
经度也是同样的道理,只是每一度对应的实际距离会随着离赤道越远而缩小,因为经线是向两极收拢的。上面这张表对纬度在任何地方都基本成立,对经度在靠近赤道的地方也成立;纬度更高的地方,它更多是一个参考值,而不是精确换算。
为什么 GPX 文件还是把这些位数都留着
如果手机的 GPS 接收器只能精确到几米,坐标却存到 11 厘米这个量级,看起来像是白白多存了——从某个角度看确实如此。但这些多出来的位数并没有付出什么实质的代价:它们只是一份纯文本文件里的几个字符,把它们裁到看着"合理"的位数,并不会让底层的读数变得更准或更不准,只是丢掉了本来就在那里的信息。
真正有代价的是过度四舍五入,而这个代价出现在计算环节,不是存储环节。距离是靠把成千上万个连续点之间的差距加起来算出来的,累计爬升也是一个点一个点这样加上去的。如果在做这些运算之前就把每个坐标都四舍五入到小数点后 4 位,每一个点都会引入一点小小的、方向一致的误差——这种误差不会互相抵消,而是随着整段山行的长度一路累积下去。让坐标一直保持完整精度,只在最后的结果上四舍五入(如果真有必要的话),就能避开这个问题。
小数位数不等于精度
这些都不代表手机真的把自己的位置定到了 11 厘米这么细。小数点后的位数说明的是坐标是怎么被写出来的,不是产生这个坐标的那次定位到底有多好。一台实际误差有好几米的接收器,照样会把经纬度输出到小数点后 6 位、7 位——多出来的精细程度只是数字的表示方式,不是在替背后的定位质量打包票。真正决定这个数字离实际站立的位置有多近的,是接收器的硬件、当时的卫星几何分布,以及手机和开阔天空之间挡了什么——这跟坐标怎么格式化,完全是两码事。
真正用得上的地方
小数位数真正会带来影响的场景,是手动编辑或对比原始文件。把 GPX 用表格软件打开,很容易就想把经纬度那两列四舍五入得"整洁"一点——从小数点后 7 位改成 4 位或 5 位。这么做完再重新导出,每个点都会有一点点偏移,通常比一条山道的宽度还要小,但足以让它和原始轨迹叠在一起时,看起来不是完全同一条线。
同样的道理也能解释,为什么两个 App 导出的、本该是同一次山行的轨迹,坐标却不能逐点严丝合缝地对上。如果一个 App 在导出时四舍五入得比另一个更狠,就算走的是同一条路,坐标也对不齐——这是格式上的差异,不代表哪一条轨迹记录得更准。
容易搞错的地方
- 以为小数位数越多,GPS 定位就越准——位数说的是数字怎么写,不是定位质量的度量。
- 在表格软件里把坐标四舍五入,只为了让文件看着"干净"——这会让轨迹发生轻微偏移,一旦原来的位数被删掉就找不回来了。
- 指望两个 App 导出同一次山行时坐标能逐点完全对上——光是四舍五入方式不同,就足以解释这种细微差异,不代表哪条轨迹有问题。
- 把小数点后 6 位当成厘米级精度的证明——那只是数字能表示到的上限,不是接收器实际表现的下限。
TrailCam 在这里做的事
TrailCam 按 iPhone 的 GPS 接收器给出的精度记录每一个点,导出成 GPX 1.1 或 CSV 时都不会四舍五入,所以从 App 里导出的这条轨迹,就是山行当时记录下来的那组数字本身,不是事后被整理过的版本。导出属于可选的 TrailCam Pro,App 本身免费下载。
常见问题
- GPS 坐标实际上要精确到小数点后几位才够?
- 只要是手机或手持 GPS 接收器测出来的坐标,小数点后 5 位——大约对应 1 米——就已经超过了硬件能稳定给出的精度。6 位以上不会造成什么问题,但从那之后,多出来的位数已经不再反映接收器实际测到的任何东西。
- 把 GPX 坐标四舍五入会让文件精度变差吗?
- 可能会,但通常幅度很小。四舍五入会让每个点都发生一点点偏移,单看一个点几乎看不出来,但一次完整山行有成千上万个点,这些偏移会一路累积,尤其会影响后面基于这些点算出来的距离和海拔数字。
- 同一次山行,为什么不同 GPX 文件里的坐标会有细微差别?
- 因为不同 App 在导出时四舍五入的方式不一样。小数点后的细微差别不代表哪一条记录更准,通常只是两个 App 对数字的格式化方式不同而已。
记录你自己的轨迹
TrailCam 是一款 iPhone 上的 GPS 轨迹记录 App,会把沿途拍的视频、照片和语音钉在你拍下它的那个位置,并支持导出成 GPX 1.1 或 CSV。免费下载。