名前

ST_CollectionHomogenize — ジオメトリーコレクションを与えると、最も単純な表現を返します。

概要

geometry ST_CollectionHomogenize(geometry collection);

説明

ジオメトリーコレクションを与えると、「最も単純な」表現を返します。

  • 同種の要素からなるコレクションが適切なマルチ系ジオメトリーとして返されます。

  • タイプ混合のコレクションはフラットな単一の GEOMETRYCOLLECTION に変換されます。

  • 単一の非マルチジオメトリー要素からなるコレクションはその要素が返されます。

  • 非マルチジオメトリーは変更されずに返ります。マルチジオメトリーへの変換が必要ならST_Multiを使います。

[警告]

この関数は結果ジオメトリーの妥当性を保証されず、隣接やオーバラップする複数ポリゴンからは不正な MULTIPOLYGON が生成されます。この状況に陥っているかはST_IsValidで確認でき、ST_MakeValidで修復できます。

Availability: 2.0.0

単一要素のコレクションから非マルチジオメトリーへの変換

コード
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0))');
出力
POINT(0 0)
Geometry figure for visual-st-collectionhomogenize-01

ネスト下単一要素のコレクションから非マルチジオメトリーへの変換:

コード
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))');
出力
POINT(0 0)
Geometry figure for visual-st-collectionhomogenize-02

コレクションからマルチ系ジオメトリーへの変換:

コード
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1))');
出力
MULTIPOINT((0 0),(1 1))
Geometry figure for visual-st-collectionhomogenize-03

ネストしたタイプ混合のコレクションからフラットなジオメトリーコレクションへの変換:

コード
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1,2 2)))');
出力
GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))
Geometry figure for visual-st-collectionhomogenize-04

ポリゴンのコレクションから (不正な) マルチポリゴンへの変換:

コード
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION (POLYGON ((10 50,50 50,50 10,10 10,10 50)),POLYGON ((90 50,90 10,50 10,50 50,90 50)))');
出力
MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50)))
Geometry figure for visual-st-collectionhomogenize-05