CG_IsSolid — Test if the geometry is a solid. No validity check is performed.
boolean CG_IsSolid(geometry geom1);
Returns true when the input carries the
solid flag, such as a geometry produced by
CG_MakeSolid. A closed
PolyhedralSurface remains a surface until
it is explicitly converted. This tests the representation,
not shell closure or validity; no validity check is
performed.
Availability: 3.5.0
This method needs SFCGAL backend.
This function supports 3d and will not drop the z-index.
This function supports Polyhedral surfaces.
This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).
Compare the same closed shell before and after converting it to a solid.
WITH data AS (
SELECT 'POLYHEDRALSURFACE Z (
((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 geom
)
SELECT CG_IsSolid(geom) AS shell_is_solid,
CG_IsSolid(CG_MakeSolid(geom)) AS solid_is_solid
FROM data;
f | t