ArcMap和ArcGIS Pro加載百度地圖

  前面發佈了兩篇我用ArcBruTile開發用於ArcMap加載百度地圖的插件ArcBruTileBaidu,放在網上後評論和反響還不錯,還有兩位大學同窗經過百度搜索竟然搜到我本人!文章和技術介紹也被網絡上覆制粘貼了不少次,開發了那麼多沒人用的數字城市平臺軟件和GIS系統,這一個工具才感受本身還有點用。算法

      畢竟只是茶餘飯後的興趣愛好,對該插件升級和維護的也不是很及時,也致使不少需求沒跟上,對不起各位用戶。網絡

ArcBruTileBaidu插件有以下幾個大的缺陷:工具

1.    須要下載安裝包進行安裝,極大機率是由於環境不支持安裝會不成功!性能

2.    因爲是ArcGIS Add-In開發,對ArcMap的版本要求特別高,每一個版本都要從新編譯一套插件,根本就不可能每一個版本都編譯到,我當時仍是用的一個虛擬機,安裝了兩個版本,ArcMap 10.0和10.1,所以也就基本上只支持這兩種,並且還常常出現不兼容的問題。spa

3.    B/S系統最怕ActiveX,C/S系統最怕COM,因爲ArcGISAdd-In開發採用的COM組件,動不動就崩潰,你有時候都很難調試問題。插件

4.    因爲是本地安裝,參數配置都是下載在本地,所以百度地圖更新或參數變化,就會致使程序崩潰或地圖不出來。3d

5.    因爲當時就是玩玩,程序寫的也不健壯,常常各類問題。調試

 

       這個東西需求很大,一直鞭策着我進行升級或重構,但本人太懶,一直拖着。最近在使用ArcGISPro加載天地圖的WMTS服務時,發現偏移的有點厲害,就深刻研究和分析了下ArcGIS Pro加載WMTS服務原理和機制,所以將ArcBruTileBaidu插件的思路換成將百度地圖適配爲標準的WMTS服務,這樣能夠有效地解決上述缺陷。orm

1.    用戶不再用安裝任何插件,直接使用在線服務便可。blog

2.    媽媽不再用擔憂不一樣版本的ArcMap了,並且還能支持最新的ArcGIS Pro了。

3.    ArcMap和ArcGISPro原生就支持加載WMTS服務,性能好,不會崩潰了。

4.    採用在線模式,隨時進行升級和參數更改。

5.   經過OGC的WMTS標準服務,其它B/S系統中也能夠直接調用(目前該功能還沒有開放)

廢話少說,直接開始講使用教程吧

 1.    打開ArcGIS Pro 添加WMTS服務

  添加WMTS服務

2.    輸入WMTS服務的能力文檔地址:

http://demo.cxgis.com/wmts/baidu/vec?request=getcapabilities


輸入WMTS服務地址

3.添加圖層.打開添加的WMTS服務,獲取其中的圖層,能夠看到有Baidu_Vec_Map,這個是電子地圖的,右鍵圖層添加到當前地圖中,左側的TOC就會顯示該圖層


Baidu_Vec_Map圖層

4.驗證座標. 百度地圖3級如下是沒有瓦片的,所以顯示全圖時,最開始是沒有地圖的,能夠放大幾級就會出現地圖了。該服務是嚴格根據百度地圖的座標進行換算,圖上每一個點座標都很精確,咱們輸入百度座標原點【00】,能夠看到定位很正確。


[0,0]百度地圖座標原點定位

5.再試下百度座標定位驗證. 我愛**,咱們來看下***的定位是否正確呢。例如的經緯度大約爲116.404,39.915,通過轉換便可獲得平面座標:

varprojection =new BMap.MercatorProjection();var point = projection.lngLatToPoint(new BMap.Point(116.404, 39.915));;

12958175, 4825923.77,咱們輸入該座標定位過去,Perfect!


BJ

也就是說利用這個座標系在上面進行數據採集和標繪,至少更百度地圖確定是能夠百分百精確匹配的

6. 咱們和天地圖及ESRI的地圖進行一個對比看看誤差如何。


左邊是百度地圖,有即是Esri的Topographic地圖

 


左邊是天地圖,右邊是百度地圖

 


放大後會發現座標仍是誤差的

因爲百度地圖是有本身的偏移算法的,所以任何投影都是沒法一次性解決全部問題的,這也是商業使然,中國人都不喜歡按標準來搞,沒辦法!

可是本方法可以解決在百度地圖座標系統下可以很是精確的統一.

親測在ArcMap 10.6中也能夠,截圖忘記截了!

相關文章
相關標籤/搜索