名稱

ST_Volume — 計算 3D 立體的體積。若應用於表面(即使是封閉的),將返回 0。

概要

float ST_Volume(geometry geom1);

描述

[Warning]

自 3.5.0 起,ST_Volume 已被棄用。請改用 CG_Volume

可用版本:2.2.0

此方法需要 SFCGAL 後端。

此函數支援 3D,並且不會捨棄 z 索引。

此函數支援多面體表面。

此函數支援三角形和不規則三角網格表面 (TIN)。

此方法實作 SQL/MM 規範。SQL-MM IEC 13249-3: 9.1 (與 ST_3DVolume 相同)

範例

當使用 WKT 建立封閉表面時,它們被視為面狀而非立體。要使其成為立體,您需要使用 ST_MakeSolid。面狀幾何沒有體積。以下範例示範說明。

SELECT ST_Volume(geom) As cube_surface_vol,
    ST_Volume(ST_MakeSolid(geom)) As solid_surface_vol
    FROM (SELECT 'POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
    ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
    ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
    ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
    ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),
    ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'::geometry) As f(geom);

    cube_surface_vol | solid_surface_vol
    ------------------+-------------------
    0 |                 1