去百度API的百度地圖準確疊加和座標轉換的解決方案研究

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

1.背景

目前項目上若是要使用百度地圖,得加載百度的開發包,而後經過百度提供的接口來調用百度地圖以及將須要標記的點顯示在百度地圖中等等。微信

此方案存在明顯劣勢:架構

a.對原系統的破壞。一套從底層開發的系統,其地圖的加載方式均是從底層經過換算行列號來進行加載的。而百度地圖卻必須脫離此方案經過調用百度API來實現,破壞了整個系統的架構,而且致使不少基於原架構的功能沒法使用。工具

b.自身發佈的矢量服務等沒法使用。由於百度採用的是非標準火星座標,本身採集的大量shp數據若是不糾正到百度座標系下,是沒法正確疊加到百度地圖上的。這同時致使了,當咱們將shp數據進行矢量發佈後,因爲從百度獲取的座標不是該矢量服務對應的座標系下的座標,從而沒法進行準確的查詢等功能。blog

c.要素展現等功能沒法定製。要素展現等必須使用百度API,將要素座標等做爲參數而後在百度地圖上標記出來。這限制了要素的定製展現。接口

d.其餘諸多問題。因爲必須使用百度開發包,限制了AGS JS或OL的有效使用。圖片

那麼,咱們是否能不使用百度API,實現百度地圖的準確加載,以及實現自身圖層能夠準確疊加到百度地圖上,從而使自身圖層對應的矢量服務能夠正確使用?開發

下面我跟你們大體介紹下目前我和一個同事這兩週的研究成果。get

2.解決方案

2.1 百度地圖非API引用

若是咱們可以算出百度地圖的地圖級別、切圖原點、瓦片大小。咱們即可以不使用百度的API來調用百度地圖了。博客

經過對百度代碼的解析,以及對標準橫軸墨卡託投影的研究,咱們成功獲取了百度地圖的各個參數。

2.2 座標轉換

咱們將座標轉換分爲了在線轉換和離線轉換,並開發了相關工具。

工具的功能是:將shp圖層導入到工具後,能將shp圖層轉換成百度座標系下的shp圖層。

工具的原理是:創建控制點庫,利用算法,實現座標轉換。

3.成果展現

                       

4.問題

目前該成果還未用到項目中,有諸多地方須要改進或研究或實現:好比工具效率、精度釐米級上的提高、自制的百度瓦片下載工具等。

並且目前均是將座標轉到百度地圖座標系下。經過算法,咱們應該是能夠將百度座標轉換到通用座標系下,可是這裏又涉及到如何將百度地圖瓦片(柵格圖片)糾正到通用地圖下,此難度比單純的矢量數據轉換難不少。

就目前應用來看,若是要使用百度地圖,除咱們GIS部分,須要手機組、MIS組、實景組等,均需保存的數據爲百度座標系下的座標,如此各組對接起來才更方便。可是,此時保存的數據爲百度座標系下的數據,該數據若是要給其餘公司使用,還得進行再次反算爲通用座標系下座標。

可見,大項目上使用仍是有諸多不便的。不過,這個問題是使用百度地圖的通用問題,跟咱們是否進行了去百度API化無關。

 

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

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

                                  

相關文章
相關標籤/搜索