为什么app上显示的跑步轨迹会出现偏移

更新时间:2023-12-31

常用坐标系

坐标系 说明 使用地图
WGS84 大地坐标系国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系 GPS/谷歌地图卫星
GCJ02 俗称"火星坐标系",是由中国国家测绘局制订的地理信息系统的坐标系统。并要求在中国使用的地图产品使用的都必须是加密后的坐标,而这套WGS84加密后的坐标就是GCJ02 腾讯(搜搜)地图,阿里云地图,高德地图,谷歌国内地图
BD09 百度坐标系,百度在GCJ02的基础上进行了二次加密,官方解释是为了进一步保护用户隐私 百度地图

以上信息来源于网络,如有错误请指正。

如果还有其他坐标系的话,可能就更小众了,基本也是类似百度坐标系的二次加密坐标系。

偏移原因

既然中国国家测绘局规定在中国使用的地图产品必须使用加密后的坐标,那么在中国使用的地图产品就不得直接使用WGS84,都是用的经过加密后的某一坐标系,这也就是为什么在国内使用谷歌地图卫星图(WGS84)时,会发现自己的位置偏移了几百米的原因。

简单说,偏移的原因就是坐标系不一致

解决方案

既然偏移的原因是坐标系不一致,那么解决方案就是坐标系转换,将自己使用的坐标系改成和app一致即可。

目前已知华为导出的运动记录里面经纬度是GCJ02坐标系的,高驰APP使用的是高德地图。 佳明特殊点,connect中国版的用的是百度地图,Google Play版用的是谷歌地图;佳速度app,是国内app,但是用的是高德地图。。。

佳明connect中国版

佳明connect Google Play版

佳明佳速度

运动健康转换工具付费在转换华为运动记录时,会将经纬度转换成WGS84坐标系,这样再导入高驰和佳明中国就不会出现偏移了。

案例

最近还是发现了轨迹偏移的情况,经过分析发现,有偏移的几条记录是跑友在香港的跑步记录。

漂移的

正常的

推测华为导出的香港运动记录的经纬度就是WGS84坐标系的,如果此时再将它当成GCJ02坐标系再转一次就会出现偏移了,应该直接使用华为的经纬度即可,实际验证结果也跟猜想的一致。

那转换工具什么时候需要将华为记录进行GCJ02坐标系转WGS84坐标系呢?

目前没有明确的依据,猜测是在中国大陆境内的记录需要转换,其它的本身就是WGS84坐标系,所以不需要转换。

怎么通过经纬度判断是在中国大陆境内呢?

这个可以借助高德地图提供的api,根据经纬度查询出对应的地址名称,然后通过名称来判断是否是在中国大陆省份。

2023-12-20修正

华为导出的运动记录有字段标识gps信息的供应商以及对应的坐标系 大陆境内的记录显示供应商是AMAP,坐标系是GCJ02,那条香港的记录显示供应商是HMS,坐标系是WGS84,可以直接据此判断是否需要进行坐标系转换即可

累计响应转换请求 997 次,转换运动记录 467634

641

运动健康转换工具

鄂ICP备2020023502号-5