跳到主要内容

缓冲区分析

DMap3D.analysis.bufferAnalysis 用于在指定图形(点、线、面)周围创建缓冲区域。

引入

import DMap3D from 'dmap3d'
import * as Cesium from 'cesium'

基本用法

const viewer = new Cesium.Viewer('cesiumContainer')

// 创建缓冲区分析工具
const buffer = new DMap3D.analysis.bufferAnalysis(viewer)

// 监听分析完成事件
buffer.onAnalysisEnd((result) => {
console.log('缓冲距离:', result.bufferDistance, '米')
console.log('缓冲区面积:', result.bufferArea, '平方米')
})

// 激活分析
buffer.activate()

构造函数

new DMap3D.analysis.bufferAnalysis(viewer, options?)

参数:

  • viewer - Cesium.Viewer 实例
  • options? - 可选配置项

Options:

interface BufferAnalysisOptions {
bufferDistance?: number // 缓冲距离(米),默认 50
geometryType?: 'polygon' | 'polyline' | 'point' // 几何类型,默认 'polygon'
originalColor?: string // 原始图形颜色,默认 '#FFFF00'
bufferColor?: string // 缓冲区颜色,默认 '#FF0000'
originalAlpha?: number // 原始图形透明度,默认 0.6
bufferAlpha?: number // 缓冲区透明度,默认 0.3
}

方法

activate()

激活绘制功能,根据设置的几何类型绘制图形。

buffer.activate()

deactivate()

停用绘制功能。

buffer.deactivate()

clear()

清除所有图形和缓冲区。

buffer.clear()

setBufferDistance(distance)

设置缓冲距离(1-100000 米)。

buffer.setBufferDistance(200)

setGeometryType(type)

设置几何类型。

buffer.setGeometryType('polyline') // 'polygon' | 'polyline' | 'point'

getBufferResult()

获取分析结果。

const result = buffer.getBufferResult()
if (result) {
console.log('缓冲区面积:', result.bufferArea)
}

onAnalysisEnd(callback)

注册分析完成回调。

buffer.onAnalysisEnd((result) => {
console.log('缓冲距离:', result.bufferDistance)
console.log('缓冲区面积:', result.bufferArea)
})

destroy()

销毁工具并释放资源。

buffer.destroy()

分析结果

interface BufferResult {
originalPositions: Cesium.Cartesian3[] // 原始图形坐标
bufferPositions: Cesium.Cartesian3[] // 缓冲区坐标
bufferDistance: number // 缓冲距离(米)
originalArea?: number // 原始图形面积(平方米)
bufferArea: number // 缓冲区面积(平方米)
}

完整示例

const viewer = new Cesium.Viewer('cesiumContainer')

// 创建缓冲区分析工具
const buffer = new DMap3D.analysis.bufferAnalysis(viewer, {
bufferDistance: 100,
geometryType: 'polygon',
originalColor: '#00FF00',
bufferColor: '#FF0000',
bufferAlpha: 0.3
})

// 监听分析完成
buffer.onAnalysisEnd((result) => {
console.log(`原始面积: ${result.originalArea?.toFixed(2)} 平方米`)
console.log(`缓冲面积: ${result.bufferArea.toFixed(2)} 平方米`)
})

// 激活分析
buffer.activate()

// 切换几何类型
buffer.clear()
buffer.setGeometryType('polyline')
buffer.setBufferDistance(50)
buffer.activate()

// 销毁
buffer.destroy()

相关链接