CG_GreeneApproxConvexPartition — ポリゴンジオメトリーの近似凸分割を計算します
geometry CG_GreeneApproxConvexPartition(geometry geom);
単調分割に基づくポリゴンジオメトリーの近似凸分割を計算します。
|
|
|
ポリゴン P の分割は、内部同士がインタセクトせず、結合すると元のポリゴン P の内部と同じになるようなポリゴンの集合です。CG_ApproxConvexPartition 関数とCG_GreeneApproxConvexPartition 関数は、概ね最適な凸分割を生成します。両方の関数は、最初にポリゴンをより単純なポリゴンに分解したうえで凸分解を行います。CG_ApproxConvexPartition は三角形を使い、CG_GreeneApproxConvexPartition は単調分割を使います。両方の関数は、凸分割の要素数について最適数の 4倍を超えないことを保証しますが、実行時の複雑さが異なります。三角形ベースの近似アルゴリズムでは、しばしば、凸要素が少なくなりますが、常にそうなるとは限りません。 |
Availability: 3.5.0 - SFCGAL >= 1.5.0が必要です。
SFCGAL >= 1.5.0 が必要
このメソッドには SFCGAL バックエンドが必要です。
グリーンの単調性に基づく近似法では同じポリゴンを使用して、1つのパネル内で直接比較できます。
WITH data AS (
SELECT 'POLYGON((156 150,83 181,89 131,148 120,107 61,32 159,0 45,41 86,45 1,177 2,67 24,109 31,170 60,180 110,156 150))'::geometry AS input_polygon
)
SELECT input_polygon AS input_polygon,
CG_GreeneApproxConvexPartition(input_polygon) AS partition
FROM data;
POLYGON((156 150,83 181,89 131,148 120,107 61,32 159,0 45,41 86,45 1,177 2,67 24,109 31,170 60,180 110,156 150)) | GEOMETRYCOLLECTION(POLYGON((32 159,0 45,41 86,32 159)), POLYGON((45 1,177 2,67 24,45 1)), POLYGON((67 24,109 31,170 60,107 61,67 24)), POLYGON((41 86,45 1,67 24,41 86)), POLYGON((107 61,32 159,41 86,67 24,107 61)), POLYGON((148 120,107 61,170 60,148 120)), POLYGON((148 120,170 60,180 110,156 150,148 120)), POLYGON((156 150,83 181,89 131,148 120,156 150)))