Cesium 加载 ArcGIS WMTS服务

本文详细记录了在项目中使用Cesium集成ArcGIS WMTS瓦片服务的过程,包括如何查看服务参数、代码实现及可能出现的问题。重点讨论了从WMTSCapabilities.xml获取参数、服务加载代码示例以及解决不同地图加载差异的技巧,特别是tileMatrixLabels的调整,对于无法正常加载的情况提供了排查思路。
摘要由CSDN通过智能技术生成

(1)场景:使用Cesium加载ArcGIS的WMTS瓦片服务

最近在项目中需要使用Cesium添加ArcGIS的WMTS服务,虽然根据网上的相关资料加载成功,但是还是遇到一些参数调整相关的问题,所以将过程中的一些步骤心得记录下来。

(2)查看服务相关参数

网上的资料主要借鉴 cesium加载arcgis 发布的 CGCS2000坐标系的WMTS地图服务_A873054267的博客-CSDN博客  

这里以该文章中的服务地址为例   wzmap/map (MapServer)

点击服务中的 WMTS ,查看相关参数,实际上也就是访问 http://61.175.211.102/arcgis/rest/services/wzmap/map/MapServer/WMTS/1.0.0/WMTSCapabilities.xml 查找相关参数信息

相关参数信息见下面各图片标记;

2.1 图层标识(名称)

2.2 style名称

2.3 ..

2.4 tileMatrix

2.5 模板URL (重要)

注意不同的服务这里的模板URL有一定差别,请在 WMTSCapabilities.xml 中查看各服务自己的 URL进行调用

(3)代码展示

地球加载

// 初始化三维球视图
var viewer = new Cesium.Map('cesiumContainer');

添加定位点,方便查看服务是否加载

// 添加定位
viewer.entities.removeAll();
var positions = viewer.entities.add({
    name: 'position',
    position: Cesium.Cartesian3.fromDegrees(120.58468164419833, 27.842148925776648, 10000),
    point: {
        pixelSize: 5,
        color: Cesium.Color.RED,
        outlineColor: Cesium.Color.WHITE,
        outlineWidth: 2
    }
});
viewer.zoomTo(positions);

加载服务

// 添加ArcGIS WMTS服务
var provider = new Cesium.WebMapTileServiceImageryProvider({
    url: 'http://61.175.211.102/arcgis/rest/services/wzmap/map/MapServer/WMTS/tile/1.0.0/wzmap_map/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png', // 复制 2.5 中的地址
    layer: 'wzmap_map',
    style: 'default',
    tileMatrixSetID: 'default028mm',
    format: 'image/png',
    tilingScheme: new Cesium.GeographicTilingScheme(),
    maximumLevel: 21,                
    tileMatrixLabels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'] // 对应2.4中的tileMatrix Identifier属性
});
// 添加服务图层到视图中
viewer.imageryLayers.addImageryProvider(provider);

(4)效果如图:

(5)总结

小结几个比较重要的点:

『1』通过服务的 WMTSCapabilities.xml  查看需要的相关参数

『2』在代码部分添加服务的时候,如果是采用模板URL的方式进行加载,有些参数实际上可以省略,比如 layer,style等,因为URL中已经包含了相关属性

『3』如果不能正常加载,可能存在的问题   

  • 第一肯定还是要仔细对照  WMTSCapabilities.xml  中的相关参数看是否正确;
  • 模板地址要正确;
  • 可能是 tileMatrixLabels 属性的问题。我遇到的问题就是使用二维地图(mapboxgl)能够正常加载,但是三维地图不能正常加载,对比二维地图和三维地球中的单个瓦片地址,修改 tileMatrixLabels 数组从 0 开始,解决了问题,即
    tileMatrixLabels: ['0','1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21']
    具体原因待研究。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值