[geos-commits] [SCM] GEOS branch 3.15 updated. ba13c5a0329ee8b0edd5d2562286f220e55866fe

git at osgeo.org git at osgeo.org
Thu Sep 10 08:37:39 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GEOS".

The branch, 3.15 has been updated
       via  ba13c5a0329ee8b0edd5d2562286f220e55866fe (commit)
      from  19ff2e15e6be07e853db3c4ec5c3229ed10abf42 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ba13c5a0329ee8b0edd5d2562286f220e55866fe
Author: Daniel Baston <dbaston at gmail.com>
Date:   Thu Sep 10 11:37:20 2026 -0400

    GeometrySplitter: handle MultiSurface inputs (#1527)

diff --git a/NEWS.md b/NEWS.md
index 831d214db..7ba8f81b8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -3,6 +3,7 @@
 
 - Fixes/Improvements:
   - Fix arc noding failure with endpoint intersections (GH-1513, Dan Baston)
+  - Make GeometrySplitter able to split MultiSurface inputs (GH-1518, Dan Baston)
 
 ## Changes in 3.15.0
 2026-09-01
diff --git a/src/operation/split/GeometrySplitter.cpp b/src/operation/split/GeometrySplitter.cpp
index b669b14ea..5319acd91 100644
--- a/src/operation/split/GeometrySplitter.cpp
+++ b/src/operation/split/GeometrySplitter.cpp
@@ -14,6 +14,7 @@
 
 #include <geos/operation/split/GeometrySplitter.h>
 
+#include <geos/algorithm/locate/SimplePointInAreaLocator.h>
 #include <geos/geom/CircularString.h>
 #include <geos/geom/CompoundCurve.h>
 #include <geos/geom/CoordinateSequence.h>
@@ -363,7 +364,7 @@ GeometrySplitter::splitPolygonalWithEdge(const Geometry &geom, const Geometry &e
         for (auto& surface : surfaces)
         {
             const auto testPoint = getInteriorPoint(*surface);
-            if (geom.intersects(testPoint.get())) {
+            if (algorithm::locate::SimplePointInAreaLocator::isContained(*testPoint->getCoordinate(), &geom)) {
                 keep.push_back(std::move(surface));
             }
         }
diff --git a/tests/unit/operation/split/GeometrySplitterTest.cpp b/tests/unit/operation/split/GeometrySplitterTest.cpp
index d4700ec47..478c053ec 100644
--- a/tests/unit/operation/split/GeometrySplitterTest.cpp
+++ b/tests/unit/operation/split/GeometrySplitterTest.cpp
@@ -912,4 +912,15 @@ void object::test<75>()
         "GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE ((5 0, 0 0, 5 5), CIRCULARSTRING (5 5, 7 1, 5 0))), POLYGON ((0 0, 0 5, 5 5, 0 0)))");
 }
 
+template<>
+template<>
+void object::test<77>()
+{
+    set_test_name("split MultiSurface with LineString");
+
+    testSplit("MULTISURFACE(CURVEPOLYGON (COMPOUNDCURVE((5 0, 0 0, 0 5, 5 5), CIRCULARSTRING(5 5, 7 1, 5 0))))",
+        "LINESTRING(3 6, 3 -1)",
+        "GEOMETRYCOLLECTION (CURVEPOLYGON (COMPOUNDCURVE ((5 0, 3 0, 3 5, 5 5), CIRCULARSTRING (5 5, 7 1, 5 0))), POLYGON ((3 0, 0 0, 0 5, 3 5, 3 0)))");
+}
+
 }

-----------------------------------------------------------------------

Summary of changes:
 NEWS.md                                             |  1 +
 src/operation/split/GeometrySplitter.cpp            |  3 ++-
 tests/unit/operation/split/GeometrySplitterTest.cpp | 11 +++++++++++
 3 files changed, 14 insertions(+), 1 deletion(-)


hooks/post-receive
-- 
GEOS


More information about the geos-commits mailing list