名前

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

概要

geometry ST_CollectionHomogenize(geometry collection);

説明

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

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

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

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

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

[警告]

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

Availability: 2.0.0

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

Code
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0))');
出力:
POINT(0 0)
Figure
Geometry figure for visual-st-collectionhomogenize-01

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

Code
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))');
出力:
POINT(0 0)
Figure
Geometry figure for visual-st-collectionhomogenize-02

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

Code
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1))');
出力:
MULTIPOINT((0 0),(1 1))
Figure
Geometry figure for visual-st-collectionhomogenize-03

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

Code
SELECT ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1,2 2)))');
出力:
GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))
Figure
Geometry figure for visual-st-collectionhomogenize-04

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

Code
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)))
Figure
Geometry figure for visual-st-collectionhomogenize-05