st_collect

Si applica a:check contrassegnato come sì Databricks Runtime 18 e versioni successive

Note

Databricks Runtime 18 è più recente di Databricks Runtime 18.0, 18.1 e 18.2. Le funzionalità che in precedenza avrebbero fornito come versione numerata successiva ora vengono forniti come aggiornamenti datati a Databricks Runtime 18. Per informazioni dettagliate, vedere Informazioni sulle note sulla versione unificata.

Importante

Questa funzionalità è in Anteprima Pubblica.

Raccoglie una matrice di valori Geography o Geometry in un singolo insieme multipunto, multilinestring, multipolygon o geometry.

Per la funzione SQL di Databricks corrispondente, vedere st_collect funzione.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parametri

Parametro Tipo Description
col pyspark.sql.Column oppure str Matrice di valori Geography o matrice di valori Geometry .

Returns

pyspark.sql.Column: valore Geography o Geometry , che rappresenta un insieme multipunto, multilinestring, multipolygon o geometry.

Tutti i None valori nella matrice di input vengono ignorati. Il tipo di output dipende dai tipi delleNone geometrie non di input:

  • Se tutti gli elementi nonNone sono punti, restituisce un multipunto.
  • Se tutti gli elementi nonNone sono linestring, restituisce una stringa multilinea.
  • Se tutti gli elementi nonNone sono poligoni, restituisce un multipolygon.
  • In caso contrario, restituisce un insieme geometry.

Ogni output contiene un elemento per ogni elemento nonNone di matrice.

Gli input multitipo (multipoint, multilinestring, multipolygon) e gli input della raccolta geometry vengono mantenuti come elementi della raccolta geometry risultante; non sono appiattiti.

Il valore SRID dell'output è il valore SRID comune delleNone geometrie non di input.

La dimensione dell'output è la dimensione massima comune delle geometrie nonNone di input.

Se la matrice di input è vuota o contiene solo None valori, viene restituita la raccolta geometry vuota 2D. In questo caso, l'identificatore SRID dell'output viene determinato nel modo seguente:

  • Se il tipo di elemento della matrice di input è GEOGRAPHY(ANY), l'identificatore SRID dell'output è 4326.
  • Se il tipo di elemento della matrice di input è GEOMETRY(ANY), l'identificatore SRID dell'output è 0.
  • In caso contrario, lo SRID dell'output è quello del tipo di elemento della matrice di input.

Se due geometrie nonNone di input hanno valori SRID diversi, la funzione genera un errore di ST_DIFFERENT_SRID_VALUES .

La funzione restituisce None se l'input è None.

Examples

Raccoglie una matrice di punti in un multipunto.

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

Raccoglie una matrice di poligoni in 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)))')]

Raccoglie una matrice di tipi di geometria misti in una raccolta 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))')]

Restituisce l'insieme geometry vuoto 2D per una matrice di input vuota.

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

Restituisce None per un None input.

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