Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_Collect

Última atualização: Sep 02, 2026

Agrupa objetos de geometria em um tipo MULTI\* ou GeometryCollection, conforme as geometrias de entrada tenham o mesmo tipo (homogêneas) ou tipos diferentes (heterogêneas).

Sintaxe

geometry ST_Collect(geometry g1, geometry g2);
geometry ST_Collect(geometry[] g1Array);
geometry ST_Collect(geometry set g1Field);

Parâmetros

Parâmetro

Descrição

g1

Primeiro objeto de geometria.

g2

Segundo objeto de geometria.

g1Array

Array de objetos de geometria.

g1Field

Campo de objetos de geometria de um conjunto de dados. Use ao chamar ST_Collect como função de agregação.

Notas de uso

A função ST_Collect tem três variantes:

  • Variante 1 — duas entradas (g1, g2): Combina dois objetos de geometria. Retorna um tipo MULTI\* se ambas as entradas tiverem o mesmo tipo de geometria; caso contrário, retorna uma GeometryCollection.

  • Variante 2 — array (g1Array): Reúne um array de objetos de geometria em uma única coleção.

  • Variante 3 — agregação (g1Field): Atua como função de agregação e reúne todos os objetos de geometria de um conjunto de linhas em uma única geometria.

A ST_Collect aceita objetos CircularString e Curve, mas nem sempre retorna o tipo MultiCurve ou MULTI\* esperado.

Se alguma entrada já for um tipo de coleção (MULTI\* ou GeometryCollection), a ST_Collect retornará uma GeometryCollection em vez de um tipo MULTI\* plano. Para evitar isso, use ST_Dump em uma subconsulta para expandir as coleções de entrada em seus elementos atômicos antes de chamar a ST_Collect .

ST_Collect vs. ST_Union

Ambas as funções combinam objetos de geometria, mas apresentam comportamentos distintos:

Comportamento

ST_Collect

ST_Union

Dissolução de limites

Não

Sim

Tratamento de LineString

Retorna MultiLineString

Divide nas interseções de nós

Tipo de retorno

MULTI\* ou GeometryCollection

Pode retornar geometria simples

Desempenho

Mais rápida

Mais lenta

Use ST_Collect para agrupar geometrias sem mesclar seus limites. Use ST_Union quando precisar dissolver as geometrias em uma única geometria unificada.

Exemplos

Variante 1: Duas entradas

Colete dois pontos do mesmo tipo para retornar um MULTIPOINT:

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'POINT(0 1)'::geometry));

Resultado:

      st_astext
---------------------
 MULTIPOINT(0 0,0 1)
(1 row)

Colete geometrias de tipos diferentes para retornar uma GeometryCollection:

SELECT ST_AsText(ST_Collect('POINT(0 0)'::geometry, 'LINESTRING(0 2,0 3)'::geometry));

Resultado:

                     st_astext
----------------------------------------------------
 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 2,0 3))
(1 row)

Variante 3: Agregação

Colete todos os pontos de uma subconsulta em um único MULTIPOINT:

SELECT ST_AsText(ST_Collect(t.geom))
FROM (
  SELECT (ST_DumpPoints(st_buffer('POINT(0 0)'::geometry, 1, 'quad_segs=2'))).geom AS geom
) AS t;

Resultado:

                               st_astext
----------------------------------------------------------------
 MULTIPOINT(1 0,0.707106781186548 -0.707106781186547,0 -1,-0.70
 7106781186546 -0.707106781186549,-1 0,-0.70710678118655 0.70710
 6781186545,0 1,0.707106781186544 0.707106781186551,1 0)
(1 row)

Veja também