在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);

 

Cesium加载WMTS服务,4326和3857_java

 !!!默认情况下,加载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切片方案的瓦片图像。