Generate a flat roof two units above a rectangular footprint.
WITH data AS (
SELECT 'POLYGON((0 0,5 0,5 4,0 4,0 0))'::geometry AS footprint
)
SELECT CG_GenerateFlatRoof(footprint, 2.0) AS roof
FROM data;
POLYHEDRALSURFACE Z (((0 0 0,0 4 0,5 4 0,5 0 0,0 0 0)),((0 0 2,5 0 2,5 4 2,0 4 2,0 0 2)),((0 0 0,0 0 2,0 4 2,0 4 0,0 0 0)),((0 4 0,0 4 2,5 4 2,5 4 0,0 4 0)),((5 4 0,5 4 2,5 0 2,5 0 0,5 4 0)),((5 0 0,5 0 2,0 0 2,0 0 0,5 0 0)))
010F00008006000000010300008001000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000104000000000000000000000000000001440000000000000104000000000000000000000000000001440000000000000000000000000000000000000000000000000000000000000000000000000000000000103000080010000000500000000000000000000000000000000000000000000000000004000000000000014400000000000000000000000000000004000000000000014400000000000001040000000000000004000000000000000000000000000001040000000000000004000000000000000000000000000000000000000000000004001030000800100000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000010400000000000000040000000000000000000000000000010400000000000000000000000000000000000000000000000000000000000000000010300008001000000050000000000000000000000000000000000104000000000000000000000000000000000000000000000104000000000000000400000000000001440000000000000104000000000000000400000000000001440000000000000104000000000000000000000000000000000000000000000104000000000000000000103000080010000000500000000000000000014400000000000001040000000000000000000000000000014400000000000001040000000000000004000000000000014400000000000000000000000000000004000000000000014400000000000000000000000000000000000000000000014400000000000001040000000000000000001030000800100000005000000000000000000144000000000000000000000000000000000000000000000144000000000000000000000000000000040000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000144000000000000000000000000000000000