Aller au contenu principal

st_collect

S'applique à : coché oui Databricks Runtime 18 et versions ultérieures

remarque

Databricks Runtime 18 est plus récent que Databricks Runtime 18,0, 18,1 et 18,2. Les fonctionnalités qui auraient auparavant été livrées sous forme de version numérotée ultérieure sont désormais livrées sous forme de mises à jour datées pour Databricks Runtime 18 à la place. Pour plus de détails, consultez À propos des notes de version unifiées.

info

Aperçu

Cette fonctionnalité est en aperçu public.

Collecte un tableau de valeurs Géographie ou Géométrie dans une seule collection multipoint, multiligne, multipolygone ou de géométries.

Pour la fonction Databricks SQL correspondante, consultez la fonctionst_collect.

Syntaxe

Python
from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

parameter

parameter

Type

Description

col

pyspark.sql.Column OU str

Un tableau de valeurs Geography, ou un tableau de valeurs Geometry.

parameter

Type

Description

col

pyspark.sql.Column OU str

Un tableau de valeurs Geography, ou un tableau de valeurs Geometry.

Renvoie

pyspark.sql.Column: une valeur Geography ou Geometry, représentant une collection de multipoints, multilignes, multipolygones ou géométries.

Toutes les valeurs None dans le tableau d'entrée sont ignorées. Le type de la sortie dépend des types des géométries d'entrée non-None :

  • Si tous les éléments non-None sont des points, renvoie un multipoint.
  • Si tous les éléments autres queNone sont des linestrings, renvoie une multilinestring.
  • Si tous les éléments non-None sont des polygones, renvoie un multipolygone.
  • Sinon, renvoie une collection de géométrie.

Chaque sortie contient un élément par élément de tableau non-None.

Les entrées multi-typées (multipoint, multilinestring, multipolygon) et les entrées de collections de géométries sont conservées comme éléments de la collection de géométries résultante ; elles ne sont pas aplaties.

La valeur SRID de la sortie est la valeur SRID commune des géométries d'entrée non-None.

La dimension de la sortie est la dimension commune maximale des géométries d’entrée non-None.

Si le tableau d'entrée est vide ou ne contient que None valeurs, la collection de géométrie vide 2D est renvoyée. Dans ce cas, le SRID de la sortie est déterminé comme suit :

  • Si le type d'élément du tableau d'entrée est GEOGRAPHY(ANY), le SRID de la sortie est 4326.
  • Si le type d'élément du tableau d'entrée est GEOMETRY(ANY), le SRID de la sortie est 0.
  • Sinon, le SRID de la sortie est celui du type d'élément du tableau d'entrée.

Si deux géométries d'entrée non-None ont des valeurs SRID différentes, la fonction déclenche une erreur ST_DIFFERENT_SRID_VALUES.

La fonction renvoie None si l'entrée est None.

Exemples

Regroupe un tableau de points en un multipoint.

Python
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POINT(1 2)', 'POINT(3 4)')], ['wkt1', 'wkt2'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt1'), dbf.st_geomfromtext('wkt2')))).alias('result')).collect()
Output
[Row(result='MULTIPOINT((1 2),(3 4))')]

Collecte un tableau de polygones en un multipolygone.

Python
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt')))).alias('result')).collect()
Output
[Row(result='MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))')]

Collecte un tableau de types de géométries mixtes dans une collection de géométries.

Python
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))', 'LINESTRING(1 2,3 4)')], ['wkt1', 'wkt2'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt1'), dbf.st_geomfromtext('wkt2')))).alias('result')).collect()
Output
[Row(result='GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),LINESTRING(1 2,3 4))')]

Renvoie la collection de géométries vides 2D pour un tableau d'entrée vide.

Python
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.range(1)
df.select(dbf.st_astext(dbf.st_collect(sf.array())).alias('result')).collect()
Output
[Row(result='GEOMETRYCOLLECTION EMPTY')]

Renvoie None pour une entrée None.

Python
from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.range(1)
df.select(dbf.st_collect(sf.lit(None)).alias('result')).collect()
Output
[Row(result=None)]