ST_ComputeViewShed

计算视点在场景中的可视体(基于视锥体,保留可见区域形成的几何体)。

语法

meshgeom  ST_ComputeViewShed(scene sc, cstring viewpoint);

参数

参数名称

描述

sc

scene对象。

viewpoint

视点信息。

使用JSON格式:

{
  "x": 0,  //视点x坐标      
  "y": 0,  //视点y坐标
  "z": 0,  //视点z坐标
  "h": 0,   //附加高度
  "azimuth": 0,  //方位角
  "pitch": 0,  //俯仰角
  "distance": 100,  //最大可视距离
  "horizontalFov": 90,  //水平视角
  "verticalFov": 60  //垂直视角
  "depthMapSize": 128  // 深度图尺寸
}

视点信息的JSON中各参数含义:

参数

描述

取值范围

x

视点的x坐标,默认为0。

(-inf, +inf)

y

视点的y坐标,默认为0。

(-inf, +inf)

z

视点的z坐标,默认为0。

(-inf, +inf)

h

视点的附加高度,默认为0。

[0, +inf)

azimuth

从正北方向(y轴正向)起,依顺时针方向到观察方向之间的夹角,默认为 0,单位为度。

[-180, 180]

pitch

俯仰角(观察方向与XOY平面的夹角),当观察方向在XOY平面上方时,俯仰角为正,否则为负。默认为0,单位为度。

[-90, 90]

distance

最大可视距离,值越大视锥体覆盖范围越广,默认为100。

(0, +inf)

horizontalFov

水平视角范围,默认为90,单位为度。

(0, 180)

verticalFov

垂直视角范围,默认为60,单位为度。

(0, 180)

depthMapSize

深度图尺寸,深度图尺寸越大,计算的视锥体越精细,默认为128。

(0, 2048]

描述

  • 根据输入的scene对象、视点信息计算视点在场景中的可视体(基于视锥体,保留可见区域形成的几何体),视锥体的更多信息,请参见ST_ComputeFrustum

  • 该函数目前仅支持osg类型的scene对象。

示例如下图:

可视体(俯视图)

image..png

可视体(侧视图)

image..png

示例

SELECT ST_NumPatches(ST_ComputeViewShed(scene, '{"x" : 2938, "y" : 750, "z" : 90, "h" : 1.8, "azimuth" : 90, "pitch" : -35, "horizontalFov" : 90, "verticalFov" : 60, "distance" : 600, "depthMapSize" : 128}')) from t;
--------
32766