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