1.背景
目前項目上如果要使用百度地圖,得加載百度的開發包,然後通過百度提供的接口來調用百度地圖以及將需要標記的點顯示在百度地圖中等等。
此方案存在明顯劣勢:
a.對原系統的破壞。一套從底層開發的系統,其地圖的加載方式均是從底層通過換算行列號來進行加載的。而百度地圖卻必須脫離此方案通過調用百度API來實現,破壞了整個系統的架構,並且導致很多基於原架構的功能無法使用。
b.自身發佈的矢量服務等無法使用。因爲百度採用的是非標準火星座標,自己採集的大量shp數據如果不糾正到百度座標系下,是無法正確疊加到百度地圖上的。這同時導致了,當我們將shp數據進行矢量發佈後,由於從百度獲取的座標不是該矢量服務對應的座標系下的座標,從而無法進行準確的查詢等功能。
c.要素展示等功能無法定製。要素展示等必須使用百度API,將要素座標等作爲參數然後在百度地圖上標記出來。這限制了要素的定製展示。
d.其他諸多問題。由於必須使用百度開發包,限制了AGS JS或OL的有效使用。
那麼,我們是否能不使用百度API,實現百度地圖的準確加載,以及實現自身圖層可以準確疊加到百度地圖上,從而使自身圖層對應的矢量服務可以正確使用?
下面我跟大家大致介紹下目前我和一個同事這兩週的研究成果。
2.解決方案
2.1 百度地圖非API引用
如果我們能夠算出百度地圖的地圖級別、切圖原點、瓦片大小。我們便可以不使用百度的API來調用百度地圖了。
通過對百度代碼的解析,以及對標準橫軸墨卡託投影的研究,我們成功獲取了百度地圖的各個參數。
2.2 座標轉換
我們將座標轉換分爲了在線轉換和離線轉換,並開發了相關工具。
工具的功能是:將shp圖層導入到工具後,能將shp圖層轉換成百度座標系下的shp圖層。
工具的原理是:建立控制點庫,利用算法,實現座標轉換。
3.成果展示
4.問題
目前該成果還未用到項目中,有諸多地方需要改進或研究或實現:比如工具效率、精度釐米級上的提升、自制的百度瓦片下載工具等。
而且目前均是將座標轉到百度地圖座標系下。通過算法,我們應該是可以將百度座標轉換到通用座標系下,但是這裏又涉及到如何將百度地圖瓦片(柵格圖片)糾正到通用地圖下,此難度比單純的矢量數據轉換難很多。
就目前應用來看,如果要使用百度地圖,除我們GIS部分,需要手機組、MIS組、實景組等,均需保存的數據爲百度座標系下的座標,如此各組對接起來才更方便。但是,此時保存的數據爲百度座標系下的數據,該數據如果要給其他公司使用,還得進行再次反算爲通用座標系下座標。
可見,大項目上使用還是有諸多不便的。不過,這個問題是使用百度地圖的通用問題,跟我們是否進行了去百度API化無關。
——歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/