(转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...
1 arcgis加载天地图和wmts服务
arcgis for js加载天地图的例子网上有很多,这里先不写了,后期有空再贴代码,这里主要分析下WMTS服务为什么不显示,怎么解决。
条件:这里的WMTS服务是OGC标准的,需要使用WMTSLayer类来实例化图层。
问题:天地图和自己的WMTS只能显示一个,即先加载哪个,就只显示哪个,而另外一个图层不会显示。
原因:天地图服务和自己的WMTS服务的切片矩阵集不同导致。下面多点废话详细分析一下,因为我对各服务了解的很浅,如果有错误请批评指正。
WMTS服务是切片服务,相比WMS而言,牺牲定制地图的灵活性来提升性能,这对前端展示很有用,因为用户缩放或移动地图后,很快就能将切片的影像渲染出来。引用一段百度百科的文字来说明WMTS:
WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对提供可定制地图的服务,是一个动态数据或用户定制地图(需结合SLD标准)的理想解决办法。WMTS牺牲了提供定制地图的灵活性,代之以通过提供静态数据(基础地图)来增强伸缩性,这些静态数据的范围框和比例尺被限定在各个图块内。这些固定的图块集使得对WMTS服务的实现可以使用一个仅简单返回已有文件的Web服务器即可,同时使得可以利用一些标准的诸如分布式缓存的网络机制实现伸缩性。
- 1
- 2
而当在arcgis for js中加载esri提供的底图或天地图底图时,底图与我们自己的WMTS服务缩放级别与每块切片大小不一致。比如底图缩放2及时,将底图切为4*2的切片,比例分母是A,而此时我们的WMTS2及时比例分母不与A相等,这就导致两个地图服务冲突,而无法同时显示两个地图服务。所以从此方面下手解决这个问题。
解决:将天地图的WMTS服务http://t0.tianditu.com/vec_c/wmts,和自己的WMTS服务加载至ArcMap中,在右侧catalog目录中分别双击两个服务,查看服务属性如下图
天地图wmts服务
自己的WMTS服务
将这两个服务的切片矩阵集合分对照更改到 esri.layers.TileInfo
options里的lods属性中即可。注意清除一下浏览器缓存再刷新页面,否则很可能还展示更改前的页面状态。
代码
下面贴一下自定义OGC标准的WMTS服务在arcgis4js中的加载:
var tileInfo = new esri.layers.TileInfo({"dpi": 90.71428571428571, //必须,否则图错 "rows": 256, "cols": 256, "compressionQuality": 0, "origin": { "x": -180, "y": 90 }, "spatialReference": { "wkid": 4326 }, "lods": [ { "level": 1, "resolution": 0.703125, "scale": 295829355.454566 }, { "level": 2, "resolution": 0.3515625, "scale": 147914677.727283 }, { "level": 3, "resolution": 0.17578125, "scale": 73957338.863641 }, { "level": 4, "resolution": 0.087890625, "scale": 36978669.431821 }, { "level": 5, "resolution": 0.0439453125, "scale": 18489334.715910 }, { "level": 6, "resolution": 0.02197265625, "scale": 9244667.357955 }, { "level": 7, "resolution": 0.010986328125, "scale": 4622333.678978 }, { "level": 8, "resolution": 0.0054931640625, "scale": 2311166.839489 }, { "level": 9, "resolution": 0.00274658203125, "scale": 1155583.419744 }, { "level": 10, "resolution": 0.001373291015625, "scale": 577791.709872 }, { "level": 11, "resolution": 0.0006866455078125, "scale": 288895.854936 }, { "level": 12, "resolution": 0.00034332275390625, "scale": 144447.927468 }, { "level": 13, "resolution": 0.000171661376953125, "scale": 72223.963734 }, { "level": 14, "resolution": 8.58306884765625e-005, "scale": 36111.981867 }, { "level": 15, "resolution": 4.291534423828125e-005, "scale": 18055.990934 }, { "level": 16, "resolution": 2.1457672119140625e-005, "scale": 9027.995467 }, { "level": 17, "resolution": 1.0728836059570313e-005, "scale": 4513.997733 }, { "level": 18, "resolution": 5.3644180297851563e-006, "scale": 2256.998867 }, { "level": 19, "resolution": 0.000002682209014892578, "scale": 1128.499433 } ] }); var tileExtent = new Extent(-180, -90, 180, 90, new SpatialReference({ wkid: 4326 })); var layerInfo = new WMTSLayerInfo({ tileInfo: tileInfo, fullExtent: tileExtent, initialExtent: tileExtent, identifier: "name", tileMatrixSet: "EPSG:4326", format: "image/png", style: "_null" }); var resourceInfo = { version: "1.0.0", layerInfos: [layerInfo], copyright: "open layer" }; var options = { serviceMode: "KVP", resourceInfo: resourceInfo, layerInfo: layerInfo }; wmtsLayer = new WMTSLayer(wmtsUrl, options); map.addLayer(wmtsLayer);
注意
如果lods属性设置不正确,还会导致底图与自己的wmts服务坐标错乱的问题。如果发现坐标系设置相同但同一个坐标点无法在两个服务中重合,按照上述解决方式更改lods属性即可。
2 加载带有密钥的WMTS
初始化WMTSLayer时,在第二个参数也就是options中配置键customParameters
的属性即可。
demo
var options = {...customParameters:{"key1":"value1","key2":"value2" } } var wmtsLayer = new WMTSLayer(wmtsUrl, options);
转载于:https://www.cnblogs.com/telwanggs/p/8431459.html
(转载)arcgis for js - 解决加载天地图和WMTS服务,WMTS服务不显示的问题,以及wmts服务密钥。...相关推荐
- Arcgis for Js之加载wms服务
概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...
- 填坑 ---- arcgis api for javascript 加载天地图
写在前面 首先要感谢 arcgis api for javascript 加载天地图 这篇文章,帮助我完成了在网页中加载天地图. 在此就不再描述加载天地图的方法与过程,只记录我遇到的一个坑与填坑方法. ...
- 基于ArcGIS API for JavaScript加载天地图
文章目录 前言 效果图 详细代码 总结 参考链接 前言 该篇主要介绍如何用ArcGIS JS API加载天地图,具体应用场景以及需求分析等,在上篇基于ArcGIS API for JavaScript ...
- arcgis api 4.x加载天地图(经纬度和墨卡托投影)(一篇文章搞透天地图加载)
主要说明: 1.天地图影像分两种经纬度投影(WKID:4490)和墨卡托投影两种,arcgis默认为墨卡托坐标系(3857),可以切换二维/三维,加载经纬度切片时view需要设置wkid:4326 2 ...
- Android Arcgis入门(12)、加载天地图
在项目中可以经常需要动态加载一些图层,像投影地图服务.投影地图服务器.其实网上有大量这样的服务,比如天地图官网, . 随便点开一个服务,里面有相关的信息.那如何加载这样图层服务呢. 一.首先感谢这篇博 ...
- arcgis api for javascipt 加载天地图、百度地图
写在前面的话: 1.百度地图是自己定义的坐标系统,wkid=102100.百度地图数据是加密的产物.下文将附上百度坐标与WGS84,谷歌等坐标系统转换方法(地理-地理),此方法并未亲测,据说准 2.百 ...
- arcgis使用js动态加载坐标
本文为原创,转载请注明出处:http://www.pm-road.com/index.php/2014/12/24/311/ 前一段时间,项目中使用的是高德地图,可是项目马上结尾的时候,客户居然提出必 ...
- 使用ArcGIS JS API加载WMTS图层的两种方式
文章目录 前言 方式一 方式二 前言 某些项目可能多方参与,每一方使用的GIS平台有时会有所不同,这时为了统一各方地图服务,通常会发布OGC标准的WMTS地图服务供各方使用.ArcGIS API fo ...
- ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
喜欢就关注我们吧! 首先介绍一下MapBOX. Mapbox 是用于移动和 Web 应用程序的位置数据平台.用户可以使用Mapbox Studio创建一个自定义.交互式的地图,然后可以将这些自定义的地 ...
最新文章
- oracle 条件查询,比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感,多行,多列子查询...
- 【阿里云课程】分组网络原理,结构发展及设计改进
- Centos实现svn本地认证apache认证
- Git使用出现Automatic merge failed; fix conflicts and then commit the result.解决方法
- 标准模板库(STL)之 map 列传
- python_四元数/旋转矩阵/欧拉角之间的相互变换(简单易用版)
- 【PIL】Image中blend的简单使用
- Apache优化配置
- tcs标准编写软件_tcs2010下载-tcs2010(中国标准编写模板) 免费版 - 河东下载站
- 注册测绘师复习方法,注册测绘师考试心得
- 维修管理系统微信小程序部署流程
- 线性方程组解个数的判定和求解
- 淘宝店铺装修_黑色店铺模板如何搭配?
- chrome://dino/让恐龙无敌的代码
- 强化学习——股票预测项目复现
- persistence.cpp:2197:ann.xml(1): There should be space between attributes in function icvXMLParseTag
- 机器人运动学、动力学基础上利用MATLAB进行PID控制仿真
- 系统关键文件丢失或损坏
- win7系统调用tts的语音朗读功能
- 逗比程序媛的湾区FLAGT面试求职经验
热门文章
- c++ msflexgrid 使用_丝杠支座组件C
- HDFS节点内数据平衡
- (75)Verilog HDL系统函数和任务:$readmemh
- (15)System Verilog结构体struct详解
- 2021年NBA季后赛第三轮晋级预测
- (5)FPGA面试题同步电路和异步电路
- 1002.ubuntu系统级BUG-/dev/ttyUSB0
- php 定义一个json对象,PHP中使用json数据格式定义字面量对象的方法
- 【蓝桥杯单片机】定时器和中断
- magento 优化 php.ini,PHP.ini配置文件(中文) | Magento UI