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")

Reply via email to