すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ST_Collect

最終更新日:Mar 29, 2026

入力ジオメトリ オブジェクトを、入力ジオメトリの型が同一(同種)か異なる(異種)かに応じて、MULTI\* 型または GeometryCollection 型に集約します。

構文

geometry ST_Collect(geometry g1, geometry g2);
geometry ST_Collect(geometry[] g1Array);
geometry ST_Collect(geometry set g1Field);

パラメーター

パラメーター説明
g1最初のジオメトリ オブジェクトです。
g22 番目のジオメトリ オブジェクトです。
g1Arrayジオメトリ オブジェクトの配列です。
g1Fieldデータセットから取得したジオメトリ オブジェクトのフィールドです。集計関数として ST_Collect を呼び出す場合に使用します。

注意事項

ST_Collect には以下の 3 つのバリエーションがあります。

  • バリエーション 1 — 2 入力 (g1, g2):2 つのジオメトリ オブジェクトを結合します。両方の入力が同一のジオメトリ型である場合は MULTI\* 型を返し、型が異なる場合は GeometryCollection を返します。

  • バリエーション 2 — 配列 (g1Array):ジオメトリ オブジェクトの配列を単一のコレクションに結合します。

  • バリエーション 3 — 集計 (g1Field):集計関数として動作し、行セット内のすべてのジオメトリ オブジェクトを単一のジオメトリに集約します。

ST_Collect は CircularString および Curve オブジェクトをサポートしていますが、すべての場合において期待される MultiCurve や MULTI\* 型を返すとは限りません。

入力のいずれかが既にコレクション型(MULTI\* または GeometryCollection)である場合、ST_Collect は FLAT な MULTI\* 型ではなく、GeometryCollection を返します。これを回避するには、サブクエリ内で ST_Dump を使用して、入力コレクションを原子要素に展開した後、ST_Collect を呼び出してください。

ST_Collect と ST_Union の比較

両関数ともジオメトリ オブジェクトを結合しますが、動作は異なります。

動作ST_CollectST_Union
境界を解消するいいえはい
LineString の処理MultiLineString を返すノード交点で分割する
戻り値の型MULTI\* または GeometryCollection単純ジオメトリを返す場合あり
パフォーマンス高速低速

ジオメトリの境界線を統合せずにグループ化する場合は ST_Collect を使用してください。ジオメトリを単一の統合ジオメトリに溶解(マージ)する必要がある場合は、ST_Union を使用してください。

バリエーション 1:2 入力

同一タイプの 2 つのポイントを収集 — MULTIPOINT を返します。

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'POINT(0 1)'::geometry));

結果:

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

異なるタイプのジオメトリを収集 — GeometryCollection を返します。

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'LINESTRING(0 2,0 3)'::geometry));

結果:

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

バリエーション 3:集計

サブクエリから取得したすべてのポイントを単一の MULTIPOINT に収集します。

SELECT ST_AsText(ST_Collect(t.geom))
FROM (
  SELECT (ST_DumpPoints(st_buffer('POINT(0 0)'::geometry, 1, 'quad_segs=2'))).geom AS geom
) AS t;

結果:

                               st_astext
----------------------------------------------------------------
 MULTIPOINT(1 0,0.707106781186548 -0.707106781186547,0 -1,-0.70
 7106781186546 -0.707106781186549,-1 0,-0.70710678118655 0.70710
 6781186545,0 1,0.707106781186544 0.707106781186551,1 0)
(1 行)

関連ドキュメント