st_collect

Gilt für:check marked yes Databricks Runtime 18 und höher

Hinweis

Databricks Runtime 18 ist neuer als Databricks Runtime 18.0, 18.1 und 18.2. Features, die zuvor als spätere nummerierte Version ausgeliefert wurden, werden stattdessen als veraltete Updates für Databricks Runtime 18 ausgeliefert. Ausführliche Informationen finden Sie unter "Informationen zu einheitlichen Versionshinweisen".

Important

Dieses Feature befindet sich in der Public Preview.

Sammelt ein Array von Geography - oder Geometry-Werten in einer einzelnen Multipoint-, Multilinestring-, Multipolygon- oder Geometry-Auflistung.

Die entsprechende Databricks SQL-Funktion finden Sie unter st_collect Funktion.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameter

Parameter Typ Description
col pyspark.sql.Column oder str Ein Array von Geografiewerten oder ein Array von Geometry-Werten .

Rückkehr

pyspark.sql.Column: Ein Geography - oder Geometry-Wert , der einen Multipoint-, Multilinestring-, Multipolygon- oder Geometrie-Auflistung darstellt.

Alle None Werte im Eingabearray werden ignoriert. Der Typ der Ausgabe hängt von den Typen der NichteingabegeometrienNone ab:

  • Wenn alle Nicht-ElementeNone Punkte sind, wird ein Multipoint zurückgegeben.
  • Wenn alle Nicht-ElementeNone Linienzeichenfolgen sind, wird eine mehrzeilige Zeichenfolge zurückgegeben.
  • Wenn alle Nicht-ElementeNone Polygone sind, wird ein Multipolygon zurückgegeben.
  • Andernfalls wird eine Geometrieauflistung zurückgegeben.

Jede Ausgabe enthält ein Element pro ArrayelementNone .

Eingaben mit mehreren Typen (Multipoint, Multilinestring, Multipolygon) und Geometriesammlungseingaben werden als Elemente der resultierenden Geometriesammlung beibehalten; sie werden nicht abgeflacht.

Der SRID-Wert der Ausgabe ist der gemeinsame SRID-Wert der NichteingabegeometrienNone .

Die Dimension der Ausgabe ist die maximale gemeinsame Dimension der NichteingabegeometrienNone .

Wenn das Eingabearray leer ist oder nur None Werte enthält, wird die leere 2D-Geometrieauflistung zurückgegeben. In diesem Fall wird die SRID der Ausgabe wie folgt bestimmt:

  • Wenn der Elementtyp des Eingabearrays lautet, lautet GEOGRAPHY(ANY)4326die SRID der Ausgabe .
  • Wenn der Elementtyp des Eingabearrays lautet, lautet GEOMETRY(ANY)0die SRID der Ausgabe .
  • Andernfalls entspricht die SRID der Ausgabe dem Elementtyp des Eingabearrays.

Wenn zwei Nichteingabegeometrien unterschiedliche SRID-WerteNone aufweisen, löst die Funktion einen ST_DIFFERENT_SRID_VALUES Fehler aus.

Die Funktion gibt zurück None , wenn die Eingabe lautet None.

Examples

Sammelt ein Array von Punkten in einem 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))')]

Sammelt ein Array von Polygonen in einem 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)))')]

Sammelt ein Array gemischter Geometrietypen in einer Geometrieauflistung.

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))')]

Gibt die leere 2D-Geometrieauflistung für ein leeres Eingabearray zurück.

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')]

Gibt None für eine Eingabe zurück None .

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)]