我的第一篇文章Cesium空间分析-填挖方计算
中,介绍了通过细化PolygonGeometry的颗粒度,进行填挖方计算。这里还是要感谢大神的分享。
这个思路,简单、清晰。但是有一个弊端-无法在模型上进行填挖方分析。
今天我用Cesium+turf.fs结合的方式,实现了一版地形、模型通用的填挖方分析方法。
思路:基于表面面积量算的实现思路,对范围面进行细化。
细化方法:对范围面对应的屏幕坐标范围生成泰森多边形。
实现流程:
实现代码:
private computeCutAndFillVolumeVoronoi(positions:Cesium.Cartesian3[]):CutAndFillResult{
const result = new CutAndFillResult();
//声明屏幕坐标数组
const windowPositions:Cesium.Cartesian2[]=[];
//先遍历一下多边形节点,获取最低高程点,作为基准高程
//同时将Cartesian3转为屏幕坐标,存放在数组中
positions.forEach(element => {
const cartographic = Cesium.Cartographic.fromCartesian(element);
this.baseHeight = Math.min(cartographic.height,thi