名前

CG_GenerateRoof — 接地部ポリゴンから求める形式の屋根を生成します。

概要

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

説明

2次元接地ポリゴンから屋根を3次元PolyhedralSurface Zで生成します。roof_typeパラメーターで屋根の形式を選択します。形式は次の通りです (デフォルトは'HIPPED'):

  • FLAT — 平屋根。

  • HIPPED — 寄棟造 (全辺から頂点に上がる)。

  • GABLE — 切妻屋根 (2面が傾斜面で、他2面が垂直面)。

  • SKILLION — 片流れ屋根。

heightで屋根の高さを指定します (デフォルトは3.0)。slope_angleで傾斜角を度単位で指定します (デフォルトは30.0)。primary_edge_indexでどの辺を片流れ屋根の高い側にするかを指定します (default 0)。

Availability: 3.7.0 - SFCGAL >= 2.3.0 が必要。

このメソッドにはSFCGALバックエンドが必要です。

この関数は多面体サーフェスに対応しています。

The generic dispatcher returns the same 3D roofs as the specialized helpers for the same footprint.

Code
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;
出力:
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)))
Figure
Geometry figure for visual-cg-generateroof-01