Pular para o conteúdo principal

st_collect

Aplica-se a: Verificado como sim Databricks Runtime 18 e acima

info

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

Python
from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Uma matriz de valores de Geografia ou uma matriz de valores de Geometria.

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

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ãoNone forem pontos, retorna um multiponto.
  • Se todos os elementos não-None forem linestrings, retorna uma multilinestring.
  • Se todos os elementos não-None forem 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.

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

Reúne uma matriz de polígonos em um multipolígono.

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

Agrupa uma matriz de tipos de geometria mistos em uma coleção de geometrias.

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

Retorna a coleção de geometria 2D vazia para uma matriz de entrada vazia.

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

Retorna None para uma entrada 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)]