名前

ST_CollectionExtract — ジオメトリーコレクションを与えると、指定されたタイプの要素だけからなるマルチジオメトリを返します。

概要

geometry ST_CollectionExtract(geometry collection);

geometry ST_CollectionExtract(geometry collection, integer type);

説明

ジオメトリーコレクションを指定すると、要素のタイプが統一されたマルチジオメトリーを返します。

typeが指定されていない場合には、最大次元のジオメトリーだけを含むマルチジオメトリーを返します。このため、ポリゴンはラインに優先され、ラインはポイントに優先されます。

typeが指定されている場合には、指定されたタイプだけを含むマルチジオメトリーを返します。指定されたタイプの要素が無い場合には、EMPTY ジオメトリを返します。ポイント、ライン、ポリゴンだけに対応しています。タイプの番号は次の通りです。

  • 1 == POINT

  • 2 == LINESTRING

  • 3 == POLYGON

非マルチジオメトリーの入力に対しては、ジオメトリーのタイプと指定したタイプが合致している場合には変更せず返します。合致しない場合には、指定したタイプの EMPTY ジオメトリを返します。ST_Multi"/>を使ってマルチ系ジオメトリーに変換する必要があるならST_Multiを使います。

[警告]

マルチポリゴンの結果は妥当性チェックを行いません。ポリゴン要素が隣接やオーバラップしている場合には、結果ジオメトリーは不正となります (たとえば、この関数をST_Splitの結果に適用すると発生します)。この状況に陥っているかはST_IsValidで確認でき、ST_MakeValidで修復できます。

Availability: 1.5.0

[注記]

1.5.3より前のこの関数は非マルチジオメトリーの入力に対して、指定タイプに関係なく変更せずに返しました。1.5.3で指定タイプに合致しない単一ジオメトリー入力に対してNULL を返すようになりました。2.0.0で、合致しないジオメトリーに対して、指定タイプの EMPTY ジオメトリーを返すようになりました。

最大次元となるタイプの抽出:

コード
SELECT ST_CollectionExtract('GEOMETRYCOLLECTION( POINT(0 0), LINESTRING(1 1,2 2) )');
出力
MULTILINESTRING((1 1, 2 2))
Geometry figure for visual-st-collectionextract-01

ポイントの抽出 (type 1 == POINT):

コード
SELECT ST_CollectionExtract('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)))',
        1);
出力
MULTIPOINT((0 0))
Geometry figure for visual-st-collectionextract-02

ラインの抽出 (type 2 == LINESTRING):

コード
SELECT ST_CollectionExtract('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(LINESTRING(0 0,1 1)), LINESTRING(2 2,3 3))',
        2);
出力
MULTILINESTRING((0 0, 1 1), (2 2, 3 3))
Geometry figure for visual-st-collectionextract-03