三维空间分析 |
可视域分析是基于给定的观察点和观察范围,以一定的相对高度查找设定范围内可见覆盖的区域,并显示给定点的可见区域范围。SuperMap iClient3D for Plugin提供了可视域分析功能(ViewShed3D类),可指定一个观察点,查看此观察点范围内的可视效果;也可指定一条路径,查看此路径的实时动态可视效果。
可视域分析在观光浏览道路选择、森林防火瞭望塔布设、航海导航、航空以及军事方面有重要的应用价值。
在SuperMap iClient3D for Plugin中可视域分析类为ViewShed3D类,其方法及属性见下表:
表 3.1 ViewShed3D类方法列表
返回类型 |
名称 |
描述 |
void |
build |
执行分析,得出分析结果。 |
void |
clear |
清除分析结果。 |
void |
setDistDirByPoint |
计算观察点到目标点的距离和方向。 |
void |
setTargetPoint |
设置目标点。 |
表 3.2 ViewShed3D类属性列表
返回类型 |
名称 |
描述 |
Number |
direction |
获取或设置当前相机的方向与正北方向的夹角,单位:度。 |
Number |
distance |
获取或设置可视距离,单位:米。 |
Color |
hiddenAreaColor |
获取或设置不可视区域的颜色。 |
Color |
hintLineColor |
获取或设置可视域分析的提示线颜色。 |
Number |
horizontalFov |
获取或设置可视域分析的水平视角范围,单位:度 。 |
Number |
pitch |
获取或设置当前分析的相机俯仰角。 |
AnalysisQuality |
quality |
获取或设置分析的质量级别,有高、低、中等三个级别。 |
Number |
verticalFov |
获取或设置可视域分析垂直视角范围。单位:度 。 |
Point3D |
viewerPosition |
获取或设置观察点的位置。 |
Color |
visibleAreaColor |
获取或设置可视区域的颜色。 |
实现可视域分析的主要代码如下:
//获取节点动画的空间位置,将作为可视域分析的观察点 var point3D = nodeAnmination.get_position(); point3D = new SuperMap.Web.Core.Point3D(point3D.x, point3D.y, (point3D.z + 2)); //获取节点动画的前进方向,将作为可视域分析的前进方向 var direction = nodeAnmination.get_direction(); //设置可视域分析观察点 viewShed3d.set_viewerPosition(point3D); //设置可视域分析的前进方向(相机与正北方向的夹角) viewShed3d.set_direction(direction); //设置可是距离 viewShed3d.set_distance(100); //设置可视域分析的水平视角范围 viewShed3d.set_horizontalFov(90); //设置可视域分析的垂直视角范围 viewShed3d.set_verticalFov(60); //执行分析 viewShed3d.build(); |
可视域分析的实现效果如下图:
图 3‑1 可视域分析效果