This is an automated email from the ASF dual-hosted git repository.
jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git
The following commit(s) were added to refs/heads/master by this push:
new 9642ff3d2d [GH-2470] Fix ST_Envelope behavior to return input geom for
empty geom cases (#2471)
9642ff3d2d is described below
commit 9642ff3d2db84fa25d77caa03963a6a6f99d51d3
Author: Peter Nguyen <[email protected]>
AuthorDate: Sat Nov 1 21:53:25 2025 -0700
[GH-2470] Fix ST_Envelope behavior to return input geom for empty geom
cases (#2471)
---
.../java/org/apache/sedona/common/Functions.java | 3 +++
.../org/apache/sedona/sql/functionTestScala.scala | 20 ++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/common/src/main/java/org/apache/sedona/common/Functions.java
b/common/src/main/java/org/apache/sedona/common/Functions.java
index a9d59b28ff..5139a885a1 100644
--- a/common/src/main/java/org/apache/sedona/common/Functions.java
+++ b/common/src/main/java/org/apache/sedona/common/Functions.java
@@ -572,6 +572,9 @@ public class Functions {
}
public static Geometry envelope(Geometry geometry) {
+ if (geometry.isEmpty()) {
+ return geometry;
+ }
return geometry.getEnvelope();
}
diff --git
a/spark/common/src/test/scala/org/apache/sedona/sql/functionTestScala.scala
b/spark/common/src/test/scala/org/apache/sedona/sql/functionTestScala.scala
index f1311a03d1..35634c6061 100644
--- a/spark/common/src/test/scala/org/apache/sedona/sql/functionTestScala.scala
+++ b/spark/common/src/test/scala/org/apache/sedona/sql/functionTestScala.scala
@@ -207,6 +207,26 @@ class functionTestScala
assert(functionDf.count() > 0)
}
+ it("Passes ST_Envelope returns input if input is empty") {
+ var emptyGeometries = Seq(
+ ("POINT EMPTY"),
+ ("LINESTRING EMPTY"),
+ ("POLYGON EMPTY"),
+ ("MULTIPOINT EMPTY"),
+ ("MULTILINESTRING EMPTY"),
+ ("MULTIPOLYGON EMPTY"),
+ ("GEOMETRYCOLLECTION EMPTY"),
+ ("GEOMETRYCOLLECTION (GEOMETRYCOLLECTION EMPTY, LINESTRING
EMPTY)")).toDF("wkt")
+
+ emptyGeometries.createOrReplaceTempView("emptyGeometries")
+ var functionDf = sparkSession.sql(
+ "SELECT ST_AsText(ST_Envelope(ST_GeomFromWKT(wkt))) FROM
emptyGeometries")
+
+ val inputWkts = emptyGeometries.collect().map(_.getString(0))
+ val resultWkts = functionDf.collect().map(_.getString(0))
+ assert(resultWkts.sameElements(inputWkts))
+ }
+
it("Passed ST_Expand") {
val baseDf = sparkSession.sql(
"SELECT ST_GeomFromWKT('POLYGON ((50 50 1, 50 80 2, 80 80 3, 80 50 2,
50 50 1))') as geom")