st_collect

Gäller för:check markerat ja Databricks Runtime 18 LTS och senare

Note

Databricks Runtime 18 är nyare än Databricks Runtime 18.0, 18.1 och 18.2. Funktioner som tidigare skulle ha levererats som en senare numrerad version levereras nu som daterade uppdateringar till Databricks Runtime 18 i stället. Mer information finns i Om enhetliga viktig information.

Important

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Samlar in en matris med geografi - eller geometrivärden i en enda flerpunkts-, multilinestring-, multipolygon- eller geometrisamling.

För motsvarande Databricks SQL-funktion, se st_collect funktion.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

Parameter Type Description
col pyspark.sql.Column eller str En matris med geografivärden eller en matris med geometrivärden .

Returns

pyspark.sql.Column: Ett geografi - eller geometrivärde som representerar en flerpunkts-, multilinestring-, multipolygon- eller geometrisamling.

Alla None värden i indatamatrisen ignoreras. Typen av utdata beror på typerna av icke-indatageometrierNone :

  • Om alla icke-elementNone är punkter returnerar en multipunkt.
  • Om alla icke-elementNone är linjedragningar returnerar en multilinestring.
  • Om alla icke-elementNone är polygoner returnerar en multipolygon.
  • Annars returnerar en geometrisamling.

Varje utdata innehåller ett element per icke-matriselementNone .

Indata för flera skrivna indata (multipoint, multilinestring, multipolygon) och geometriinsamling bevaras som element i den resulterande geometrisamlingen. de är inte utplattade.

SRID-värdet för utdata är det vanliga SRID-värdet för icke-indatageometrierNone .

Dimensionen för utdata är den maximala gemensamma dimensionen för icke-indatageometrierNone .

Om indatamatrisen är tom eller endast None innehåller värden returneras den tomma 2D-geometrisamlingen. I det här fallet bestäms SRID för utdata enligt följande:

  • Om indatamatrisens elementtyp är GEOGRAPHY(ANY)är 4326SRID för utdata .
  • Om indatamatrisens elementtyp är GEOMETRY(ANY)är 0SRID för utdata .
  • Annars är SRID för utdata som av indatamatrisens elementtyp.

Om två icke-indatageometrierNone har olika SRID-värden genererar funktionen ett ST_DIFFERENT_SRID_VALUES fel.

Funktionen returnerar None om indata är None.

Examples

Samlar in en matris med punkter i en 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))')]

Samlar in en matris med polygoner i en 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)))')]

Samlar in en matris med blandade geometrityper i en geometrisamling.

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

Returnerar den tomma 2D-geometrisamlingen för en tom indatamatris.

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

Returnerar None för indata 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)]