ST_Aggr_Union operates on a grouped DataFrame and returns the union of geometries in each group. All geometries are required to have the same type. For example, using ST_Aggr_Union with a column that has a mix of point, linestring, and polygon geometry types is undefined behavior. You can group your DataFrame using DataFrame.groupBy() or with a GROUP BY clause in a SQL statement.
To find the union of geometries in each record, use ST_Union.
| Function | Syntax |
|---|---|
| Python | aggr |
| SQL | ST |
| Scala | aggr |
For more details, go to the GeoAnalytics for Microsoft Fabric API reference for aggr_union.
Examples
from geoanalytics_fabric.sql import functions as ST, Polygon
data = [
(1, Polygon([[[5,5],[12,5],[12,10],[5,10],[5,5]]])),
(1, Polygon([[[10,8],[14,8],[14,15],[10,15],[10,8]]])),
(2, Polygon([[[6,8],[20,8],[20,20],[6,20],[6,8]]]))
]
df = spark.createDataFrame(data, ["id", "polygon"])
df.groupBy("id")\
.agg(ST.aggr_union("polygon").alias("aggr_union"))\
.show(truncate=False)Result
+---+-----------------------------------------------------------------------------+
|id |aggr_union |
+---+-----------------------------------------------------------------------------+
|1 |{"rings":[[[5,5],[5,10],[10,10],[10,15],[14,15],[14,8],[12,8],[12,5],[5,5]]]}|
|2 |{"rings":[[[6,8],[20,8],[20,20],[6,20],[6,8]]]} |
+---+-----------------------------------------------------------------------------+Version table
| Release | Notes |
|---|---|
1.0.0-beta | Python, SQL, and Scala functions introduced |