通视分析
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 // 遮挡交点(不可见时)
}