Cesium加载4326切片
数据:
geowebcache转发的ArcMap切片
说明:
Cesium加载数据大部分是3857的,遇到4326坐标系的切片,调用WebMapTileServiceImageryProvider始终加载不上。
经过叠加天地图对比查看xyz,发现z始终比切片少一级,用UrlTemplateImageryProvider接口给level+1切片就能出现。
var shadedRelief2 = new Cesium.UrlTemplateImageryProvider({
url: 'http://10.19.151.72:8080/geowebcache/service/wmts/rest/beijing84/default/EPSG:4326_beijing84/EPSG:4326_beijing84:{myLevel}/{myy}/{myx}?format=image/png',
customTags: {
myLevel: function (imageryProvider, x, y, z) {
console.log(z)
return z + 1
},
myx: function (imageryProvider, x, y, z) {
return x;
},
myy: function (imageryProvider, x, y, z) {
return y;
}
},
layer: 'beijing84',
style: 'default',
format: 'image/png',
tileMatrixSetID: 'EPSG:4326_beijing84',
maximumLevel: 19,
tilingScheme: new Cesium.GeographicTilingScheme({
ellipsoid: Cesium.Ellipsoid.WGS84,
numberOfLevelZeroTilesX: 2,
numberOfLevelZeroTilesY: 1
}),
});
viewer.imageryLayers.addImageryProvider(shadedRelief2);
猜测4326切片矩阵应该是从1开始而非0开始的,代码改成如下方式即可
var shadedRelief1 = new Cesium.WebMapTileServiceImageryProvider({
url: 'http://10.19.151.72:8080/geowebcache/service/wmts',
layer: 'beijing84',
style: 'default',
format: 'image/png',
tileMatrixSetID: 'EPSG:4326_beijing84',
tileMatrixLabels: [
'EPSG:4326_beijing84:1', // 这里从1开始
'EPSG:4326_beijing84:2',
'EPSG:4326_beijing84:3',
'EPSG:4326_beijing84:4',
'EPSG:4326_beijing84:5',
'EPSG:4326_beijing84:6',
'EPSG:4326_beijing84:7',
'EPSG:4326_beijing84:8',
'EPSG:4326_beijing84:9',
'EPSG:4326_beijing84:10',
'EPSG:4326_beijing84:11',
'EPSG:4326_beijing84:12',
'EPSG:4326_beijing84:13',
'EPSG:4326_beijing84:14',
'EPSG:4326_beijing84:15',
'EPSG:4326_beijing84:16',
'EPSG:4326_beijing84:17',
'EPSG:4326_beijing84:18',
'EPSG:4326_beijing84:19'
],
maximumLevel: 19,
// rectangle: Cesium.Rectangle.fromDegrees(117.76672639126905, 31.21670076028837, 120.38660785358883, 32.627095000940194),
// rectangle: Cesium.Rectangle.fromDegrees(90, 45, 180, 90),
tilingScheme: new Cesium.GeographicTilingScheme({
// rectangle: Cesium.Rectangle.fromDegrees(117.76672639126905, 31.21670076028837, 120.38660785358883, 32.627095000940194),
numberOfLevelZeroTilesX: 2,
numberOfLevelZeroTilesY: 1
}),
});
viewer.imageryLayers.addImageryProvider(shadedRelief1);
另外:
我们又试了一下geowebcache直接切片,层级是从0开始
var wmtsprovider = new Cesium.WebMapTileServiceImageryProvider({
url: 'http://10.19.151.72:8080/geoserver/gwc/service/wmts?',
layer: "wmts_test:beijing",
format: 'image/png',
minimumLevel: 1,
maximumLevel: 19,
style: "",
proxy: new Cesium.DefaultProxy('/proxy/'),
tileMatrixSetID: 'EPSG:4326',
tileMatrixLabels: ['EPSG:4326:0', 'EPSG:4326:1', 'EPSG:4326:2', 'EPSG:4326:3', 'EPSG:4326:4', 'EPSG:4326:5', 'EPSG:4326:6', 'EPSG:4326:7', 'EPSG:4326:8', 'EPSG:4326:9', 'EPSG:4326:10', 'EPSG:4326:11', 'EPSG:4326:12', 'EPSG:4326:13', 'EPSG:4326:14', 'EPSG:4326:15', 'EPSG:4326:16', 'EPSG:4326:17', 'EPSG:4326:18', 'EPSG:4326:19', 'EPSG:4326:20', 'EPSG:4326:21'],
tilingScheme: new Cesium.GeographicTilingScheme({ numberOfLevelZeroTilesX: 2, numberOfLevelZeroTilesY: 1 })
});
viewer.imageryLayers.addImageryProvider(wmtsprovider);