ST_Volume — 计算 3D 实体的体积。如果应用于曲面(即使是闭合的)几何体,将返回 0。
float ST_Volume(
geometry geom1)
;
可用性: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