ST_CollectionExtract — (マルチ)ジオメトリを与えると、指定したタイプの要素でのみ構成される (マルチ)ジオメトリを返します。
geometry ST_CollectionExtract(
geometry collection)
;
geometry ST_CollectionExtract(
geometry collection, integer type)
;
ジオメトリコレクションを指定して、要素の種類を揃えたマルチジオメトリを返します。タイプが指定されている場合には、そのタイプだけを含むマルチジオメトリが返されるか、空のマルチジオメトリが返ります。タイプが指定されていない場合には、次元が最も高いジオメトリだけを含むマルチジオメトリが返ります。つまり、ポリゴンはラインよりも優先され、ラインはポイントより優先されます。求めるタイプでない要素ジオメトリは無視されます。適切なタイプの要素ジオメトリが無い場合には、空ジオメトリが返ります。
ポイント、ライン、ポリゴンのみに対応します。タイプ番号は次の通りです。
1 == POINT
2 == LINESTRING
3 == POLYGON
Availability: 1.5.0
![]() | |
1.5.3より前では、この関数は、非コクレションの入力については手を付けずに問題のないタイプで返しました。1.5.3では、適合しない単一ジオメトリについてはNULLを返しました。2.0.0では、適合するジオメトリが無い場合は常にEMPTYを返すようになりました。 |
![]() | |
3 == POLYGONを指定すると、エッジが共有されていたとしてもマルチポリゴンが返ります。この関数をST_Splitの結果への適用の多くの場合に不正なマルチポリゴンとなります。 |
-- 定数: 1 == ポイント, 2 == ラインストリング, 3 == ポリゴン SELECT ST_AsText(ST_CollectionExtract(ST_GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)))'),1)); st_astext --------------- MULTIPOINT(0 0) (1 row) SELECT ST_AsText(ST_CollectionExtract(ST_GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1)),LINESTRING(2 2, 3 3))'),2)); st_astext --------------- MULTILINESTRING((0 0, 1 1), (2 2, 3 3)) (1 row)