

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# ST\$1Collect
<a name="ST_Collect-function"></a>

ST\$1Collect a deux variantes. L’une accepte deux géométries et l’autre accepte une expression agrégée. 

La première variante de ST\$1Collect crée une géométrie à partir des géométries en entrée. L’ordre des géométries en entrée est conservé. Cette variante fonctionne comme suit : 
+ Si les deux géométries en entrée sont des valeurs point, alors une valeur `MULTIPOINT` avec deux valeurs point est renvoyée. 
+ Si les deux géométries en entrée sont des valeurs linestring, alors une valeur `MULTILINESTRING` avec deux valeurs linestrings est renvoyée. 
+ Si les deux géométries en entrée sont des polygones, alors un `MULTIPOLYGON` avec deux polygones est renvoyé. 
+ Sinon, une valeur `GEOMETRYCOLLECTION` avec deux géométries en entrée est renvoyée. 

La deuxième variante de ST\$1Collect crée une géométrie à partir de géométries dans une colonne de géométrie. Il n’y a pas d’ordre de renvoi déterminé des géométries. Spécifiez la clause WITHIN GROUP (ORDER BY...) pour spécifier l’ordre des géométries renvoyées. Cette variante fonctionne comme suit : 
+ Si toutes les lignes non NULL de l’expression d’agrégation en entrée sont des points, un multipoint contenant tous les points de l’expression d’agrégation est renvoyé. 
+ Si toutes les lignes non NULL de l’expression agrégée sont des linestrings, une multilinestring contenant toutes les linestrings de l’expression agrégée est renvoyée. 
+ Si toutes les lignes non NULL de l’expression agrégée sont des polygones, un multipolygone contenant tous les polygones de l’expression agrégée est renvoyé. 
+ Sinon, une `GEOMETRYCOLLECTION` contenant toutes les géométries de l’expression agrégée est renvoyée. 

ST\$1Collect renvoie la géométrie de la même dimension que les géométries en entrée. Toutes les géométries en entrée doivent être de la même dimension.

## Syntaxe
<a name="ST_Collect-function-syntax"></a>

```
ST_Collect(geom1, geom2)
```

```
ST_Collect(aggregate_expression)  [WITHIN GROUP (ORDER BY sort_expression1 [ASC | DESC] [, sort_expression2 [ASC | DESC] ...])]
```

## Arguments
<a name="ST_Collect-function-arguments"></a>

 *geom1*   
Valeur de type de données `GEOMETRY` ou expression qui est évaluée sur un type `GEOMETRY`. 

 *geom2*   
Valeur de type de données `GEOMETRY` ou expression qui est évaluée sur un type `GEOMETRY`. 

 *aggregate\$1expression*   
Colonne de type de données `GEOMETRY` ou expression qui est évaluée sur un type `GEOMETRY`. 

 [WITHIN GROUP (ORDER BY *sort\$1expression1* [ASC \$1 DESC] [, *sort\$1expression2* [ASC \$1 DESC] ...])]   
Clause facultative qui spécifie l’ordre de tri des valeurs regroupées. La clause ORDER BY contient une liste d’expressions de tri. Les expressions de tri sont des expressions similaires aux expressions de tri valides dans une liste de sélection de requête, telles qu’un nom de colonne. Vous pouvez spécifier un ordre de tri croissant (`ASC`) ou décroissant (`DESC`). La valeur par défaut est `ASC`. 

## Type de retour
<a name="ST_Collect-function-return"></a>

`GEOMETRY` de sous-type `MULTIPOINT`, `MULTILINESTRING`, `MULTIPOLYGON` ou `GEOMETRYCOLLECTION`. 

La valeur de l’identifiant de système de référence spatiale (SRID) de la géométrie renvoyée est la valeur SRID des géométries d’entrée. 

Si *geom1* ou *geom2* est null, null est renvoyé. 

Si toutes les lignes de *aggregate\$1expression* sont null, null est renvoyé. 

Si *geom1* est null, une copie de *geom2* est renvoyée. De même, si *geom2* est null, une copie de *geom1* est renvoyée.

Si *geom1* et *geom2* ont des valeurs SRID différentes, une erreur est renvoyée. 

Si deux géométries dans *aggregate\$1expression* ont des valeurs SRID différentes, une erreur est renvoyée. 

Si la géométrie renvoyée est supérieure à la taille maximale d’une `GEOMETRY`, une erreur est renvoyée. 

Si *geom1* et *geom2* ont des dimensions différentes, une erreur est renvoyée. 

Si deux géométries dans *aggregate\$1expression* ont des dimensions différentes, une erreur est renvoyée. 

## Exemples
<a name="ST_Collect-function-examples"></a>

Le code SQL suivant renvoie une collection de géométries qui contient les deux géométries d’entrée. 

```
SELECT ST_AsText(ST_Collect(ST_GeomFromText('LINESTRING(0 0,1 1)'), ST_GeomFromText('POLYGON((10 10,20 10,10 20,10 10))')));
```

```
st_astext
-----------
 GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),POLYGON((10 10,20 10,10 20,10 10)))
```

Le code SQL suivant collecte toutes les géométries d’une table dans une collection de géométries. 

```
WITH tbl(g) AS (SELECT ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT NULL::geometry UNION ALL
SELECT ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326))
SELECT ST_AsEWKT(ST_Collect(g)) FROM tbl;
```

```
st_astext
-----------
 SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,10 0),MULTIPOINT((13 4),(8 5),(4 4)),POLYGON((0 0,10 0,0 10,0 0)))
```

Le code SQL suivant collecte toutes les géométries de la table regroupées par la colonne id et classées par cet ID. Dans cet exemple, les géométries résultantes sont regroupées par ID comme suit : 
+ id 1 — points dans un multipoint.
+ id 2 : linestrings dans une multilinestring.
+ id 3 — sous-types mixtes d’une collection de géométries.
+ id 4 — polygones dans un multipolygone.
+ id 5 — null et le résultat est null.

```
WITH tbl(id, g) AS (SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT id, ST_AsEWKT(ST_Collect(g)) FROM tbl GROUP BY id ORDER BY id;
```

```
 id |                                                 st_asewkt                                                 
----+-----------------------------------------------------------------------------------------------------------
  1 | SRID=4326;MULTIPOINT((1 2),(4 5))
  2 | SRID=4326;MULTILINESTRING((0 0,10 0),(10 0,20 -5))
  3 | SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT((13 4),(8 5),(4 4)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)))
  4 | SRID=4326;MULTIPOLYGON(((0 0,10 0,0 10,0 0)),((20 20,20 30,30 20,20 20)))
  5 |
```

Le SQL suivant collecte toutes les géométries d’une table d’une collection de géométries. Les résultats sont classés par ordre décroissant par `id`, puis classés de manière lexicographique en fonction de leurs coordonnées x minimales et maximales. 

```
WITH tbl(id, g) AS (
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT ST_AsEWKT(ST_Collect(g) WITHIN GROUP (ORDER BY id DESC, ST_XMin(g), ST_XMax(g))) FROM tbl;
```

```
                                                                                                                  st_asewkt                                                                                                                  
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 SRID=4326;GEOMETRYCOLLECTION(POLYGON((0 0,10 0,0 10,0 0)),POLYGON((20 20,20 30,30 20,20 20)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)),MULTIPOINT((13 4),(8 5),(4 4)),LINESTRING(0 0,10 0),LINESTRING(10 0,20 -5),POINT(1 2),POINT(4 5)
```