Name

ST_RemoveSmallParts — ジオメトリの全ての小さな部位 (ポリゴンのリングまたはラインストリング)を削除します。

Synopsis

geometry ST_RemoveSmallParts(geometry geom, double precision minSizeX, double precision minSizeY);

説明

小さい部位 (外側リングや内側リングやラインストリング)を持たないgeometryを返します。

この関数は、地図の簡略化における、小さい島や穴を削除するたといった前処理段階で使います。

(MULTI)POLYGONと(MULTI)LINESTRINGのタイプのジオメトリだけが評価されます。他のジオメトリは変更されません。

minSizeXが0より大きい場合には、minSizeXより小さい幅の部位が分けられます。

minSizeYが0より大きい場合には、minSizeYより小さい高さの部位が分けられます。

minSizeXminSizeYは、ともにジオメトリの座標系の単位で計測されます。

ポリゴンタイプの場合には、評価はリングごとに個別に行われ、次の結果のいずれかが導かれます:

  • 元のジオメトリ

  • 全てのリングで頂点が減ったPOLYGON、

  • 内側リングの数が減ったPOLYGON (さらに頂点が減っている場合あり)、

  • POLYGON EMPTY、

  • 要素ポリゴン数が減ったMULTIPOLYGON (さらに内側リング数や頂点数が減っている場合あり)、

  • MULTIPOLYGON EMPTY。

ラインストリングタイプの場合には、ラインストリングごとに評価が行われるので、次のような結果が導かれます:

  • 元のジオメトリ

  • 頂点数の減ったLINESTRING、

  • LINESTRING EMPTY、

  • 要素ラインストリング数の減ったMULTILINESTRING (さらに頂点が減っている場合あり)、

  • MULTILINESTRING EMPTY。

例: マルチポリゴンを適用したST_RemoveSmallParts()。青い領域が残った領域です。

Availability: 3.5.0

SELECT ST_AsText(
                        ST_RemoveSmallParts(
                        ST_GeomFromText('MULTIPOLYGON(
                                ((60 160, 120 160, 120 220, 60 220, 60 160), (70 170, 70 210, 110 210, 110 170, 70 170)),
                                ((85 75, 155 75, 155 145, 85 145, 85 75)),
                                ((50 110, 70 110, 70 130, 50 130, 50 110)))'),
                                50, 50));
                
                st_astext
                ---------
                        MULTIPOLYGON(((60 160,120 160,120 220,60 220,60 160)),((85 75,155 75,155 145,85 145,85 75)))
                
SELECT ST_AsText(
                        ST_RemoveSmallParts(
                        ST_GeomFromText('LINESTRING(10 10, 20 20)'),
                                50, 50));
                
                st_astext
                ---------
                        LINESTRING EMPTY