Cesium专栏-淹没分析

1,037 阅读1分钟

关于淹没分析

淹没分析主要研究的是某一块指定的研究的区域,小到一个地块,然后大到一个小区、一个小镇、亦或是一个城镇、一个城市、一个国家在遇到洪水时,在极端情况下,没有任何的排水设施、也没有任何的泄洪措施等(当然这种假设肯定是不存在的)模拟的随时间迁移的淹没情况。

需要具备的参数:淹没范围,水面上升速度(当然,如果研究区域所处平原,或者地形不明显,这种模拟会效果不佳)

效果图

具体操作

1、初始化,加载影像和地形

var viewer = new Cesium.Viewer('cesiumContainer', {
    imageryProvider: new Cesium.UrlTemplateImageryProvider({
        url: 'http://www.google.cn/maps/vt?lyrs=s@716&x={x}&y={y}&z={z}'
    }),
       terrainProvider: Cesium.createWorldTerrain({
            requestVertexNormals: true,
            requestWaterMask: true
        })
});

2、指定研究区域

 var positions = [114......., 30........., 114......., 30........., 114......., 30........., 114......., 30........];

3、添加polygon实体作为显示对象

    var waterHeight = 0; // 当前淹没高度
    var entity = viewer.entities.add({
        polygon: {
            hierarchy: Cesium.Cartesian3.fromDegreesArray(positions),
            material: Cesium.Color.RED.withAlpha(0.5),
            extrudedHeight: new Cesium.CallbackProperty(function () {
                return waterHeight;
            })
        }
    });

4、设置动画效果

viewer.clock.onTick.addEventListener(function () {
        if (waterHeight > 250){
            waterHeight = 0;
        }
        waterHeight += 0.1;
    })

后话

这种做法在其他技术分享网站中都能看到,是一种最基础的做法,当然有更加逼真效果的做法,以及更加复杂的功能,如实时计算淹没土方以及淹没区面积,实时查看研究区域内某点的实际淹没高度。

link==》