Calcule l'union géométrique de plusieurs objets geometry, en dissolvant les limites partagées et en fusionnant les zones qui se chevauchent pour produire une seule géométrie de sortie.
Syntaxe
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);
Paramètres
| Paramètre | Description |
|---|---|
g1Field |
Colonne geometry du jeu de données sur laquelle effectuer l'union. Utilisée dans la variante d'agrégation. |
g1 |
Premier objet geometry. |
g2 |
Deuxième objet geometry. |
g1Array |
Tableau d'objets geometry à unir. |
gridsize |
Taille de la cellule de grille utilisée pour aligner les sommets lors de l'opération d'union. Les sommets situés dans la même cellule de grille sont fusionnés. Valeur par défaut : -1.0 (désactivé). |
options |
Chaîne JSON permettant d'activer le calcul parallèle et de définir le degré de parallélisme (de 1 à 64). Exemple : '{"parallel": 4}' active le calcul parallèle avec 4 workers. Valeur par défaut : '{}' (calcul séquentiel). |
Description
La fonction ST_Union existe en deux versions :
Version 1 — accepte deux objets geometry (
g1,g2) et renvoie leur union sous forme d'objet MULTI, NON-MULTI ou GeometryCollection. Si l'une des entrées est NULL, la fonction renvoie NULL.Version 2 — fonctionne comme une fonction d'agrégation sur une colonne de jeu de données (
g1Field) ou sur un tableau d'objets geometry (g1Array). Renvoie un objet MULTI ou NON-MULTI.
Notes d'utilisation
ST_Union par rapport à ST_Collect
ST_Union dissout les limites entre les géométries d'entrée et vérifie les zones de chevauchement. ST_Collect regroupe les géométries sans les traiter. Par conséquent, ST_Union est généralement plus lente que ST_Collect.
Utilisez ST_Collect lorsque le résultat n'a pas besoin d'être exempt de chevauchements. Privilégiez ST_Union lorsque vous avez besoin d'une sortie topologiquement propre, par exemple pour calculer la surface totale de polygones fusionnés.
Exemples
Comparaison entre ST_Union et ST_Collect
La requête suivante exécute les deux fonctions sur deux polygones adjacents. ST_Union dissout l'arête partagée, tandis que ST_Collect la conserve.
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;


Utilisation des paramètres gridsize et options
Les exemples suivants illustrent la variante d'agrégation avec les paramètres optionnels gridsize et 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;