Cesium加载WMTS服务,4326和3857

在Cesium.WebMapTileServiceImageryProvider 支持这两种tilingScheme加载,主要由以下两个参数控制:

1. 3857  默认情况下,加载3857坐标系的切片,只能访问使用EPSG:900913(标准名为EPSG:3875)

this._tilingScheme = new Cesium.WebMercatorTilingScheme({
    numberOfLevelZeroTilesX : 1,
    numberOfLevelZeroTilesY : 1
});

示例:

  let wmtsImageryProvider = new Cesium.WebMapTileServiceImageryProvider({
        url : 'http://localhost:8080/geoserver/gwc/service/wmts',
        layer : 'pucheng:satellite',
        style : 'raster',
        format : 'image/png',
        tileMatrixSetID : 'EPSG:900913',
        tileMatrixLabels : ['EPSG:900913:0', 'EPSG:900913:1', 'EPSG:900913:2', 
         'EPSG:900913:3', 'EPSG:900913:4', 'EPSG:900913:5', 'EPSG:900913:6', 
         'EPSG:900913:7', 'EPSG:900913:8', 'EPSG:900913:9', 'EPSG:900913:10', 
         'EPSG:900913:11', 'EPSG:900913:12', 'EPSG:900913:13', 'EPSG:900913:14', 
         'EPSG:900913:15', 'EPSG:900913:16', 'EPSG:900913:17', 'EPSG:900913:18']
});
 
    viewer.imageryLayers.addImageryProvider(wmtsImageryProvider);
 
    viewer.camera.flyTo({
        destination : Cesium.Cartesian3.fromDegrees(109.637, 34.966, 100000),
        oridntation : {
            heading : Cesium.Math.toRadians(0.0),
            putch : Cesium.Math.toRadians(-25.0),
            roll : 0.0
        }
    });

2. 4326

this._tilingScheme = new Cesium.GeographicTilingScheme({
     numberOfLevelZeroTilesX: 2,
     numberOfLevelZeroTilesY: 1
});

3.例如加载geoserver发布的WMTS服务,4326坐标系,

var _matrixIds = new Array(22);
for (var z = 0; z < _matrixIds.length; ++z) {
  _matrixIds[z] = "EPSG:4326" + ":" + z;
}

var wmtsImageryProvider = new Cesium.WebMapTileServiceImageryProvider({
        url: `${mapConfig.geoserver}/gwc/service/wmts?authKey=${mapConfig.authKey}`,
        layer: "zjd:ZRZ",
        style: "",
        format: "image/png8",
        tileMatrixSetID: "EPSG:4326",
        tileMatrixLabels: _matrixIds,
        tilingScheme: new Cesium.GeographicTilingScheme({
            numberOfLevelZeroTilesX: 2,
            numberOfLevelZeroTilesY: 1
        })
});
viewer.imageryLayers.addImageryProvider(wmtsImageryProvider);

 

 !!!默认情况下,加载3857坐标系的切片,只能访问使用EPSG:900913(标准名为EPSG:3875)网格切分的瓦片

this._tilingScheme = new Cesium.GeographicTilingScheme({
        numberOfLevelZeroTilesX: 2,
        numberOfLevelZeroTilesY: 1
});

当将tileMatrixSetID设置为 'EPSG:4326',想要对于另外一个常用的EPSG:4326网络的瓦片进行访问时,浏览器会报一个瓦片“列(或行)超出范围”的错误,不能正确加载显示瓦片图像。究其原因是因为,WebMapTileServiceImageryProvider的切片方案tilingScheme默认使用EPSG:3875投影,即伪墨卡托网格访问切片,与EPSG:4326网格的切片方案存在较大差异,故而无法正确访问。那么什么又是tilingScheme切片方案呢?
 

1. TilingScheme
Tiling是一种椭球体表面上的几何图形或图像的平铺方案。在详细级别为0,即最粗、最不详细的级别上,瓦片的数量是可配置的。在详细级别为1级以上,每个是一级级瓦片经纬两个方向上扩展为两个瓦片,共有四个子瓦片。如此扩展到最大的缩放级别,这也构成了一个图像瓦片的金字塔。TillingScheme有一个参数ellipsoid用来决定切处时使用的椭球,另外两个比较重要的参数numberOfLevelZeroTilesX和numberOfLevelZeroTilesY,用来决定0级瓦片的数量。

TilingSchemee有两个子类,为WebMercatorTilingScheme和GeographicTilingScheme。其中WebMercatorTilingScheme对应于EPSG:3857切片方案,常见于谷歌地图、微软必应地图以及大多数的ArcGIS在线地图,也是Cesium中默认的切片方案。

GeographicTilingScheme对应于EPSG:4326切片方案,是一个简单的地理投影方案,可直接将经纬度映射为X和Y,这种投影通常被称为地理投影、等矩形投影、等距圆柱形投影等。

由于在X方向上,WebMercatorTilingScheme只有一个0级瓦片,而GeographicTilingScheme却有2个,这就导致了默认的EPSG:3857切片方案不能正确加载EPSG:4326切片方案的瓦片图像。

参考文章:cesium 加载 geoserver wmts 服务 - Geography爱好者 - 博客园

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值