欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ArcMap和ArcGIS Pro加载百度地图

程序员文章站 2022-08-01 14:29:46
通过将百度地图适配为标准的WTMS服务在ArcMap和ArcGIS Pro中进行加载和展示,坐标完全匹配 ......

  前面发布了两篇我用arcbrutile开发用于arcmap加载百度地图的插件arcbrutilebaidu,放在网上后评论和反响还不错,还有两位大学同学通过百度搜索居然搜到我本人!文章和技术介绍也被网络上复制粘贴了很多次,开发了那么多没人用的数字城市平台软件和gis系统,这一个工具才感觉自己还有点用。

      毕竟只是茶余饭后的兴趣爱好,对该插件升级和维护的也不是很及时,也导致很多需求没跟上,对不起各位用户。

arcbrutilebaidu插件有如下几个大的缺陷:

1.    需要下载安装包进行安装,极大概率是因为环境不支持安装会不成功!

2.    由于是arcgis add-in开发,对arcmap的版本要求特别高,每个版本都要重新编译一套插件,根本就不可能每个版本都编译到,我当时还是用的一个虚拟机,安装了两个版本,arcmap 10.0和10.1,因此也就基本上只支持这两种,而且还经常出现不兼容的问题。

3.    b/s系统最怕activex,c/s系统最怕com,由于arcgisadd-in开发采用的com组件,动不动就崩溃,你有时候都很难调试问题。

4.    由于是本地安装,参数配置都是下载在本地,因此百度地图更新或参数变化,就会导致程序崩溃或地图不出来。

5.    由于当时就是玩玩,程序写的也不健壮,经常各种问题。

 

       这个东西需求很大,一直鞭策着我进行升级或重构,但本人太懒,一直拖着。最近在使用arcgispro加载天地图的wmts服务时,发现偏移的有点厉害,就深入研究和分析了下arcgis pro加载wmts服务原理和机制,因此将arcbrutilebaidu插件的思路换成将百度地图适配为标准的wmts服务,这样可以有效地解决上述缺陷。

1.    用户再也不用安装任何插件,直接使用在线服务即可。

2.    妈妈再也不用担心不同版本的arcmap了,而且还能支持最新的arcgis pro了。

3.    arcmap和arcgispro原生就支持加载wmts服务,性能好,不会崩溃了。

4.    采用在线模式,随时进行升级和参数更改。

5.   通过ogc的wmts标准服务,其它b/s系统中也可以直接调用(目前该功能尚未开放)

废话少说,直接开始讲使用教程吧

 1.    打开arcgis pro 添加wmts服务

ArcMap和ArcGIS Pro加载百度地图 添加wmts服务

2.    输入wmts服务的能力文档地址:

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

ArcMap和ArcGIS Pro加载百度地图输入wmts服务地址

3.添加图层.打开添加的wmts服务,获取其中的图层,可以看到有baidu_vec_map,这个是电子地图的,右键图层添加到当前地图中,左侧的toc就会显示该图层

ArcMap和ArcGIS Pro加载百度地图baidu_vec_map图层

4.验证坐标. 百度地图3级以下是没有瓦片的,因此显示全图时,最开始是没有地图的,可以放大几级就会出现地图了。该服务是严格根据百度地图的坐标进行换算,图上每个点坐标都很精确,我们输入百度坐标原点【00】,可以看到定位很正确。

ArcMap和ArcGIS Pro加载百度地图[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!

ArcMap和ArcGIS Pro加载百度地图bj

也就是说利用这个坐标系在上面进行数据采集和标绘,至少更百度地图肯定是可以百分百精确匹配的

6. 我们和天地图及esri的地图进行一个对比看看偏差如何。

ArcMap和ArcGIS Pro加载百度地图左边是百度地图,有便是esri的topographic地图

 

ArcMap和ArcGIS Pro加载百度地图左边是天地图,右边是百度地图

 

ArcMap和ArcGIS Pro加载百度地图放大后会发现坐标还是偏差的

由于百度地图是有自己的偏移算法的,因此任何投影都是无法一次性解决所有问题的,这也是商业使然,中国人都不喜欢按标准来搞,没办法!

但是本方法能够解决在百度地图坐标系统下能够非常精确的统一.

亲测在arcmap 10.6中也可以,截图忘记截了!