#1081: TopologyPreservingSimplifier / GEOSTopologyPreserveSimplify on Windows ------------------------+-------------------------- Reporter: Mike Taves | Owner: geos-devel@… Type: defect | Status: new Priority: blocker | Milestone: 3.9.0 Component: Unit Tests | Version: master Severity: Unassigned | Keywords: ------------------------+-------------------------- As discussed on mail list: https://lists.osgeo.org/pipermail/geos- devel/2020-November/009856.html
With GEOS 3.9.0beta1 for Windows, both C++ and C API versions of !TopologyPreservingSimplifier and GEOSTopologyPreserveSimplify, respectively, provide sometimes random incorrect results. In the test suite, this can be run using the command: {{{ test_geos_unit "geos::simplify::TopologyPreservingSimplifier" }}} which will fail most of the time for test 14, but not always. Similar behavior can be found using a simple C or C++ program that uses `geos.dll` and `geos_c.dll`. With Shapely: {{{ from shapely import wkt, geos print(geos.geos_version_string) g = wkt.loads('MULTILINESTRING((0 0, 50 0, 70 0, 80 0, 100 0), (0 0, 50 1, 60 1, 100 0))') simplified = g.simplify(10.0, preserve_topology=True) print(simplified.wkt) }}} Using a stable GEOS build, this is the expected result: {{{ 3.8.0-CAPI-1.13.1 MULTILINESTRING ((0 0, 100 0), (0 0, 50 1, 100 0)) }}} while using `geos_c.dll`/`geos.dll` built from 3.9.0beta1 only shows the incorrect result: {{{ 3.9.0-CAPI-1.14.0 MULTILINESTRING ((0 0, 100 0), (0 0, 100 0)) }}} A PostGIS equivalent is be: {{{ SELECT ST_AsText(ST_SimplifyPreserveTopology( 'MULTILINESTRING((0 0, 50 0, 70 0, 80 0, 100 0), (0 0, 50 1, 60 1, 100 0))', 10.0)); }}} which returns mostly the incorrect result, but sometimes the correct result. Fun! ---- This appears to be a Windows-only issue, which may have been introduced between 4 to 6 months ago. It is difficult to pin-down an exact commit from the !AppVeyor build history, as it was obscured by an unrelated preceding error in the CI workflow. -- Ticket URL: <https://trac.osgeo.org/geos/ticket/1081> GEOS <http://trac.osgeo.org/geos> GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).
_______________________________________________ geos-devel mailing list geos-devel@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/geos-devel