st_makeenvelope

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

Viktigt!

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

Returnerar en geometri som representerar det 2D-axeljusterade kuvertet (minsta avgränsningsruta) som definieras av de två hörnkoordinaterna (x1, y1) och (x2, y2).

För motsvarande Databricks SQL-funktion, se 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 Type Description
x1 pyspark.sql.Column eller flyttal X-koordinaten för det första hörnet.
y1 pyspark.sql.Column eller flyttal Y-koordinaten för det första hörnet.
x2 pyspark.sql.Column eller flyttal X-koordinaten för det andra hörnet.
y2 pyspark.sql.Column eller flyttal Y-koordinaten för det andra hörnet.

Returns

pyspark.sql.Column: En kolumn med geometrivärden som representerar det 2D-axeljusterade kuvertet för de två indatahörnerna. SRID för den returnerade geometrin är 0.

Indatahörn kan tillhandahållas i valfri ordning. det resulterande kuvertet är detsamma som om hörnen normaliserades till (xmin, ymin) och (xmax, ymax).

Vilken typ av returnerad geometri som returneras beror på indatahörn:

  • Om rutan degenereras till en enda punkt (x1 = x2 och y1 = y2) är resultatet en punkt.
  • Om rutan degenereras till ett segment (x1 = x2 eller y1 = y2, men inte båda), blir resultatet en linje med två punkter.
  • Annars blir resultatet en polygon med fem hörn (stängd ring).

Funktionen returnerar None om någon av indata är None.

Exempel

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