Calcula a união geométrica de vários objetos geometry, dissolve limites compartilhados e mescla regiões sobrepostas em um único objeto geometry de saída.
Sintaxe
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);
Parâmetros
|
Parâmetro |
Descrição |
|
|
Coluna de geometria do conjunto de dados a unir. Usada na variante agregada. |
|
|
Primeiro objeto geometry. |
|
|
Segundo objeto geometry. |
|
|
Array de objetos geometry para união. |
|
|
Tamanho da célula da grade para ajuste de vértices durante a operação de união. Vértices na mesma célula são mesclados. Padrão: |
|
|
String JSON para ativar computação paralela e definir o grau de paralelismo (1–64). Exemplo: |
Descrição
A função ST_Union tem duas versões:
Versão 1: recebe dois objetos geometry (
g1,g2) e retorna a união como MULTI, NON-MULTI ou GeometryCollection. Se alguma entrada for NULL, a função retorna NULL.Versão 2: opera como função agregada em uma coluna de conjunto de dados (
g1Field) ou em um array de objetos geometry (g1Array). Retorna um objeto MULTI ou NON-MULTI.
Notas de uso
ST_Union vs ST_Collect
A ST_Union dissolve os limites entre as geometrias de entrada e verifica regiões sobrepostas. A ST_Collect agrupa geometrias sem processá-las. Por isso, a ST_Union geralmente é mais lenta que a ST_Collect.
Use a ST_Collect quando o resultado não precisar ser livre de sobreposições. Use a ST_Union quando for necessária uma saída topologicamente limpa, como ao calcular a área total de polígonos mesclados.
Exemplos
Comparação entre ST_Union e ST_Collect
A consulta a seguir executa ambas as funções em dois polígonos adjacentes. A ST_Union dissolve a aresta compartilhada; a ST_Collect a preserva.
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;


Uso de gridsize e options
Os exemplos a seguir mostram a variante agregada com os parâmetros opcionais gridsize e 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;