このトピックでは、ST_Union関数について説明します。 この関数は、複数の指定されたジオメトリオブジェクトの和集合を表すジオメトリオブジェクトを作成します。
構文
geometry ST_Union(geometry set g1Field);
geometry ST_Union(geometry g1 , geometry g2);
geometry ST_Union(geometry[] g1Array);
geometry ST_Union(geometry set g1Field, float8 gridsize);
geometry ST_Union(geometry set g1Field, cstring options);
geometry ST_Union(geometry set g1Field, float8 gridsize, cstring options);
geometry ST_Union(geometry[] g1Array, float8 gridsize);
geometry ST_Union(geometry[] g1Array, cstring options);
geometry ST_Union(geometry[] g1Array, float8 gridsize, cstring options);パラメーター
パラメーター | 説明 |
g1field | データセットで指定するジオメトリオブジェクトのフィールド。 |
g1 | 指定する最初のジオメトリオブジェクト。 |
g2 | 指定する2番目のジオメトリオブジェクト。 |
g1Array | ジオメトリオブジェクトで構成される配列。 |
gridsize | 指定するグリッドのサイズ。 このパラメーターは、ユニオン操作を実行するときに同じグリッド内の頂点をマージするために使用されます。 デフォルト値は -1.0で、このパラメーターが無効であることを示します。 |
options | 指定する並列コンピューティング機能のステータスと並列処理の程度。 このパラメーターは、並列コンピューティング機能を有効にし、並列度を決定するために使用されます。 この機能を有効にする場合、このパラメーターの値を |
説明
この関数の出力タイプは、MULTIまたはGeometryCollectionです。 ST_Union関数には2つのバージョンがあります。
バージョン1: ST_Union関数の入力は2つのジオメトリオブジェクトです。 ST_Union関数の出力は、MULTI、NON-MULTI、またはGeometryCollectionオブジェクトです。 2つのジオメトリオブジェクトのいずれかがNULLの場合、ST_Union関数はNULLを返します。
バージョン2: ST_Union関数は集約関数として機能します。 入力は、ジオメトリオブジェクトのコレクションです。 出力は、MULTIまたはNON-MULTIオブジェクトにすることができます。
ST_Collect関数とST_Union関数は交換可能である。 ST_Union関数は、指定したジオメトリオブジェクトの境界を解消して、構築されたMultiPolygonオブジェクトに交差する部分があるかどうかを確認します。 したがって、ほとんどの場合、ST_UnionはST_Collect関数よりも低速で実行されます。
例
次の例は、ST_Union関数とST_Collect関数の違いを示しています。
SELECT ST_Union(g1,g2),ST_Collect(g1,g2) from (select 'POLYGON((0 0,1 0,1 2,0 2,0 0))'::geometry as g1,'POLYGON((1 0,3 0,3 1,1 1,1 0))'::geometry as g2) as t;

次の例は、gridsizeパラメータとoptionsパラメータの異なる設定での計算を示しています
-- Specify the gridsize parameter. select st_area(st_union(geom, 0.005)) from tableA; -- Specify the options parameter. select st_area(st_union(geom, '{"parallel": 4}'::cstring)) from tableA; -- Specify the gridsize and options parameters at a time. select st_area(st_union(geom, 0.005, '{"parallel": 4}'::cstring)) from tableA;