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

PolarDB:ST_Collect

最終更新日:Jul 01, 2024

このトピックでは、ST_Collect関数について説明します。 この関数は、入力ジオメトリオブジェクトのコレクションを表すジオメトリオブジェクトを返します。

構文

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

パラメーター

パラメーター

説明

g1Field

データセットで指定するジオメトリオブジェクトのフィールド。

g1

指定する最初のジオメトリオブジェクト。

g2

指定する2番目のジオメトリオブジェクト。

g1Array

指定するジオメトリオブジェクトで構成される配列。

説明

  • この関数は、MULTIまたはGeometryCollectionオブジェクトを返します。 ST_Collect関数には2つのバージョンがあります。

    • バージョン1: ST_Collect関数の入力は2つのジオメトリオブジェクトです。 この場合、この関数はMULTIまたはGeometryCollectionオブジェクトを返します。

    • バージョン2: ST_Collect関数は集約関数として機能します。 ST_Collect関数の入力は、ジオメトリオブジェクトのコレクションです。 この関数は、ST_Geometry関数によって返されるジオメトリオブジェクトを返します。

  • ST_Collect関数は、CircularStringオブジェクトとCurveオブジェクトをサポートします。 この関数は、期待どおりにMultiCurveオブジェクトまたはMULTIオブジェクトを返さない場合があります。

  • ST_Collect関数とST_Union関数は互換性があります。 ST_Collect関数は、MULTIまたはGeometryCollectionオブジェクトを返します。 ST_Union関数は、入力ジオメトリオブジェクトの境界をディゾルブするので、ジオメトリオブジェクトを返すことができる。 また、ST_Union関数はノードの交点でLineStringオブジェクトを分割しますが、ST_Collect関数はMultiLineStringオブジェクトを返します。

    • ほとんどの場合、ST_Union関数は指定されたジオメトリオブジェクトの境界を解消するか、構築されたMultiPolygonオブジェクトに交差する部分があるかどうかを確認するため、ST_Collect関数はST_Union関数よりも高速に実行されます。 ST_Collect関数は、ジオメトリオブジェクトをMULTIオブジェクトに収集するか、またはMULTIオブジェクトをGeometryCollectionオブジェクトに収集します。

    • ST_Dump関数を使用してMULTIオブジェクトをジオメトリオブジェクトに変換し、そのジオメトリオブジェクトをST_Collect関数に指定できます。 これにより、ST_Collect関数がMULTIオブジェクトのGeomotryCollectionオブジェクトを返すのを防ぎます。

  • 次のステートメントを実行してMULTIオブジェクトを返します。

    SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'POINT(0 1)'::geometry));
          st_astext
    ---------------------
     MULTIPOINT(0 0,0 1)
    (1 row)
                        
  • 次のステートメントを実行して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 row)
                        
  • 次のステートメントを実行して入力データセットを集約します。

    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.7071.
    .06781186545,0 1,0.707106781186544 0.707106781186551,1 0)
    (1 row)