文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/。
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/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^