[geos-devel] [GEOS] #1084: OffsetCurve -- TopologyException: found non-noded intersection between...

GEOS geos-trac at osgeo.org
Wed Dec 9 17:29:58 PST 2020


#1084: OffsetCurve -- TopologyException: found non-noded intersection between...
------------------------+--------------------------
 Reporter:  jengland    |      Owner:  geos-devel@…
     Type:  defect      |     Status:  new
 Priority:  major       |  Milestone:  3.9.1
Component:  Default     |    Version:  3.9.0
 Severity:  Unassigned  |   Keywords:  OffsetCurve
------------------------+--------------------------
 This is coming from shapely's `parallel_offset`. Here is an example:

 {{{
 from shapely import wkt, geos

 print(geos.geos_version_string)

 wkt.loads('LINESTRING (0 9, 21 30, 49 45, 61 70, 81
 90)').parallel_offset(3)
 }}}

 Has the following output

 {{{
 3.8.0-CAPI-1.13.1
 TopologyException: found non-noded intersection between LINESTRING
 (50.4167 -21.6444, 22.8077 -36.435) and LINESTRING (22.8077 -36.435,
 37.4683 -21.7743) at 22.807666014902189 -36.434974672217095
 <python traceback>
 }}}

 I can mine them with the attached script at a rate of about 5-10 per
 100,000 LineString s. The LineString s I'm trying are all simple
 (relatively straight on a 100x100 integer grid with 5 points each). And
 all the offsets are 0-9 ints.

 This seems to be different from #682, because there the error message is
 different (i.e. `TopologyException: assigned depths do not match at ...`)
 and I cannot easily mine for exception of that message.

 Hopefully it's acceptable to submit a `.py` example file. I can try to
 reproduce this using GEOS directly if necessary.

-- 
Ticket URL: <https://trac.osgeo.org/geos/ticket/1084>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).


More information about the geos-devel mailing list