前面发布了两篇我用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服务

添加WMTS服务

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

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


输入WMTS服务地址

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


Baidu_Vec_Map图层

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


[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中也可以,截图忘记截了!

ArcMap和ArcGIS Pro加载百度地图的更多相关文章

  1. 更新!ArcMap和ArcGIS Pro加载百度影像地图

    上一篇文章写了ArcMap和ArcGIS Pro中加载百度地图 的方法 一次没有把百度影像加载的功能开发出来,趁这几天有空整理了下 加载方法按照上次那篇文章操作. 百度影像wmts加载地址:http: ...

  2. (转) Arcgis for js加载百度地图

    http://blog.csdn.net/gisshixisheng/article/details/44853709 概述: 在前面的文章里提到了Arcgis for js加载天地图,在本节,继续讲 ...

  3. Arcgis for js加载百度地图

    看转:https://blog.csdn.net/qq_41046162/article/details/80248281 通过学习了一段时间的arcgis for js,让我来讲一下如何在arcgi ...

  4. Delphi中用Webbrowser加载百度地图滚轮失效(ApplicationEvents里使用IsChild提前判断是哪个控件的消息)

    在Delphi中使用Webbrowser加载百度地图时,点击了其它界面,再回到百度地图中,即使点击了鼠标,再用滚轮也不能缩 放地图,除非点地图里面的自带的控件,之后才能缩放,原因是因为其它窗体控件获得 ...

  5. arcgis JavaScript 加载 mapbox地图

    mapbox 地图现在是越来越好看了, 随便试 /** * Created by Administrator on 2018/5/15 0015. */ import * as esriLoader ...

  6. 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法

    报告的错误信息 ld: warning: ignoring file /Users/5012/Documents/sphuang/IOS_project/baidu_map/ShareLocation ...

  7. 在bootstrap modal 中加载百度地图的信息窗口失效解决方法

    这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:ht ...

  8. openlayers加载百度地图

    最近在做openlayers添加百度地图的扩展类,经过轮番的尝试,终于将其接入了,但是发现偏差比较大,有根据百度的坐标进行了比对,将切片原点进行了调整,发现OK了.打开百度地图,可以看出切片的路径如: ...

  9. Vue中加载百度地图

    借助百度地图的 LocalSearch 和 Autocomplete 两个方法 实现方式:通过promise以及百度地图的callback回调函数 map.js 1 export function M ...

随机推荐

  1. 【HDOJ】2007平方和与立方和

    Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和.   Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成.   ...

  2. Redis(一)--- 概述

    使用redis很长时间了,但只是限于使用,一直也没有进行系统的学习与底层研究,现系统的学习一下redis并记录笔记. Redis 1.Nosql 非关系型数据库,key-value键值对存贮. 2.内 ...

  3. C#学习书单

    [入门] (1)<C#入门经典> (2)<牛腩新闻发布系统> [深入] (1)<CLR via C#(第4版)> (2)<深入理解C#(第3版)> [C ...

  4. 史上最全IO流详解,看着一篇足矣

    一:要了解IO,首先了解File类 File类里面的部分常量,方法 No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径 ...

  5. git rebase 理解

    摘录自:https://blog.csdn.net/wangnan9279/article/details/79287631

  6. PHP与ECMAScript_4_常用数学相关函数

    PHP ECMAScript 向上取整 ceil($number) Math.ceil( number ) 向下取整 floor($number) Math.floor( number ) 绝对值 a ...

  7. 使用secureCRT上传下载

    secureCRT 的 下载 http://pan.baidu.com/s/1c1Mz1ks 下载完成后,输入yum install lrzsz,安装这个东西, 然后就可以直接在secureCRT中输 ...

  8. 【iOS】设置 rootViewController

    iOS 开发中,rootViewController 经常用到,示例代码如下: self.window = [[UIWindow alloc] initWithFrame:[UIScreen main ...

  9. Python开发异步任务Celery的使用教程!

    1. 生产者消费者设计模式 最常用的解耦方式之一,寻找中间人(broker)搭桥,保证两个业务没有直接关联.我们称这一解耦方式为:生产者消费者设计模式 2.中间人broker 示例:此处演示Redis ...

  10. [ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件对话框

    本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...