本学习系列将以Cesium + Vue3 + Vite +Typescript+elementplus作为主要技术栈展开,后续会循序渐进,持续探索Cesium的高级功能,详情请关注原文Cesium+Vue3学习系列(17)---加载WMTS服务,解决大文件卡顿问题
在之前的文章Cesium+Vue3学习系列(15)---Cesium加载Geoserver发布的影像(tif)WMS数据服务使用Cesium加载WMS服务。然而,当 TIFF 文件“上了体量”——动辄几百 MB 甚至几个 GB——再用 WMS 整幅动态出图,浏览器就会频繁请求整张图片,导致拖拽、缩放时卡顿明显,体验直线下降。
如何解决这个问题呢?思路很简单:把“一整张”变成“一小块”。
将影像发布为 WMTS(Web Map Tile Service) 服务,让 Cesium 按需逐级加载预生成的瓦片,既减轻 GeoServer 实时渲染压力,也充分利用浏览器缓存,秒级响应、丝滑漫游。步骤如下:
1、新建工作区。如果已有工作区,此步骤忽略。
2、新建数据存储,选择GeotTIFF。
3、选择步骤(1)的工作区,设置连接参数,注意影像最好是WGS84坐标系,然后点击保存。
4、点击“发布”。
5、然后进入到编辑图层页面,数据页面设置好覆盖参数。在图块缓存(Title caching)页面选择切片策略(由于本篇所用数据是WGS84坐标系,因此选择EPSG:4326)。然后点击保存。
6、点击“切片图层”,找到发布的图层,打开Seed/Truncate
,
});
handle = this.AddImageryLayer(provider, show, alpha, zIndex)
break
12、前端实现
const changeWmtsImageTest = (val: string | number | boolean) => {
if (val) {
// 加载wmts影像图层
mLayerManager?.Add(wmtsImageTestInfo)
// 跳转到指定坐标
viewer?.camera.flyTo({
destination: Cartesian3.fromDegrees(108.8, 37.9, 1000000.0)
});
} else {
// 移除wmts影像图层
mLayerManager?.Remove(LayerIdFlag.WMTS_IMAGE_TEST)
}
}
13、实现效果