st_makeenvelope

S’applique à :check marqué oui Databricks Runtime 18.2 et versions ultérieures

Important

Cette fonctionnalité est disponible en préversion publique.

Renvoie une géométrie représentant l’enveloppe alignée sur l’axe 2D (cadre englobant minimal) définie par les deux coordonnées (x1, y1) d’angle et (x2, y2).

Pour obtenir plus de détails sur la fonction SQL de Databricks correspondante, consultez st_makeenvelope.

Syntax

from pyspark.databricks.sql import functions as dbf

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

Parameters

Paramètre Catégorie Description
x1 pyspark.sql.Column ou float Coordonnée X du premier angle.
y1 pyspark.sql.Column ou float Coordonnée Y du premier angle.
x2 pyspark.sql.Column ou float Coordonnée X du deuxième angle.
y2 pyspark.sql.Column ou float Coordonnée Y du deuxième angle.

Returns

pyspark.sql.Column: colonne de valeurs Geometry représentant l’enveloppe alignée sur l’axe 2D des deux angles d’entrée. Le SRID de la géométrie retournée est 0.

Les angles d’entrée peuvent être fournis dans n’importe quel ordre ; l’enveloppe résultante est la même que si les coins ont été normalisés et (xmin, ymin)(xmax, ymax).

Le type de la géométrie retournée dépend des angles d’entrée :

  • Si la zone se dégénère à un seul point (x1 = x2 et y1 = y2), le résultat est un point.
  • Si la zone dégénère en segment (x1 = x2 ou, mais y1 = y2pas les deux), le résultat est une chaîne de ligne avec deux points.
  • Sinon, le résultat est un polygone avec cinq sommets (anneau fermé).

La fonction retourne None si l’une des entrées est None.

Exemples

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