簡談百度座標反轉至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/

                                                                           若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                                                                                  

相關文章
相關標籤/搜索