名前

CG_ApproximateMedialAxis — 面ジオメトリの近似的な中心軸を計算します。

概要

geometry CG_ApproximateMedialAxis(geometry geom);

geometry CG_ApproximateMedialAxis(geometry geom, boolean projected);

説明

ストレートスケルトンを基に、実際の入力の近似的な中心軸を返します。可能な版(1.2.0以上)でビルドするとSFCGAL独自APIを使います。そうでない場合には、CG_StraightSkeleton (遅い)関数をラッピングした関数となります。

projectedtrueの場合には、中心軸の自由端点がポリゴン境界に届くよう延長されます (投影中心軸)。SFCGAL 2.3.0以上が必要です。古いバージョンのSFCGALでビルドされている場合には、通知が出され、非投影の結果が返されます。

Availability: 3.5.0

Availability: 3.7.0 - projectedパラメーター。投影された結果を得るには SFCGAL >= 2.3.0 が必要。古いバージョンでは通知が出力され、非投影の結果になります。

[注記]

この関数はZ値を無視します。この関数を3次元ジオメトリ上で使用したとしても、常に2次元の結果となります。

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

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

この関数は三角形と不規則三角網 (TIN)に対応しています。

A polygon and its approximate medial axis.

Code
WITH data AS (
  SELECT 'POLYGON((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190))'::geometry AS polygon
)
SELECT polygon AS input_polygon,
       CG_ApproximateMedialAxis(polygon) AS medial_axis
FROM data;
出力:
POLYGON((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190)) | MULTILINESTRING((184.189 15.811,158.377 20),(50 20,158.377 20),(50 20,35 35),(35 153.151,35 35),(35 153.151,40.697 159.303),(164.04 164.04,40.697 159.303))
Figure
Geometry figure for visual-cg-approximatemedialaxis-01

この例ではポリゴン境界に延長された自由端を持つ投影中心軸を計算します。

Code
SELECT CG_ApproximateMedialAxis('POLYGON((0 0,2 0,2 1,0 1,0 0))', true);
出力:
MULTILINESTRING((0 0.5,0.5 0.5,1.5 0.5,2 0.5))
Figure
Geometry figure for visual-cg-approximatemedialaxis-02