简谈百度坐标反转至WGS84的三种思路

文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/html

1.背景

基于百度地图进行数据展现是目前项目中常见场景,可是由于百度地图是基于BD09坐标系的,GPS坐标(WGS84)或者其余常见的标准坐标是没法准确在地图上进行展现的,可是互联网在线状况下,百度提供了将WGS84经纬度转换成百度经纬度坐标的API,这里再也不对其进行研究(离线状况下也有专门方法解决)。这里,咱们探讨,如何将在百度上获取的百度坐标数据反转成WGS84坐标。算法

目前有三种通用方法来解决此问题,分别是算法逼近、偏差逼近和格网逼近方法。微信

2.算法逼近方法

百度地图坐标系的背景为首先使用国测局制定的GCJ-02,对地理位置进行首次加密,而后再利用其自创的BD-09进行二次加密措施。因此基于算法的逼近,也是进行这样的反解步骤:首先将BD09坐标转换成GCJ02坐标,而后再将GCJ02坐标反算成WGS84坐标。加密

如下为基于算法反解的详细代码:spa

 

3.偏差逼近方法

A点为百度坐标点,假设此时咱们将其看做一个WGS84坐标点A1,利用百度提供的在线WGS84坐标转换成百度经纬度坐标系的API,可获得A1’百度坐标,此时A1’与A1之间的坐标差为L。假设百度地图在2L范围的坐标其反转偏差大体相同,则咱们将真实的百度坐标A作L标准差的线性加减获得A’,最后A’则为百度坐标A反转所得的WGS84坐标。3d

                                                                          

详细代码以下:htm

 

4.网格逼近算法

该方法我在以前的博客中详细介绍过:http://www.cnblogs.com/naaoveGIS/p/5342177.htmlblog

其流程大体为:部署

a.将指定范围以100M(或更小)划分红若干格网。get

b.创建各个格网的四角坐标中WGS84坐标与百度坐标之间的对应关系。

c.判断待转换的百度点落在哪一个网格中,获取该格网的四角坐标对应的WGS84坐标。

按照该点在格网的权重算出其WGS84坐标后转换完毕。

                                                  

5.偏差对比

此三种方法皆为逼近,偏差是没法避免的,对这三种算法的偏差作了初步的统计,以下:

 

首先对比了偏差逼近方法和算法逼近方法,可见他们的平均偏差均在10M上下,其中算法逼近方法比偏差逼近方法稍微精度高一些。

而网格方法是一种偏差很稳定的方法,以100M的网格划分为例,其偏差是厘米级的,具体以下:

                                                     

6.总结

当精度要求不高,而且须要快速部署状况下,首推算法逼近方法。当须要高精度方法时,仍是须要使用网格逼近方法。

 

                         -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                           若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                                                                  

相关文章
相关标签/搜索