[geos-commits] [SCM] GEOS branch main updated. 787c5541968728105c7a1d1be84869521eab8931

git at osgeo.org git at osgeo.org
Wed Apr 26 11:04:25 PDT 2023


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, main has been updated
       via  787c5541968728105c7a1d1be84869521eab8931 (commit)
       via  d1bfd096694b7dd13030f5880805efc5c7c5a933 (commit)
       via  dde8a32d28672996c978ee214847f980bf11174c (commit)
      from  b284ec0233a3ea7e68f615a960fe6beaab939814 (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 787c5541968728105c7a1d1be84869521eab8931
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Apr 26 11:03:55 2023 -0700

    Revert "Move to overlayng CoverageUnion, after testing a number of cases, seems mostly the better performing one."
    
    This reverts commit d1bfd096694b7dd13030f5880805efc5c7c5a933.

diff --git a/capi/geos_ts_c.cpp b/capi/geos_ts_c.cpp
index 1a094452a..e166e112a 100644
--- a/capi/geos_ts_c.cpp
+++ b/capi/geos_ts_c.cpp
@@ -80,7 +80,6 @@
 #include <geos/operation/sharedpaths/SharedPathsOp.h>
 #include <geos/operation/union/CascadedPolygonUnion.h>
 #include <geos/operation/union/CoverageUnion.h>
-#include <geos/coverage/CoverageUnion.h>
 #include <geos/operation/union/DisjointSubsetUnion.h>
 #include <geos/operation/valid/IsValidOp.h>
 #include <geos/operation/valid/MakeValid.h>
@@ -1495,11 +1494,7 @@ extern "C" {
     GEOSCoverageUnion_r(GEOSContextHandle_t extHandle, const Geometry* g)
     {
         return execute(extHandle, [&]() {
-            std::vector<const Geometry*> geoms;
-            for (std::size_t i = 0; i < g->getNumGeometries(); i++) {
-                geoms.push_back(g->getGeometryN(i));
-            }
-            auto g3 = geos::coverage::CoverageUnion::Union(geoms);
+            auto g3 = geos::operation::geounion::CoverageUnion::Union(g);
             g3->setSRID(g->getSRID());
             return g3.release();
         });
diff --git a/src/coverage/CoverageUnion.cpp b/src/coverage/CoverageUnion.cpp
index a69a9b71f..4ff5e5fe2 100644
--- a/src/coverage/CoverageUnion.cpp
+++ b/src/coverage/CoverageUnion.cpp
@@ -18,7 +18,7 @@
 #include <geos/geom/GeometryCollection.h>
 #include <geos/geom/GeometryFactory.h>
 #include <geos/operation/overlayng/CoverageUnion.h>
-#include <geos/shape/fractal/HilbertEncoder.h>
+//#include <geos/shape/fractal/HilbertEncoder.h>
 
 using geos::geom::Geometry;
 using geos::geom::GeometryCollection;
@@ -36,8 +36,9 @@ CoverageUnion::Union(std::vector<const Geometry*>& coverage)
     if (coverage.size() == 0)
         return nullptr;
 
-    // Spatial sort polgyons to improve performance
-    shape::fractal::HilbertEncoder::sort(coverage.begin(), coverage.end());
+    //TODO? spatial sort polgyons to improve performance
+    // Test results are somewhat inconclusive
+    //shape::fractal::HilbertEncoder::sort(coverage.begin(), coverage.end());
 
     const GeometryFactory* geomFact = coverage[0]->getFactory();
     std::unique_ptr<GeometryCollection> geoms(geomFact->createGeometryCollection(coverage));

commit d1bfd096694b7dd13030f5880805efc5c7c5a933
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Wed Apr 26 10:59:56 2023 -0700

    Move to overlayng CoverageUnion, after testing a number of cases, seems mostly the better performing one.

diff --git a/capi/geos_ts_c.cpp b/capi/geos_ts_c.cpp
index e166e112a..1a094452a 100644
--- a/capi/geos_ts_c.cpp
+++ b/capi/geos_ts_c.cpp
@@ -80,6 +80,7 @@
 #include <geos/operation/sharedpaths/SharedPathsOp.h>
 #include <geos/operation/union/CascadedPolygonUnion.h>
 #include <geos/operation/union/CoverageUnion.h>
+#include <geos/coverage/CoverageUnion.h>
 #include <geos/operation/union/DisjointSubsetUnion.h>
 #include <geos/operation/valid/IsValidOp.h>
 #include <geos/operation/valid/MakeValid.h>
@@ -1494,7 +1495,11 @@ extern "C" {
     GEOSCoverageUnion_r(GEOSContextHandle_t extHandle, const Geometry* g)
     {
         return execute(extHandle, [&]() {
-            auto g3 = geos::operation::geounion::CoverageUnion::Union(g);
+            std::vector<const Geometry*> geoms;
+            for (std::size_t i = 0; i < g->getNumGeometries(); i++) {
+                geoms.push_back(g->getGeometryN(i));
+            }
+            auto g3 = geos::coverage::CoverageUnion::Union(geoms);
             g3->setSRID(g->getSRID());
             return g3.release();
         });
diff --git a/src/coverage/CoverageUnion.cpp b/src/coverage/CoverageUnion.cpp
index 4ff5e5fe2..a69a9b71f 100644
--- a/src/coverage/CoverageUnion.cpp
+++ b/src/coverage/CoverageUnion.cpp
@@ -18,7 +18,7 @@
 #include <geos/geom/GeometryCollection.h>
 #include <geos/geom/GeometryFactory.h>
 #include <geos/operation/overlayng/CoverageUnion.h>
-//#include <geos/shape/fractal/HilbertEncoder.h>
+#include <geos/shape/fractal/HilbertEncoder.h>
 
 using geos::geom::Geometry;
 using geos::geom::GeometryCollection;
@@ -36,9 +36,8 @@ CoverageUnion::Union(std::vector<const Geometry*>& coverage)
     if (coverage.size() == 0)
         return nullptr;
 
-    //TODO? spatial sort polgyons to improve performance
-    // Test results are somewhat inconclusive
-    //shape::fractal::HilbertEncoder::sort(coverage.begin(), coverage.end());
+    // Spatial sort polgyons to improve performance
+    shape::fractal::HilbertEncoder::sort(coverage.begin(), coverage.end());
 
     const GeometryFactory* geomFact = coverage[0]->getFactory();
     std::unique_ptr<GeometryCollection> geoms(geomFact->createGeometryCollection(coverage));

commit dde8a32d28672996c978ee214847f980bf11174c
Author: Mike Taves <mwtoews at gmail.com>
Date:   Wed Apr 26 13:37:16 2023 +1200

    geosop: set default nArgs = 0 to fix "wrong number of arguments for operation"

diff --git a/util/geosop/GeosOp.h b/util/geosop/GeosOp.h
index 9dbec346b..b5ded9f18 100644
--- a/util/geosop/GeosOp.h
+++ b/util/geosop/GeosOp.h
@@ -22,7 +22,7 @@ using namespace geos::geom;
 
 class OpArguments {
 public:
-    int nArgs;
+    int nArgs = 0;
     double arg1;
     double arg2;
 };

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

Summary of changes:
 util/geosop/GeosOp.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


hooks/post-receive
-- 
GEOS


More information about the geos-commits mailing list