Menghitung gabungan geometris dari beberapa objek geometry dengan menghilangkan batas bersama dan menggabungkan wilayah yang tumpang tindih menjadi satu objek geometry output.
Sintaksis
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);Parameter
| Parameter | Deskripsi |
|---|---|
g1Field | Kolom geometry dalam set data yang akan digabungkan. Digunakan dalam varian agregat. |
g1 | Objek geometry pertama. |
g2 | Objek geometry kedua. |
g1Array | Array berisi objek geometry yang akan digabungkan. |
gridsize | Ukuran sel grid untuk menyesuaikan vertex selama operasi union. Vertex yang berada dalam sel grid yang sama akan digabungkan. Default: -1.0 (dinonaktifkan). |
options | String JSON untuk mengaktifkan komputasi paralel dan mengatur tingkat paralelisme (1–64). Contoh: '{"parallel": 4}' mengaktifkan komputasi paralel dengan 4 worker. Default: '{}' (komputasi sekuensial). |
Deskripsi
Fungsi ST_Union memiliki dua versi:
Versi 1 — menerima dua objek geometry (
g1,g2) dan mengembalikan gabungannya sebagai objek MULTI, NON-MULTI, atau GeometryCollection. Jika salah satu input bernilai NULL, fungsi ini mengembalikan NULL.Versi 2 — beroperasi sebagai fungsi agregat pada kolom set data (
g1Field) atau array objek geometry (g1Array), serta mengembalikan objek MULTI atau NON-MULTI.
Catatan penggunaan
ST_Union vs ST_Collect
ST_Union menghilangkan batas antara geometri input dan memeriksa wilayah yang tumpang tindih, sedangkan ST_Collect hanya mengelompokkan geometri tanpa memprosesnya. Oleh karena itu, ST_Union umumnya lebih lambat daripada ST_Collect.
Gunakan ST_Collect jika hasilnya tidak perlu bebas tumpang tindih. Gunakan ST_Union jika Anda memerlukan output yang topologis bersih—misalnya, saat menghitung luas total poligon yang telah digabungkan.
Contoh
Bandingkan ST_Union dan ST_Collect
Kueri berikut menjalankan kedua fungsi tersebut pada dua poligon yang bersebelahan. ST_Union menghilangkan sisi bersama, sedangkan ST_Collect mempertahankannya.
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;

Gunakan gridsize dan options
Contoh berikut menunjukkan varian agregat dengan parameter opsional gridsize dan options.
-- Tentukan parameter gridsize.
select st_area(st_union(geom, 0.005)) from tableA;
-- Tentukan parameter options.
select st_area(st_union(geom, '{"parallel": 4}'::cstring)) from tableA;
-- Tentukan parameter gridsize dan options sekaligus.
select st_area(st_union(geom, 0.005, '{"parallel": 4}'::cstring)) from tableA;