st_makeenvelope

Gilt für:check marked yes Databricks Runtime 18.2 und höher

Important

Dieses Feature befindet sich in der Public Preview.

Gibt eine Geometrie zurück, die den 2D-Achsenausrichtungsumschlag (Minimale Begrenzungsfeld) darstellt, der durch die beiden Eckkoordinaten (x1, y1) und .(x2, y2)

Die entsprechende Databricks SQL-Funktion finden Sie unter st_makeenvelope Funktion.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_makeenvelope(x1=<x1>, y1=<y1>, x2=<x2>, y2=<y2>)

Parameters

Parameter Typ Description
x1 pyspark.sql.Column oder float Die X-Koordinate der ersten Ecke.
y1 pyspark.sql.Column oder float Die Y-Koordinate der ersten Ecke.
x2 pyspark.sql.Column oder float Die X-Koordinate der zweiten Ecke.
y2 pyspark.sql.Column oder float Die Y-Koordinate der zweiten Ecke.

Rückkehr

pyspark.sql.Column: Eine Spalte mit Geometriewerten , die den 2D-Achsenausrichtungsumschlag der beiden Eingabeecke darstellen. Die SRID der zurückgegebenen Geometrie ist 0.

Die Eingabeecke können in beliebiger Reihenfolge bereitgestellt werden; Der resultierende Umschlag entspricht dem, wenn die Ecken normalisiert (xmin, ymin) wurden und (xmax, ymax).

Der Typ der zurückgegebenen Geometrie hängt von den Eingabeecke ab:

  • Wenn das Feld zu einem einzelnen Punkt (x1 = x2 und y1 = y2), ist das Ergebnis ein Punkt.
  • Wenn das Feld zu einem Segment (x1 = x2 oder y1 = y2, aber nicht beide) abweicht, ist das Ergebnis eine Linienzeichenfolge mit zwei Punkten.
  • Andernfalls ist das Ergebnis ein Polygon mit fünf Scheitelpunkten (geschlossener Ring).

Die Funktion gibt zurück None , wenn eine der Eingaben lautet None.

Beispiele

# Returns the polygon envelope defined by two corners.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1.0, 2.0, 4.0, 6.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_astext(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result='POLYGON((1 2,1 6,4 6,4 2,1 2))')]
# Corners may be provided in any order.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(4.0, 6.0, 1.0, 2.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_astext(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result='POLYGON((1 2,1 6,4 6,4 2,1 2))')]
# Returns a point when the box degenerates to a point.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(3.0, 5.0, 3.0, 5.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_astext(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result='POINT(3 5)')]
# Returns a linestring when the box degenerates to a horizontal segment.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1.0, 0.0, 4.0, 0.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_astext(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result='LINESTRING(1 0,4 0)')]
# Returns a linestring when the box degenerates to a vertical segment.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(0.0, 2.0, 0.0, 7.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_astext(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result='LINESTRING(0 2,0 7)')]
# The SRID of the returned geometry is always 0.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(0.0, 0.0, 10.0, 10.0)], ['x1', 'y1', 'x2', 'y2'])
df.select(dbf.st_srid(dbf.st_makeenvelope('x1', 'y1', 'x2', 'y2')).alias('result')).collect()
[Row(result=0)]