文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/html
基於百度地圖進行數據展現是目前項目中常見場景,可是由於百度地圖是基於BD09座標系的,GPS座標(WGS84)或者其餘常見的標準座標是沒法準確在地圖上進行展現的,可是互聯網在線狀況下,百度提供了將WGS84經緯度轉換成百度經緯度座標的API,這裏再也不對其進行研究(離線狀況下也有專門方法解決)。這裏,咱們探討,如何將在百度上獲取的百度座標數據反轉成WGS84座標。算法
目前有三種通用方法來解決此問題,分別是算法逼近、偏差逼近和格網逼近方法。微信
百度地圖座標系的背景爲首先使用國測局制定的GCJ-02,對地理位置進行首次加密,而後再利用其自創的BD-09進行二次加密措施。因此基於算法的逼近,也是進行這樣的反解步驟:首先將BD09座標轉換成GCJ02座標,而後再將GCJ02座標反算成WGS84座標。加密
如下爲基於算法反解的詳細代碼:spa
A點爲百度座標點,假設此時咱們將其看做一個WGS84座標點A1,利用百度提供的在線WGS84座標轉換成百度經緯度座標系的API,可獲得A1’百度座標,此時A1’與A1之間的座標差爲L。假設百度地圖在2L範圍的座標其反轉偏差大體相同,則咱們將真實的百度座標A作L標準差的線性加減獲得A’,最後A’則爲百度座標A反轉所得的WGS84座標。3d
詳細代碼以下:htm
該方法我在以前的博客中詳細介紹過:http://www.cnblogs.com/naaoveGIS/p/5342177.html。blog
其流程大體爲:部署
a.將指定範圍以100M(或更小)劃分紅若干格網。get
b.創建各個格網的四角座標中WGS84座標與百度座標之間的對應關係。
c.判斷待轉換的百度點落在哪一個網格中,獲取該格網的四角座標對應的WGS84座標。
按照該點在格網的權重算出其WGS84座標後轉換完畢。
此三種方法皆爲逼近,偏差是沒法避免的,對這三種算法的偏差作了初步的統計,以下:
首先對比了偏差逼近方法和算法逼近方法,可見他們的平均偏差均在10M上下,其中算法逼近方法比偏差逼近方法稍微精度高一些。
而網格方法是一種偏差很穩定的方法,以100M的網格劃分爲例,其偏差是釐米級的,具體以下:
當精度要求不高,而且須要快速部署狀況下,首推算法逼近方法。當須要高精度方法時,仍是須要使用網格逼近方法。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^