填挖方分析
DMap3D.analysis.cutFill 用于分析指定区域的挖方和填方体积。
引入
import DMap3D from 'dmap3d'
import * as Cesium from 'cesium'
基本用法
const viewer = new Cesium.Viewer('cesiumContainer')
// 创建填挖方分析工具
const cutFill = new DMap3D.analysis.cutFill(viewer)
// 监听分析完成事件
cutFill.onAnalysisEnd((result) => {
console.log('挖方体积:', result.cutVolume, '立方米')
console.log('填方体积:', result.fillVolume, '立方米')
console.log('基准高度:', result.baseHeight, '米')
})
// 激活绘制(在场景中绘制分析区域)
cutFill.activate()
构造函数
new DMap3D.analysis.cutFill(viewer, options?)
参数:
viewer- Cesium.Viewer 实例options?- 可选配置项
Options:
interface CutFillOptions {
type?: 'globe' | 'all' // 采样类型,默认 'all'
heightMode?: 'relative' | 'absolute' // 高度模式,默认 'absolute'
baseHeight?: number // 基准高度(米),默认 0
pointLength?: number // 采样点数量,默认 1200
showTriangle?: boolean // 显示三角网格,默认 true
showRangeBox?: boolean // 显示范围框,默认 true
showBasePlane?: boolean // 显示基准面,默认 true
showResultLabel?: boolean // 显示结果标注,默认 true
}
方法
activate() / init()
激活绘制功能。init() 等同于 activate()。
cutFill.activate()
deactivate()
停用绘制功能。
cutFill.deactivate()
clear()
清除所有分析内容。
cutFill.clear()
onAnalysisEnd(callback)
注册分析完成回调。返回取消函数。
const unsubscribe = cutFill.onAnalysisEnd((result) => {
console.log('挖方体积:', result.cutVolume)
console.log('填方体积:', result.fillVolume)
})
// 取消监听
unsubscribe()
destroy()
销毁工具并释放资源。
cutFill.destroy()
分析结果
interface CutAndFillResult {
baseHeight: number // 基准高度(米)
minHeight: number // 区域最低高度(米)
maxHeight: number // 区域最高高度(米)
cutVolume: number // 挖方体积(立方米)
fillVolume: number // 填方体积(立方米)
baseArea: number // 基底面积(平方米)
}
完整示例
const viewer = new Cesium.Viewer('cesiumContainer')
// 创建填挖方分析工具
const cutFill = new DMap3D.analysis.cutFill(viewer, {
type: 'all',
heightMode: 'absolute',
baseHeight: 100,
pointLength: 1500,
showTriangle: true,
showRangeBox: true,
showBasePlane: true,
showResultLabel: true
})
// 监听分析完成
cutFill.onAnalysisEnd((result) => {
const { cutVolume, fillVolume, baseArea, baseHeight } = result
console.log(`基准高度: ${baseHeight} 米`)
console.log(`挖方体积: ${cutVolume.toFixed(2)} 立方米`)
console.log(`填方体积: ${fillVolume.toFixed(2)} 立方米`)
console.log(`基底面积: ${baseArea.toFixed(2)} 平方米`)
})
// 激活绘制
cutFill.activate()
// 销毁
cutFill.destroy()