st_collect

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 18 LTS en hoger

Note

Databricks Runtime 18 is nieuwer dan Databricks Runtime 18.0, 18.1 en 18.2. Functies die eerder als een latere genummerde versie werden verzonden, worden nu verzonden als gedateerde updates voor Databricks Runtime 18. Zie Voor meer informatie over geïntegreerde releaseopmerkingen.

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

Verzamelt een matrix met geografie - of geometriewaarden in één multipoint-, multilinestring-, multipolygon- of geometrieverzameling.

Voor de overeenkomstige Databricks SQL-functie, zie de st_collect functie.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

Parameter Typ Description
col pyspark.sql.Column of str Een matrix met geografiewaarden of een matrix met geometriewaarden .

Returns

pyspark.sql.Column: Een geografie - of geometriewaarde , die een verzameling multipoints, multilinestring, multipolygon of geometrie vertegenwoordigt.

Alle None waarden in de invoermatrix worden genegeerd. Het type uitvoer is afhankelijk van de typen niet-invoergeometrieënNone :

  • Als alle niet-elementenNone punten zijn, wordt een multipoint geretourneerd.
  • Als alle niet-elementenNone lijnen zijn, retourneert u een multilinestring.
  • Als alle niet-elementenNone veelhoeken zijn, retourneert u een multipolygon.
  • Anders wordt een geometrieverzameling geretourneerd.

Elke uitvoer bevat één element per niet-matrixelementNone .

Invoer met meerdere typen (multipoint, multilinestring, multipolygon) en geometrieverzamelingsinvoer blijven behouden als elementen van de resulterende geometrieverzameling; ze zijn niet afgevlakt.

De SRID-waarde van de uitvoer is de gemeenschappelijke SRID-waarde van de niet-invoergeometrieënNone .

De dimensie van de uitvoer is de maximale gemeenschappelijke dimensie van de niet-invoergeometrieënNone .

Als de invoermatrix leeg is of alleen None waarden bevat, wordt de verzameling 2D lege geometrie geretourneerd. In dit geval wordt de SRID van de uitvoer als volgt bepaald:

  • Als het elementtype van de invoermatrix is GEOGRAPHY(ANY), is 4326de SRID van de uitvoer .
  • Als het elementtype van de invoermatrix is GEOMETRY(ANY), is 0de SRID van de uitvoer .
  • Anders is de SRID van de uitvoer dat van het elementtype van de invoermatrix.

Als er twee niet-invoergeometrieënNone verschillende SRID-waarden hebben, veroorzaakt de functie een ST_DIFFERENT_SRID_VALUES fout.

De functie retourneert None als de invoer is None.

Examples

Verzamelt een matrix met punten in een 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))')]

Verzamelt een matrix van veelhoeken in een 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)))')]

Verzamelt een matrix van gemengde geometrietypen in een geometrieverzameling.

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

Retourneert de 2D lege geometrieverzameling voor een lege invoermatrix.

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

Retourneert None een None invoer.

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