跳到主要内容

通视分析

DMap3D.analysis.viewshed 用于分析两点之间是否可见(射线检测)。

引入

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

基本用法

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

// 创建通视分析工具
const viewshed = new DMap3D.analysis.viewshed(viewer)

// 监听分析完成事件
viewshed.onAnalysisEnd((result) => {
console.log('是否可见:', result.isVisible)
if (!result.isVisible && result.intersectionPoint) {
console.log('遮挡点:', result.intersectionPoint)
}
})

// 激活分析(左键点击两个点)
viewshed.activate()

构造函数

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

参数:

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

Options:

interface ViewshedOptions {
colors?: {
visibleLine?: string // 可见线段颜色
invisibleLine?: string // 不可见线段颜色
}
}

方法

activate()

激活通视分析。用户在场景中左键点击两个点(观察点和目标点)进行分析。

viewshed.activate()

deactivate()

停用分析功能,保留已有结果。

viewshed.deactivate()

clear()

清除所有分析结果。

viewshed.clear()

destroy()

销毁工具并释放资源。

viewshed.destroy()

onAnalysisEnd(callback)

注册分析完成回调。

viewshed.onAnalysisEnd((result) => {
console.log('是否可见:', result.isVisible)
console.log('起点:', result.startPoint)
console.log('终点:', result.endPoint)
if (result.intersectionPoint) {
console.log('遮挡交点:', result.intersectionPoint)
}
})

分析结果

interface ViewshedResult {
isVisible: boolean // 是否可见
startPoint: Cesium.Cartesian3 // 起点坐标
endPoint: Cesium.Cartesian3 // 终点坐标
intersectionPoint?: Cesium.Cartesian3 // 遮挡交点(不可见时)
}

相关链接