Skip to main content

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 instance
  • options? - 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()