This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository geos.

commit 703594d98ea2f441e8b97688e0c645f3f876da3e
Author: Bas Couwenberg <[email protected]>
Date:   Tue Nov 28 20:08:55 2017 +0100

    Add patch to fix empty GEOSSimplify return on inner ring collapse.
---
 debian/changelog                                   |   1 +
 ...EOSSimplify-return-on-inner-ring-collapse.patch | 110 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 3 files changed, 112 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 38dca16..b569511 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,7 @@ geos (3.5.1-4) UNRELEASED; urgency=medium
 
   * Ignore test failures on problematic architectures only.
   * Strip trailing whitespace from changelog, control & rules files.
+  * Add patch to fix empty GEOSSimplify return on inner ring collapse.
 
  -- Bas Couwenberg <[email protected]>  Fri, 20 Jan 2017 15:57:07 +0100
 
diff --git 
a/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch
 
b/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch
new file mode 100644
index 0000000..ed5c02f
--- /dev/null
+++ 
b/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch
@@ -0,0 +1,110 @@
+Description: Fix empty GEOSSimplify return on inner ring collapse
+ .
+ Patch by Even Rouault
+ See #741
+ .
+ git-svn-id: http://svn.osgeo.org/geos/trunk@4311 
5242fede-7e19-0410-aef8-94bd7d2200fb
+Author: Even Rouault
+Origin: 
https://git.osgeo.org/gogs/geos/geos/commit/710ddbe48177c215f98dd5e90fb64460b35401a7
+Bug: https://trac.osgeo.org/geos/ticket/741
+
+--- a/include/geos/geom/util/GeometryTransformer.h
++++ b/include/geos/geom/util/GeometryTransformer.h
+@@ -99,6 +99,8 @@ public:
+ 
+       std::auto_ptr<Geometry> transform(const Geometry* nInputGeom);
+ 
++      void setSkipTransformedInvalidInteriorRings(bool b);
++
+ protected:
+ 
+       const GeometryFactory* factory;
+@@ -178,9 +180,14 @@ private:
+        */
+       bool preserveType;
+ 
+-    // Declare type as noncopyable
+-    GeometryTransformer(const GeometryTransformer& other);
+-    GeometryTransformer& operator=(const GeometryTransformer& rhs);
++      /**
++       * <code>true</code> if transformed invalid interior rings should be 
skipped
++       */
++      bool skipTransformedInvalidInteriorRings;
++
++      // Declare type as noncopyable
++      GeometryTransformer(const GeometryTransformer& other);
++      GeometryTransformer& operator=(const GeometryTransformer& rhs);
+ };
+ 
+ 
+--- a/src/geom/util/GeometryTransformer.cpp
++++ b/src/geom/util/GeometryTransformer.cpp
+@@ -59,13 +59,19 @@ GeometryTransformer::GeometryTransformer
+       pruneEmptyGeometry(true),
+       preserveGeometryCollectionType(true),
+       preserveCollections(false),
+-      preserveType(false)
++      preserveType(false),
++      skipTransformedInvalidInteriorRings(false)
+ {}
+ 
+ GeometryTransformer::~GeometryTransformer()
+ {
+ }
+ 
++void GeometryTransformer::setSkipTransformedInvalidInteriorRings(bool b)
++{
++      skipTransformedInvalidInteriorRings = b;
++}
++
+ /*public*/
+ auto_ptr<Geometry>
+ GeometryTransformer::transform(const Geometry* nInputGeom)
+@@ -283,6 +289,8 @@ GeometryTransformer::transformPolygon(
+ 
+               if ( ! dynamic_cast<LinearRing*>(hole.get()) )
+               {
++                      if ( skipTransformedInvalidInteriorRings )
++                          continue;
+                       isAllValidLinearRings = false;
+               }
+ 
+--- a/src/simplify/DouglasPeuckerSimplifier.cpp
++++ b/src/simplify/DouglasPeuckerSimplifier.cpp
+@@ -89,6 +89,7 @@ DPTransformer::DPTransformer(double t)
+       :
+       distanceTolerance(t)
+ {
++      setSkipTransformedInvalidInteriorRings(true);
+ }
+ 
+ Geometry::AutoPtr
+--- a/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp
++++ b/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp
+@@ -335,5 +335,26 @@ namespace tut
+         //std::string const simplifiedWkt2 = 
wktwriter.write(simplified2.get());
+       }
+ 
++      // 13 - Polygon with inner ring whose extent is less than the simplify 
distance (#741)
++      template<>
++      template<>
++      void object::test<13>()
++      {
++              std::string wkt_in("POLYGON ((0 0,0 1,1 1,0 0),(0.1 0.1,0.2 
0.1,0.2 0.2,0.1 0.1))");
++
++              std::string wkt_ex("POLYGON ((0 0,0 1,1 1,0 0))");
++
++              GeomPtr g(wktreader.read(wkt_in));
++
++              GeomPtr expected(wktreader.read(wkt_ex));
++
++              GeomPtr simplified = DouglasPeuckerSimplifier::simplify(
++                      g.get(), 0.5);
++
++              ensure( simplified->isValid() );
++
++              ensure( simplified->equalsExact(expected.get()) );
++      }
++
+ } // namespace tut
+ 
diff --git a/debian/patches/series b/debian/patches/series
index b70acfb..2d72de3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@ libruby
 ruby2
 disable-docygen-html-timestamp
 spelling-errors.patch
+0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-grass/geos.git

_______________________________________________
Pkg-grass-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to