st_collect

Aplica-se a:check marked yes Databricks Runtime 18 LTS e superior

Observação

O Databricks Runtime 18 é mais recente que o Databricks Runtime 18.0, 18.1 e 18.2. Os recursos que anteriormente teriam sido enviados como uma versão numerada posterior agora são fornecidos como atualizações datadas para o Databricks Runtime 18. Para obter detalhes, consulte Sobre notas de versão unificadas.

Importante

Esse recurso está em Visualização Pública.

Coleta uma matriz de valores geography ou geometry em uma única coleção de vários pontos, multilinha, multipolígono ou geometria.

Para a função SQL do Databricks correspondente, consulte a função st_collect.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

Parâmetro Tipo Descrição
col pyspark.sql.Column ou str Uma matriz de valores geography ou uma matriz de valores geometry .

Returns

pyspark.sql.Column: um valor geography ou geometry , representando uma coleção multipoint, multilinestring, multipolygon ou geometry.

Todos None os valores na matriz de entrada são ignorados. O tipo da saída depende dos tipos das geometrias que não são deNone entrada:

  • Se todos os nãoNone elementos forem pontos, retornará um multiponto.
  • Se todos os nãoNone elementos forem linestrings, retornará uma multilinha.
  • Se todos os nãoNone elementos forem polígonos, retornará um multipolígono.
  • Caso contrário, retorna uma coleção de geometria.

Cada saída contém um elemento por elemento não matrizNone .

Entradas de vários tipos (multipoint, multilinestring, multipolygon) e entradas da coleção geometry são preservadas como elementos da coleção de geometria resultante; eles não são achatados.

O valor SRID da saída é o valor SRID comum das geometrias não deNone entrada.

A dimensão da saída é a dimensão máxima comum das geometrias que não são deNone entrada.

Se a matriz de entrada estiver vazia ou contiver apenas None valores, a coleção de geometria vazia 2D será retornada. Nesse caso, o SRID da saída é determinado da seguinte maneira:

  • 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 tipo de elemento da matriz de entrada.

Se duas geometrias não deNone entrada 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 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))')]

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

Coleta uma matriz de tipos de geometria misturada em uma coleção de geometria.

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 vazia 2D 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 None entrada.

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