(十)Cesium通过Turf.js点插值获取范围的高程值,进行无源淹没分析

无源淹没分析比较简单,核心就是抬升面的高度。

这里将面绘制完后,获取最高和最低的高程值,传入表单框中。

点击分析,开始抬升

高程获取

灵感来自:Cesium选定范围取最高、最低高程及填挖方分析 | 开飞机的老张 (kaifeiji.cc)

Turf中文网:Turf.js中文网 (fenxianglu.cn)

过程:从Cesium中获取坐标后传入Turf中进行插值,然后返回插值点坐标,Cesium中通过Cesium.sampleTerrain获取高程值,详细见官网API:Global - Cesium Documentation

高程获取函数:

const minAndMaxHeight =async (positions) => {
    //将笛卡尔坐标转为经纬度坐标,并转为turf.js的Polygon类型
    const lnglats = positions.map(position => [Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(position).longitude),
        Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(position).latitude)])
    console.log(lnglats)
    const turfPolygon = turf.lineString(lnglats) // 转为turf.js的Polygon类型
    const turfExtent = turf.bbox(turfPolygon)  // 获取turfPolygon的边界框
    // 在turfPolygon中按网格取样点,网格间距8米
    const turfSamplePoints = turf.pointGrid(turfExtent, 0.08, {
        units: 'kilometers',
        // mask: turfPolygon,
    });
    // 将turf取样点转为Cesium的取样点
    const cesiumSamplePoints = []
    for (let i = 0; i < turfSamplePoints.features.length; i++) {
        const coord = turfSamplePoints.features[i].geometry.coordinates;
        cesiumSamplePoints.push(Cesium.Cartographic.fromDegrees(coord[0], coord[1]));
    }
    const terrainProvider = await Cesium.createWorldTerrainAsync(); // 获取地形服务
    const updatedPositions = await Cesium.sampleTerrain(terrainProvider, 11, cesiumSamplePoints) // 计算取样点的高度
    let minHeight = 8888
    let maxHeight = 0
    // 计算取样点的最小高度和最大高度
    for (let i = 0; i < upda
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值