跳到主要内容

填挖方分析

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()

相关链接