ST_Collect — Crée une géométrie GeometryCollection ou Multi à partir d'un ensemble de géométries.
geometry ST_Collect(geometry g1, geometry g2);
geometry ST_Collect(geometry[] g1_array);
geometry ST_Collect(geometry set g1field);
Rassemble les géométries dans une collection de géométries. Le résultat est soit un Multi*, soit une GeometryCollection, selon que les géométries d'entrée ont des types identiques ou différents (homogènes ou hétérogènes). Les géométries d'entrée restent inchangées dans la collection.
Variante 1: accepte géométries en entrée
Variante 2: accepte un tableau de géométries
Variante 3: fonction agrégée acceptant un ensemble de géométries.
|
|
|
|
If any input geometry is a collection (Multi* or GeometryCollection), ST_Collect returns a GeometryCollection, since that is the only type which can contain nested collections. To prevent this, use ST_Dump in a subquery to expand input collections to their atomic elements (see example below).
Disponibilité : 1.4.0 - ST_Collect(geomarray) a été introduit. ST_Collect a été amélioré pour gérer plus de géométries plus rapidement.
Cette fonction prend en charge la 3D et ne supprime pas l'indice z.
Cette méthode prend en charge les types Circular String et Curve.
Two-input variant.
Collectez les points 2D.
SELECT ST_Collect(
'POINT(1 2)',
'POINT(-2 3)' );
MULTIPOINT((1 2),(-2 3))
Collectez les points 3D.
SELECT ST_Collect(
'POINT(1 2 3)',
'POINT(1 2 4)' );
MULTIPOINT(1 2 3,1 2 4)
Collectez les courbes.
SELECT ST_Collect(
'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)');
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406), CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))
Array variant.
Utilisation d'un constructeur de tableau pour une sous-requête.
SELECT ST_Collect(ARRAY(SELECT geom FROM sometable));
Utilisation d'un constructeur de tableau pour les valeurs.
SELECT ST_Collect(
ARRAY[ 'LINESTRING(1 2,3 4)'::geometry,
'LINESTRING(3 4,4 5)'::geometry ] ) As wktcollect;
MULTILINESTRING((1 2,3 4),(3 4,4 5))
Aggregate variant.
Création de collections multiples en regroupant les géométries dans une table.
SELECT stusps, ST_Collect(geom) AS geom FROM ( SELECT stusps, (ST_Dump(geom)).geom AS geom FROM somestatetable ) AS f GROUP BY stusps;