Name

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

Synopsis

geometry ST_CollectionHomogenize(geometry collection);

説明

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

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

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

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

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

[Warning]

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

Availability: 2.0.0

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

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0))'));

        st_astext
        ------------
        POINT(0 0)

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

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))'));

        st_astext
        ------------
        POINT(0 0)

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

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0),POINT(1 1))'));

        st_astext
        ---------------------
        MULTIPOINT((0 0),(1 1))

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

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1, 2 2)))'));

        st_astext
        ---------------------
        GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2))

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

SELECT ST_AsText(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)))'));

        st_astext
        ---------------------
        MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50)))

関連情報

ST_CollectionExtract, ST_Multi, ST_IsValid, ST_MakeValid