Cesium基于DEM剖面分析

该博客介绍了如何在Cesium中通过插值运算获取两点间的多个点,并结合地形坐标查询获取高度,进而描绘出两点间地形的高低变化情况。关键步骤包括点的插值计算和使用Cesium的sampleTerrainMostDetailed方法获取高度信息。

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

Cesium中两个点之间地形的高低分析

  • tip:利用两个点之间做插值运算出多个点然后再利用地形坐标查询获取高度,可以绘制出区间内的高低走势。

  • 关键代码:

  • 1、点之间做插值运算

const startPoint = car3ToLatLon(points[0])
const endPoint = car3ToLatLon(points[1])
 const pointSum = this.pointsNum; //取样点个数
 let heightArr = []
 let pts:[number, number][] = []
 let offset,x,y;
 for (let i = 0; i < pointSum; ++i) {
     offset = i / (pointSum - 1);
     //做插值
     x = Cesium.Math.lerp(startPoint.lon, endPoint.lon, offset);//插值
     y = Cesium.Math.lerp(startPoint.lat, endPoint.lat, offset);//插值
     pts.push([x, y]);
 }
  • 2、做地形高度查询
// 查询地图的地形高度
const terrainProvider= Cesium.createWorldTerrain({
    requestVertexNormals: true
})
const positions = pts.map((d: [number, number])=> Cesium.Cartographic.fromDegrees(...d))
//根据地形计算某经纬度的高度
var promise:any = Cesium.sampleTerrainMostDetailed(terrainProvider, positions);
(<any>Cesium).when(promise, ()=> {
    const heightArr = positions.map(d => ({
        hei: d.height, 
        lon: Cesium.Math.toDegrees(d.longitude), 
        lat: Cesium.Math.toDegrees(d.latitude)
    }))
    console.log(heightArr)//插值的经纬度以及高度 
})

在这里插入图片描述

20个点的豪赌值变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值