Namn

CG_GenerateRoof — Generera ett tak av begärd typ från en fotavtryckspolygon.

Synopsis

geometry CG_GenerateRoof(geometry geom, text roof_type, float8 height, float8 slope_angle, integer primary_edge_index);

Beskrivning

Generera ett tak som en 3D-PolyhedralSurface Z från en 2D-fotavtryckspolygon. Parametern roof_type väljer takstil (standard 'HIPPED'):

  • FLAT — platt lådtak.

  • HIPPED — valmat tak (alla sidor lutar mot en topp).

  • GABLE — sadeltak (två lutande sidor, två lodräta ändar).

  • SKILLION — pulpettak (en taklutning).

height anger takhöjden (standard 3.0), slope_angle anger lutningen i grader (standard 30.0) och primary_edge_index väljer referenskanten för pulpettak (standard 0).

Tillgänglighet: 3.7.0 – kräver SFCGAL >= 2.3.0.

Denna metod behöver SFCGAL-backend.

Denna funktion stöder polyedriska ytor.

Exempel

Den generiska dirigenten returnerar samma 3D-tak som de specialiserade hjälpfunktionerna för samma fotavtryck.

Kod
WITH data AS (
  SELECT 'POLYGON((0 0,4 0,4 4,0 4,0 0))'::geometry AS input_footprint
)
SELECT input_footprint AS input_footprint,
       CG_GenerateRoof(input_footprint, 'HIPPED', 2.0, 30.0, 0) AS hipped_roof,
       CG_GenerateRoof(input_footprint, 'FLAT', 2.0, 30.0, 0) AS flat_roof
FROM data;
Utdata
POLYGON((0 0,4 0,4 4,0 4,0 0)) | POLYHEDRALSURFACE Z (((0 4 0,4 4 0,4 0 0,0 0 0,0 4 0)),((0 4 0,0 0 0,2 2 2,0 4 0)),((0 0 0,4 0 0,2 2 2,0 0 0)),((4 0 0,4 4 0,2 2 2,4 0 0)),((4 4 0,0 4 0,2 2 2,4 4 0))) | POLYHEDRALSURFACE Z (((0 0 0,0 4 0,4 4 0,4 0 0,0 0 0)),((0 0 2,4 0 2,4 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,4 4 2,4 4 0,0 4 0)),((4 4 0,4 4 2,4 0 2,4 0 0,4 4 0)),((4 0 0,4 0 2,0 0 2,0 0 0,4 0 0)))
Figur
Geometry figure for visual-cg-generateroof-01