簡談百度坐標反轉至WGS84的三種思路


文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

1.背景

基於百度地圖進行數據展示是目前項目中常見場景,但是因為百度地圖是基於BD09坐標系的,GPS坐標(WGS84)或者其他常見的標准坐標是無法准確在地圖上進行展示的,但是互聯網在線情況下,百度提供了將WGS84經緯度轉換成百度經緯度坐標的API,這里不再對其進行研究(離線情況下也有專門方法解決)。這里,我們探討,如何將在百度上獲取的百度坐標數據反轉成WGS84坐標。

目前有三種通用方法來解決此問題,分別是算法逼近、誤差逼近和格網逼近方法。

2.算法逼近方法

百度地圖坐標系的背景為首先使用國測局制定的GCJ-02,對地理位置進行首次加密,然后再利用其自創的BD-09進行二次加密措施。所以基於算法的逼近,也是進行這樣的反解步驟:首先將BD09坐標轉換成GCJ02坐標,然后再將GCJ02坐標反算成WGS84坐標。

以下為基於算法反解的詳細代碼:

 

3.誤差逼近方法

A點為百度坐標點,假設此時我們將其看作一個WGS84坐標點A1,利用百度提供的在線WGS84坐標轉換成百度經緯度坐標系的API,可得到A1’百度坐標,此時A1’與A1之間的坐標差為L。假設百度地圖在2L范圍的坐標其反轉誤差大致相同,則我們將真實的百度坐標A做L標准差的線性加減得到A’,最后A’則為百度坐標A反轉所得的WGS84坐標。

                                                                          

詳細代碼如下:

 

4.網格逼近算法

該方法我在之前的博客中詳細介紹過:http://www.cnblogs.com/naaoveGIS/p/5342177.html

其流程大致為:

a.將指定范圍以100M(或更小)划分成若干格網。

b.建立各個格網的四角坐標中WGS84坐標與百度坐標之間的對應關系。

c.判斷待轉換的百度點落在哪個網格中,獲取該格網的四角坐標對應的WGS84坐標。

按照該點在格網的權重算出其WGS84坐標后轉換完畢。

                                                  

5.誤差對比

此三種方法皆為逼近,誤差是無法避免的,對這三種算法的誤差做了初步的統計,如下:

 

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

而網格方法是一種誤差很穩定的方法,以100M的網格划分為例,其誤差是厘米級的,具體如下:

                                                     

6.總結

當精度要求不高,並且需要快速部署情況下,首推算法逼近方法。當需要高精度方法時,還是需要使用網格逼近方法。

 

                         -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

                                                                           如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                                                                                  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM