有人发现GPS定位器后台显示的位置,在地图上对不准,看着明明在路上跑,地图里却显示开到了旁边的建筑物里。这个问题让很多人以为是设备精度太差,其实根本原因出在坐标系上,和精度关系不大。
地球上的位置可以用多种不同的坐标系来表达,不同坐标系之间的同一个物理地点,坐标数值是不一样的,而且差距可能大到几十甚至几百米。GPS系统本身使用的是一种叫WGS-84的国际通用大地坐标系,这是一套以地球质心为原点建立的参考框架,全球统一。
国内互联网地图使用的则是GCJ-02坐标系,也叫火星坐标系,这是国家测绘部门规定的国内电子地图标准坐标系。GCJ-02在WGS-84的基础上进行了一套非线性加密偏移,偏移量因位置不同而异,不是一个固定值,在国内大部分地区偏移量在几十到几百米之间。
所以,如果定位器输出的是原始WGS-84坐标,直接叠加到国内互联网地图上,就会出现看着偏移的现象。正规的定位平台都会在后台做坐标转换,把原始坐标自动转换到地图所使用的坐标系后再展示。如果你发现位置对不准,先检查平台是否做了正确的坐标系转换,而不是马上下结论说精度有问题。
如果你在开发自己的应用程序需要处理GPS坐标,或者想把定位数据迁移到不同平台,坐标系转换就是绕不开的技术课题。网上有开源的坐标转换代码库,实现三套坐标系之间的相互转换,直接拿来用就行,不需要自己推算转换公式。
转自:互联网