計算視點在情境中的可視體(基於視錐體,保留可見地區形成的幾何體)。
文法
meshgeom ST_ComputeViewShed(scene sc, cstring viewpoint);參數
參數名稱 | 描述 |
sc | scene對象。 |
viewpoint | 視點資訊。 使用JSON格式: |
視點資訊的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對象。
樣本如下圖:
可視體(俯視圖)

可視體(側視圖)

樣本
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