天天看點

去百度API的百度地圖準确疊加和坐标轉換的解決方案研究

目前項目上如果要使用百度地圖,得加載百度的開發包,然後通過百度提供的接口來調用百度地圖以及将需要标記的點顯示在百度地圖中等等。

此方案存在明顯劣勢:

a.對原系統的破壞。一套從底層開發的系統,其地圖的加載方式均是從底層通過換算行列号來進行加載的。而百度地圖卻必須脫離此方案通過調用百度API來實作,破壞了整個系統的架構,并且導緻很多基于原架構的功能無法使用。

b.自身釋出的矢量服務等無法使用。因為百度采用的是非标準火星坐标,自己采集的大量shp資料如果不糾正到百度坐标系下,是無法正确疊加到百度地圖上的。這同時導緻了,當我們将shp資料進行矢量釋出後,由于從百度擷取的坐标不是該矢量服務對應的坐标系下的坐标,進而無法進行準确的查詢等功能。

c.要素展示等功能無法定制。要素展示等必須使用百度API,将要素坐标等作為參數然後在百度地圖上标記出來。這限制了要素的定制展示。

d.其他諸多問題。由于必須使用百度開發包,限制了AGS JS或OL的有效使用。

那麼,我們是否能不使用百度API,實作百度地圖的準确加載,以及實作自身圖層可以準确疊加到百度地圖上,進而使自身圖層對應的矢量服務可以正确使用?

下面我跟大家大緻介紹下目前我和一個同僚這兩周的研究成果。

如果我們能夠算出百度地圖的地圖級别、切圖原點、瓦片大小。我們便可以不使用百度的API來調用百度地圖了。

通過對百度代碼的解析,以及對标準橫軸墨卡托投影的研究,我們成功擷取了百度地圖的各個參數。

我們将坐标轉換分為了線上轉換和離線轉換,并開發了相關工具。

工具的功能是:将shp圖層導入到工具後,能将shp圖層轉換成百度坐标系下的shp圖層。

工具的原理是:建立控制點庫,利用算法,實作坐标轉換。

去百度API的百度地圖準确疊加和坐标轉換的解決方案研究

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

而且目前均是将坐标轉到百度地圖坐标系下。通過算法,我們應該是可以将百度坐标轉換到通用坐标系下,但是這裡又涉及到如何将百度地圖瓦片(栅格圖檔)糾正到通用地圖下,此難度比單純的矢量資料轉換難很多。

就目前應用來看,如果要使用百度地圖,除我們GIS部分,需要手機組、MIS組、實景組等,均需儲存的資料為百度坐标系下的坐标,如此各組對接起來才更友善。但是,此時儲存的資料為百度坐标系下的資料,該資料如果要給其他公司使用,還得進行再次反算為通用坐标系下坐标。

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

                                                                            ——歡迎轉載,但保留版權,請于明顯處标明出處:http://www.cnblogs.com/naaoveGIS/

繼續閱讀