淹没分析是指根据指定的最大、最小高程值及淹没速度,动态模拟某区域水位由最小高程涨到最大高程的淹没过程。该功能应用于地形、DEM等数据。应用场景这里举两个例子,帮助大家理解。
(1)根据某区域洪水涨势速度,模拟洪水涨到指定高程的淹没过程,为防洪救灾提供一定的参考。
(2)淹没分析结果可为河流区域的水利工程或建筑地选址提供依据。
SuperMap iDesktop中有两种类型数据可以做三维淹没分析,分别是栅格数据集和地形缓存,二者操作方式有一定区别,下面我将分开来讲解两种格式数据三维淹没分析操作步骤和注意事项。
以地形数据方式添加栅格数据到场景中,为了场景地形效果更明显可以同时勾选以影像数据方式加载。
淹没分析可在“三维空间分析”面板处设置分析相关的参数,包括分析结果纹理颜色、透明度、播放设置等参数。可在分析结果列表中同时选中一个或多个结果进行设置。
参数设置:
*纹理颜色表:用来设置分析区域的填充纹理颜色,对应区域的高程值不同,则显示的颜色不同。
*透明度:用来设置分析区域填充纹理及等值线的透明度,默认值为 0。
播放设置:
*当前高程: 用来显示和设置当前水位所到达的高程值,当前高程需在最小高程和最大高程范围内。
*最小高程:用于设置淹没分析的最小高程,默认为 100 米。
*最大高程:用于设置淹没分析的最大高程,默认为 2000 米。
*总时间:用于显示和设置动态模拟淹没分析结果的播放时间,单位为:秒。
*速度:用来显示和设置从当前选中淹没分析结果由最小高程淹没至最大高程的动态播放速度,单位为:m/s,默认速度为 100 m/s。
*循环播放:勾选该复选框后,在执行分析结果播放时,将重复执行淹没效果的播放操作,直到用户停止播放;若未选中该复选框,则执行播放操作时,只能播放一次淹没效果。
原理:利用polygon的extrudedHeight属性,动态增加(原理很简单,但效果挺好)
效果图:
部分示例代码:
_drawWater(targetHeight, adapCoordi) {
let entity = this.earth.entities.add({
polygon: {
hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(adapCoordi),
material: new GV.Color.fromBytes(64, 157, 253, 150),
perPositionHeight: true,
extrudedHeight: 0.0,
}
})
this.waterEntities = entity
let waterHeight = adapCoordi[2]
this.timer = setInterval(() => {
if (waterHeight < targetHeight) {
waterHeight += 100
if (waterHeight > targetHeight) {
waterHeight = targetHeight
}
entity.polygon.extrudedHeight.setValue(waterHeight)
}
}, 100)
this.entities.push(entity)
}