Cut and Fill Analysis
DMap3D.analysis.cutFill is used to analyze the cut and fill volumes in a specified region.
Import
import DMap3D from 'dmap3d'
import * as Cesium from 'cesium'
Basic Usage
const viewer = new Cesium.Viewer('cesiumContainer')
// Create cut and fill analysis tool
const cutFill = new DMap3D.analysis.cutFill(viewer)
// Listen for analysis complete event
cutFill.onAnalysisEnd((result) => {
console.log('Cut volume:', result.cutVolume, 'cubic meters')
console.log('Fill volume:', result.fillVolume, 'cubic meters')
console.log('Base height:', result.baseHeight, 'meters')
})
// Activate drawing (draw analysis region in the scene)
cutFill.activate()
Constructor
new DMap3D.analysis.cutFill(viewer, options?)
Parameters:
viewer- Cesium.Viewer instanceoptions?- Optional configuration
Options:
interface CutFillOptions {
type?: 'globe' | 'all' // Sampling type, default 'all'
heightMode?: 'relative' | 'absolute' // Height mode, default 'absolute'
baseHeight?: number // Base height (meters), default 0
pointLength?: number // Number of sample points, default 1200
showTriangle?: boolean // Show triangulated mesh, default true
showRangeBox?: boolean // Show bounding box, default true
showBasePlane?: boolean // Show base plane, default true
showResultLabel?: boolean // Show result labels, default true
}
Methods
activate() / init()
Activate drawing functionality. init() is equivalent to activate().
cutFill.activate()
deactivate()
Deactivate drawing functionality.
cutFill.deactivate()
clear()
Clear all analysis content.
cutFill.clear()
onAnalysisEnd(callback)
Register analysis complete callback. Returns an unsubscribe function.
const unsubscribe = cutFill.onAnalysisEnd((result) => {
console.log('Cut volume:', result.cutVolume)
console.log('Fill volume:', result.fillVolume)
})
// Unsubscribe
unsubscribe()
destroy()
Destroy the tool and release resources.
cutFill.destroy()
Analysis Result
interface CutAndFillResult {
baseHeight: number // Base height (meters)
minHeight: number // Minimum height in region (meters)
maxHeight: number // Maximum height in region (meters)
cutVolume: number // Cut volume (cubic meters)
fillVolume: number // Fill volume (cubic meters)
baseArea: number // Base area (square meters)
}
Complete Example
const viewer = new Cesium.Viewer('cesiumContainer')
// Create cut and fill analysis tool
const cutFill = new DMap3D.analysis.cutFill(viewer, {
type: 'all',
heightMode: 'absolute',
baseHeight: 100,
pointLength: 1500,
showTriangle: true,
showRangeBox: true,
showBasePlane: true,
showResultLabel: true
})
// Listen for analysis complete
cutFill.onAnalysisEnd((result) => {
const { cutVolume, fillVolume, baseArea, baseHeight } = result
console.log(`Base height: ${baseHeight} meters`)
console.log(`Cut volume: ${cutVolume.toFixed(2)} cubic meters`)
console.log(`Fill volume: ${fillVolume.toFixed(2)} cubic meters`)
console.log(`Base area: ${baseArea.toFixed(2)} square meters`)
})
// Activate drawing
cutFill.activate()
// Destroy
cutFill.destroy()