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

ApsaraDB RDS:ST_Union

最終更新日:Mar 29, 2026

複数のジオメトリオブジェクトの幾何学的和(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);

パラメーター

パラメーター説明
g1FieldUNION 操作対象のデータセット内のジオメトリ列です。集計関数として使用される場合に指定します。
g1最初のジオメトリオブジェクトです。
g22 番目のジオメトリオブジェクトです。
g1ArrayUNION 操作対象のジオメトリオブジェクトの配列です。
gridsizeUNION 操作中に頂点をスナップするグリッドセルのサイズです。同一グリッドセル内の頂点はマージされます。デフォルト値: -1.0(無効)。
options並列計算を有効化し、並列処理の次数(1~64)を設定する JSON 文字列です。例: '{"parallel": 4}' は、ワーカー数 4 で並列計算を有効化します。デフォルト値: '{}'(逐次処理)。

説明

ST_Union には以下の 2 つのバージョンがあります。

  • バージョン 1 — 2 つのジオメトリオブジェクト(g1g2)を引数に取り、その UNION を MULTI、NON-MULTI、または GeometryCollection として返します。いずれかの入力が NULL の場合、関数は NULL を返します。

  • バージョン 2 — データセットの列(g1Field)またはジオメトリオブジェクトの配列(g1Array)に対して集計関数として動作します。MULTI または NON-MULTI オブジェクトを返します。

注意事項

ST_Union と ST_Collect の比較

ST_Union は入力ジオメトリ間の境界を解消し、重複領域を検出します。一方、ST_Collect はジオメトリを単にグループ化するだけで、処理を行いません。このため、ST_Union の実行は一般に ST_Collect よりも遅くなります。

結果が非重複である必要がない場合は ST_Collect を使用してください。トポロジ的にクリーンな出力(たとえば、マージされたポリゴンの総面積を算出する場合など)が必要な場合は、ST_Union を使用してください。

ST_Union と ST_Collect の比較

以下のクエリでは、隣接する 2 つのポリゴンに対して両関数を実行しています。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;

12

gridsize および options の使用

以下の例では、オプションの gridsize および options パラメーターを指定した集計関数としての使用方法を示します。

-- gridsize パラメーターを指定します。
select st_area(st_union(geom, 0.005)) from tableA;

-- options パラメーターを指定します。
select st_area(st_union(geom, '{"parallel": 4}'::cstring)) from tableA;

-- gridsize および options パラメーターを同時に指定します。
select st_area(st_union(geom, 0.005, '{"parallel": 4}'::cstring)) from tableA;

次のステップ