ST_MinBoundingBox takes a geometry column and returns a polygon column. The output column contains a polygon for each geometry in the input column. The polygon is the smallest rectangle of arbitrary alignment that encompasses the input geometry. You can optionally provide a boolean value that determines how the rectangle will be created. There are two options:
True
: Creates a rectangle with the minimum possible area. This is the default.False
: Creates a rectangle with the minimum possible width.
For point geometries, this function will return a degenerate polygon at the location of the point.
To find the minimum bounding box that aligns to the x and y axis, use ST_Envelope.
Function | Syntax |
---|---|
Python | min |
SQL | ST |
Scala | min |
For more details, go to the GeoAnalytics for Microsoft Fabric API reference for min_bounding_box.
Python and SQL Examples
from geoanalytics_fabric.sql import functions as ST
data = [
("POINT (10 30)",),
("MULTIPOINT (0 0, 5 5, 0 5)", ),
("LINESTRING (15 15, 10 15, 12 2)", ),
("POLYGON ((20 30, 18 28, 22 35, 40 20))", )
]
df = spark.createDataFrame(data, ["wkt"])\
.select(ST.geom_from_text("wkt").alias("geometry"))
df = df.withColumn("min_bounding_box", ST.min_bounding_box("geometry"))
ax = df.st.plot("geometry", facecolor="none", edgecolor="red")
df.st.plot("min_bounding_box", ax=ax, facecolor="none", edgecolor="blue")
Scala Example
import com.esri.geoanalytics.sql.{functions => ST}
case class GeometryRow(wkt: String)
val data = Seq(GeometryRow("POINT (10 30)"),
GeometryRow("MULTIPOINT (0 0, 5 5, 0 5)"),
GeometryRow("LINESTRING (15 15, 10 15, 12 2)"),
GeometryRow("POLYGON ((20 30, 18 28, 22 35, 40 20))"))
val df = spark.createDataFrame(data)
.select(ST.geomFromText($"wkt").alias("geometry"))
.withColumn("min_bounding_box", ST.minBoundingBox($"geometry"))
df.select("min_bounding_box").show(truncate = false)
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|min_bounding_box |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
|{"rings":[[[10,30],[10,30],[10,30],[10,30]]]} |
|{"rings":[[[3.061616997868383e-16,5],[5,5],[5,0],[0,0],[3.061616997868383e-16,5]]]} |
|{"rings":[[[11.999999999999998,2],[7.2528089887640395,3.0955056179775298],[10.252808988764045,16.09550561797753],[15,15],[11.999999999999998,2]]]}|
|{"rings":[[[22,35],[42.030769230769224,23.553846153846163],[38.03076923076923,16.553846153846152],[18,28],[22,35]]]} |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
Version table
Release | Notes |
---|---|
1.0.0-beta | Python, SQL, and Scala functions introduced |