Cesium加载GeoServer离线瓦片数据
·
问题
用GeoServer切好的瓦片布署到tomcat等容器中,然后使用Cesium等GIS引擎加载,由于Geoserver瓦片存储结构和常规瓦片目录差异较大,想要正确加载需要做额外的处理,一种方法是重建瓦片数据的目录结构,另一种是在代码层面处理,下面是使用Cesium加载的具体代码
代码
function loadGeoServerTiles(url, crs = '4326', format = 'png') {
const layer = new Cesium.ImageryLayer(new Cesium.UrlTemplateImageryProvider({
tilingScheme: new Cesium.GeographicTilingScheme(),
url: url + `EPSG_${crs}_{z}/{sx}/{mx}_{my}.${format}`,
customTags: {
sx: function (imageryProvider, x, y, level) {
// 1-1,2-2,3-2,4-3,5-3,6-4,7-4,8-5,
const l = (level / 2 >> 0) + 1;
const length = (level / 6 >> 0) + 1;
const reverseY = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(level) - y - 1;
return `${('' + (x >> l)).padStart(length, '0')}_${('' + (reverseY >> l)).padStart(length, '0')}`
},
mx: function (imageryProvider, x, y, level) {
const length = 2 + (level / 6 >> 0) * 2;
return ('' + x).padStart(length, '0')
},
my: function (imageryProvider, x, y, level) {
const reverseY = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(level) - y - 1;
const length = 2 + (level / 6 >> 0) * 2;
return ('' + reverseY).padStart(length, '0')
}
},
urlSchemeZeroPadding: {
'{z}': '00',
},
}))
return layer;
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)