Cesium淹没分析(干货)

本文介绍了如何使用Cesium进行淹没分析,包括初始化设置、地形深度检测、时间模拟及淹没范围设定。通过示例代码展示了如何动态展示水位上升过程,并创建水面效果,为地理信息领域的淹没模拟提供了一个实用的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cesium淹没分析

效果图

淹没分析主要研究的是某一块指定的研究的区域,根据当前地表起伏(也可以依据三维模型),动态展示不同时刻、区域、水深、流速等的淹没可视化结果。

需要具备的参数:淹没范围的设定,水面上升速度;

具体步骤

1、cesium的初始化

let tiandituTk='你的tk';
let subdomains=['0','1','2','3','4','5','6','7'];
let viewer = new Cesium.Viewer('cesiumContainer', {
  imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
      //影像底图
      url: "http://t{s}.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk="+tiandituTk,
      subdomains: subdomains,
      layer: "img",
      style: "default",
      format: "tiles",
      tileMatrixSetID: "w",
      show: true
  }),
  terrainProvider: Cesium.createWorldTerrain({
      requestVertexNormals: true,
      requestWaterMask: true
  })
});

2、核心代码

viewer.scene.globe.depthTestAgainstTerrain = true;   // 地形深度检测
viewer.clock.shouldAnimate = true;   // 时间开启
// 设置模拟时常
viewer.clock.startTime = Cesium.JulianDate.fromIso8601(
	"2021-08-01T00:00:00.00Z"
);
viewer.clock.stopTime = Cesium.JulianDate.fromIso8601(
	"2021-08-01T00:10:00.00"
);
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; // 反复循环
viewer.clock.multiplier = 10; // 时间倍速

// 范围拟定
let extent = [
  {
    lat: 117.897,
    lng: 35.009,
    hgt: -131.5,
  },
  {
    lat: 117.91,
    lng: 35.011,
    hgt: -121,
  },
  {
    lat: 117.924,
    lng: 34.998,
    hgt: -123,
  },
  {
    lat: 117.908,
    lng: 34.991,
    hgt: -108,
  },
  {
    lat: 117.905,
    lng: 34.992,
    hgt: -106,
  },
  {
    lat: 117.899,
    lng: 34.998,
    hgt: -130,
  },
];

let currentTime = Cesium.JulianDate.fromIso8601(
	"2020-08-01T00:00:00.00Z"
);
let height = 100;
let propertyTime = new Cesium.TimeIntervalCollectionProperty(Number);
// 设置时间循环
for (var i = 0; i <= 600; i++) {
  let addTime = Cesium.JulianDate.addSeconds(
    currentTime ,
    i,
    new Cesium.JulianDate()
  );

  let nxtTime = Cesium.JulianDate.addSeconds(
    currentTime ,
    i + 1,
    new Cesium.JulianDate()
  );

  let stopFlg = false;
  if (i == 600) {
    nxtTime = addTime.clone();
    stopFlg = true;
  }
  height = height + 0.1;

  propertyTime.intervals.addInterval(
    new Cesium.TimeInterval({
      start: addTime,
      stop: nxtTime,
      isStartIncluded: true,
      isStopIncluded: stopFlg,
      data: height,
    })
  );
}

// 面实体添加
viewer.entities.add({
  polygon: {
    hierarchy: Cesium.Cartesian3.fromDegreesArray(extent),
    perPositionHeight: true,
    extrudedHeight: propertyTime,
    // 设置图片的样式
    material:
    new Cesium.ImageMaterialProperty({
      image: this.folderUrl + "/images/water.png",
      repeat: Cesium.Cartesian2(1.0, 1.0), // 不重复
      transparent: true, // 启用png透明
      color: Cesium.Color.WHITE.withAlpha(0.5),
    }),
  },
});

附上水材质效果:
在这里插入图片描述
对于Cesium不熟悉的朋友别急,后面会讲解下Cesium基础的使用。

骋天淹没分析系统 骋天淹没分析系统是以三维地理信息系统为基础平台,基于数字高程模型(DEM)格网模型,通过改进迭代种子蔓延算法将淹没分析结果直观在三维地理系统系统上呈现出来。 骋天淹没分析系统应用于水库的库区淹没分析时,设置好起止水位和终止水位,以三维的形式呈现库区淹没区域,根据不同是水深来计算库容量,移民数量、直接经济影响和间接经济影响。可将数据制作成柱状图、饼状图、曲线图等多种多样的统计图;能够根据业务流程和用户要求定制各类表格,进行业务报表输出;还能按某一要素生成范围图、点密度图、分级符号图等,进行专题图分析,形象直观地反映防洪要素的时空变化规律。 骋天淹没分析系统亦可应用于洪水淹没分析时,根据洪水演进过程,配合数字化地图,利用三维模型,计算洪水淹没范围和淹没水深,并动态显示淹没区域并动态显示淹没区域,计算人口、家庭财产、工商、企业、农业、林业、渔业和畜牧业等淹没信息。并可根据预报调度、实时调度和历史调度等不同洪水下泻过程,计算分析洪水淹没损失,显示淹没分布状况,从而得出最佳洪水调度预案,提供泄洪区域内人员撤退、避灾转移和救灾物资供应等最佳行动路线。 广西骋天信息科技有限公司 网站 www.gxchengtian.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值