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服务
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加载百度地图的更多相关文章
- 更新!ArcMap和ArcGIS Pro加载百度影像地图
上一篇文章写了ArcMap和ArcGIS Pro中加载百度地图 的方法 一次没有把百度影像加载的功能开发出来,趁这几天有空整理了下 加载方法按照上次那篇文章操作. 百度影像wmts加载地址:http: ...
- (转) Arcgis for js加载百度地图
http://blog.csdn.net/gisshixisheng/article/details/44853709 概述: 在前面的文章里提到了Arcgis for js加载天地图,在本节,继续讲 ...
- Arcgis for js加载百度地图
看转:https://blog.csdn.net/qq_41046162/article/details/80248281 通过学习了一段时间的arcgis for js,让我来讲一下如何在arcgi ...
- Delphi中用Webbrowser加载百度地图滚轮失效(ApplicationEvents里使用IsChild提前判断是哪个控件的消息)
在Delphi中使用Webbrowser加载百度地图时,点击了其它界面,再回到百度地图中,即使点击了鼠标,再用滚轮也不能缩 放地图,除非点地图里面的自带的控件,之后才能缩放,原因是因为其它窗体控件获得 ...
- arcgis JavaScript 加载 mapbox地图
mapbox 地图现在是越来越好看了, 随便试 /** * Created by Administrator on 2018/5/15 0015. */ import * as esriLoader ...
- 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法
报告的错误信息 ld: warning: ignoring file /Users/5012/Documents/sphuang/IOS_project/baidu_map/ShareLocation ...
- 在bootstrap modal 中加载百度地图的信息窗口失效解决方法
这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:ht ...
- openlayers加载百度地图
最近在做openlayers添加百度地图的扩展类,经过轮番的尝试,终于将其接入了,但是发现偏差比较大,有根据百度的坐标进行了比对,将切片原点进行了调整,发现OK了.打开百度地图,可以看出切片的路径如: ...
- Vue中加载百度地图
借助百度地图的 LocalSearch 和 Autocomplete 两个方法 实现方式:通过promise以及百度地图的callback回调函数 map.js 1 export function M ...
随机推荐
- 爬虫的盗亦有道Robots协议
爬虫的规定 Robots协议 网站开发者对于网络爬虫的规范的公告,你可以不遵守可能存在法律风险,但尽量去遵守 Robots协议:在网页的根目录+robots.txt Robots协议的基本语法: #注 ...
- C#7.2 新增功能
连载目录 [已更新最新开发文章,点击查看详细] C# 7.2 又是一个单点版本,它增添了大量有用的功能. 此版本的一项主要功能是避免不必要的复制或分配,进而更有效地处理值类型. C# 7.2 使 ...
- 学习git使用网址
如何将本地项目上传到Github (随梦飞翔) https://www.cnblogs.com/smfx1314/p/8426115.html git学习 GUI https://blog.csdn. ...
- LiteDB源码解析系列(2)数据库页详解
在这一篇里,我将用图文的方式展示LiteDB中页的结构及作用,内容都是原创,在描述的过程中有不准确的地方烦请指出. 1.LiteDB页的技术工作原理 LiteDB虽然是单个文件类型的数据库,但是数据库 ...
- 73种网页常用Javascript代码
73种网页常用Javascript代码 转载自:前端丶灵魂工程师 1.后退 前进 <input type="button" value="后退" o ...
- mysql中的SQL语句执行的顺序
1. from2. on3. join4. where5. group by6. with7. having8. select9. distinct10. order by11. limit 例: s ...
- Linux平台 Oracle 19c RAC安装Part1:准备工作
一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二.安装前期准备工作 2.1 各节点系统时间校对 2.2 各节点关闭防火墙和 ...
- 2. 源码分析---SOFARPC客户端服务引用
我们先上一张客户端服务引用的时序图. 我们首先来看看ComsumerConfig的refer方法吧 public T refer() { if (consumerBootstrap == null) ...
- MyBatis之#{} and ${}
#{} 和 ${} 之间最大的差别就是 #{}会在使用的时候被加上 ‘’ 引号, ${}直接传值,不做任何处理 1.#{}对传入的参数会做预编译,也就是会当做字符串来处理 select * from ...
- 大陆争霸[SDOI2010]带限制最短路
只要你有无限个自爆机器人,你就能为所欲为 斯普林·布拉泽 [题目描述] 略 一句话题意: 杰森国有 \(N\) 个城市,由 \(M\) 条单向道 路连接.杰森国的首都是城市 \(N\).你只需摧毁杰森 ...