st_collect

S’applique à :check marqué oui Databricks Runtime 18 LTS 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 précédemment été livrées sous la forme d’une version numérotée ultérieure sont désormais fournies sous forme de mises à jour databricks Runtime 18 à la place. Pour plus d’informations, consultez À propos des notes de publication unifiées.

Importante

Cette fonctionnalité est disponible en préversion publique.

Collecte un tableau de valeurs Geography ou Geometry dans une collection multipoint, multiligne, multiligne ou géométrie unique.

Pour obtenir plus de détails sur la fonction SQL de Databricks correspondante, consultez st_collect.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

Paramètre Type Description
col pyspark.sql.Column ou str Tableau de valeurs Geography ou tableau de valeurs Geometry .

Returns

pyspark.sql.Column: valeur Geography ou Geometry , représentant une collection multipoint, multilignestring, multipolygon ou geometry.

Toutes les None valeurs du tableau d’entrée sont ignorées. Le type de la sortie dépend des types de géométries nonNone entrées :

  • Si tous les éléments non-élémentsNone sont des points, retourne un multipoint.
  • Si tous les éléments autresNone que des éléments sont des chaînes de ligne, retourne une chaîne multiligne.
  • Si tous les non-élémentsNone sont des polygones, retourne un multipolygon.
  • Sinon, retourne une collection geometry.

Chaque sortie contient un élément par élément nonNone matricielle.

Les entrées multi-typées (multipoint, multilignestring, multipolygon) et les entrées de collection geometry sont conservées en tant qu’éléments de la collection géométrique résultante ; ils ne sont pas aplatir.

La valeur SRID de la sortie est la valeur SRID commune des géométries nonNone entrées.

La dimension de la sortie est la dimension commune maximale des géométries nonNone entrées.

Si le tableau d’entrée est vide ou contient uniquement None des valeurs, la collection geometry vide 2D est retourné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 nonNone entrées ont des valeurs SRID différentes, la fonction génère une erreur ST_DIFFERENT_SRID_VALUES .

La fonction retourne None si l’entrée est None.

Exemples

Collecte un tableau de points dans un multipoint.

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()
[Row(result='MULTIPOINT((1 2),(3 4))')]

Collecte un tableau de polygones dans un multipolygon.

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()
[Row(result='MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))')]

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

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()
[Row(result='GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),LINESTRING(1 2,3 4))')]

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

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()
[Row(result='GEOMETRYCOLLECTION EMPTY')]

Retourne None une None entrée.

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()
[Row(result=None)]