st_collect
Aplica-se a: Databricks Runtime 18 LTS e acima
Visualização
Esse recurso está em Prévia Pública.
Agrupa um conjunto de valores Geography ou Geometry em um único multiponto, multilinestring, multipolygon ou coleção de geometria.
Para a função correspondente do Databricks SQL, consulte a st_collect função.
Sintaxe
from pyspark.databricks.sql import functions as dbf
dbf.st_collect(col=<col>)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Uma matriz de valores de Geografia ou uma matriz de valores de Geometria. |
Devolve
pyspark.sql.Column: Um valor de Geografia ou Geometria, que representa um multiponto, multilinestring, multipolígono ou uma coleção de geometrias.
Quaisquer valores de None na matriz de entrada são ignorados. O tipo de saída depende dos tipos das geometrias de entrada não-None:
- Se todos os elementos que não são
Noneforem pontos, retorna um multiponto. - Se todos os elementos não-
Noneforem linestrings, retorna uma multilinestring. - Se todos os elementos não-
Noneforem polígonos, retorna um multipolígono. - Caso contrário, retorna uma coleção de geometria.
Cada saída contém um elemento para cada elemento do array que não sejaNone.
Entradas de vários tipos (multipoint, multilinestring, multipolygon) e entradas de coleção de geometria são preservadas como elementos da coleção de geometria resultante; elas não são achatadas.
O valor SRID da saída é o valor SRID comum das geometrias de entrada não-None.
A dimensão da saída é a dimensão comum máxima das geometrias de entrada não-None.
Se a matriz de entrada estiver vazia ou contiver apenas valores None, a coleção de geometria vazia 2D será retornada. Nesse caso, o SRID da saída é determinado da seguinte forma:
- Se o tipo de elemento da matriz de entrada for
GEOGRAPHY(ANY), o SRID da saída será4326. - Se o tipo de elemento da matriz de entrada for
GEOMETRY(ANY), o SRID da saída será0. - Caso contrário, o SRID da saída é o do tipo de elemento do array de entrada.
Se quaisquer duas geometrias de entrada não-None tiverem valores SRID diferentes, a função gerará um erro ST_DIFFERENT_SRID_VALUES.
A função retorna None se a entrada for None.
Exemplos
Coleta-se uma matriz de pontos em um multiponto.
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))')]
Reúne uma matriz de polígonos em um multipolígono.
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)))')]
Agrupa uma matriz de tipos de geometria mistos em uma coleção de geometrias.
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))')]
Retorna a coleção de geometria 2D vazia para uma matriz de entrada vazia.
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')]
Retorna None para uma entrada 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)]