Skip to content

ViewShed 可视域分析

简介

  可视域分析用于确定从特定观察点出发,哪些区域是可见的,哪些被地形或建筑物遮挡。在 Cesium 中,该功能可以模拟摄像头、雷达、瞭望塔等视野范围,广泛应用于安防监控、军事侦察、通信信号覆盖、城市规划等场景,帮助用户评估可视区域与遮挡情况。


演练场

引入

ts
import { ViewShed } from "@m-tech/gis-core";

new ViewShed(viewer, options);

参数

参数类型必填默认值描述
viewerViewer-容器
optionsViewShedOptions-可视域分析配置
options.viewPositionPosition-观测点位置
options.viewPositionEndPosition-最远观测点位置
options.viewDistancenumber100观测距离
options.viewHeadingnumber0航向角
options.viewPitchnumber0俯仰角
options.horizontalViewAnglenumber90可视域水平夹角
options.verticalViewAnglenumber60可视域垂直夹角
options.visibleAreaColorColorColor.GREEN可视区域颜色
options.invisibleAreaColorColorColor.RED不可视区域颜色
options.enabledbooleantrue阴影贴图是否可用
options.softShadowsbooleantrue是否启用柔和阴影
options.sizenumber1024每个阴影贴图的大小
options.showFrustumbooleantrue是否显示视锥框线
options.viewAreaOpacitynumber0.7可视区域渲染透明度

属性

属性名类型读/写描述
viewPositionPosition读/写观测点位置
viewPositionEndPosition读/写最远观测点位置
viewDistancenumber读/写观测距离
viewHeadingnumber读/写航向角
viewPitchnumber读/写俯仰角
horizontalViewAnglenumber读/写可视域水平夹角
verticalViewAnglenumber读/写可视域垂直夹角
visibleAreaColorColor读/写可视区域颜色
invisibleAreaColorColor读/写不可视区域颜色
showFrustumboolean读/写是否显示视锥框线
viewAreaOpacitynumber读/写可视区域渲染透明度

方法

清除可视域分析。

示例

ts
import { ViewShed } from "@m-tech/gis-core";

new ViewShed(viewer, {
  viewPosition: new Position(122.06127255, 40.74509196, 50), // 观测点位置
  viewPositionEnd: new Position(122.0612, 40.745, 100), // 最远观测点位置
  viewDistance: 300, // 观测距离
  viewHeading: 0, // 航向角
  viewPitch: 0, // 俯仰角
  horizontalViewAngle: 90, // 可视域水平夹角
  verticalViewAngle: 60, // 可视域垂直夹角
  visibleAreaColor: new Color(0, 1, 0, 0.5), // 可视区域颜色
  invisibleAreaColor: new Color(1, 0, 0, 0.5), // 不可视区域颜色
  enabled: true, // 阴影贴图是否可用
});

// 调整观测点位置
viewShed.viewPosition = new Position(122.06127255, 40.74509196, 50);

// 调整最远观测点位置
viewShed.viewPositionEnd = new Position(122.0612, 40.745, 100);

// 调整观测距离
viewShed.viewDistance = 300;

// 调整可视域水平夹角
viewShed.horizontalViewAngle = 90;

// 调整可视域垂直夹角
viewShed.verticalViewAngle = 60;

// 调整可视区域颜色
viewShed.visibleAreaColor = new Color(0, 1, 0, 0.5);

// 调整不可视区域颜色
viewShed.invisibleAreaColor = new Color(1, 0, 0, 0.5);

// 清除可视域分析
viewShed.clear();

MGis 地理三维库