適用対象:はい Databricks Runtime 18.2 以降と![]()
と(x1, y1)の 2 つの角座標によって定義された 2D 軸で整列されたエンベロープ (最小境界ボックス) を表す (x2, y2)返します。
対応する Databricks SQL 関数については、 st_makeenvelope 関数を参照してください。
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.st_makeenvelope(x1=<x1>, y1=<y1>, x2=<x2>, y2=<y2>)
Parameters
| パラメーター | タイプ | Description |
|---|---|---|
x1 |
pyspark.sql.Column またはフロート |
最初のコーナーの X 座標。 |
y1 |
pyspark.sql.Column またはフロート |
最初のコーナーの Y 座標。 |
x2 |
pyspark.sql.Column またはフロート |
2 番目のコーナーの X 座標。 |
y2 |
pyspark.sql.Column またはフロート |
2 番目のコーナーの Y 座標。 |
返品
pyspark.sql.Column: 2 つの入力コーナーの 2D 軸にアラインされたエンベロープを表す Geometry 値の列。 返されるジオメトリの SRID は 0 です。
入力コーナーは任意の順序で提供することができます。結果のエンベロープは、角が (xmin, ymin) および (xmax, ymax)に正規化された場合と同じです。
返されるジオメトリの種類は、入力コーナーによって異なります。
- ボックスが単一の点 (
x1 = x2およびy1 = y2) に縮退した場合、結果はポイントになります。 - ボックスがセグメント (
x1 = x2またはy1 = y2、両方ではなく) に縮退する場合、結果は 2 つの点を持つラインストリングになります。 - それ以外の場合、結果は 5 つの頂点 (閉じたリング) を持つ多角形になります。
いずれかの入力がNoneされている場合、関数はNoneを返します。
例示
# 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)]