[geos-devel] [GEOS] #239: Bug in GEOSEquals predicate

GEOS geos-trac at osgeo.org
Sat Mar 14 10:55:38 EDT 2009


#239: Bug in GEOSEquals predicate
------------------------+---------------------------------------------------
 Reporter:  pleroux     |       Owner:  geos-devel at lists.osgeo.org
     Type:  defect      |      Status:  new                       
 Priority:  major       |   Milestone:  3.1.0                     
Component:  Default     |     Version:  3.0.3                     
 Severity:  Unassigned  |    Keywords:                            
------------------------+---------------------------------------------------
 while searching for intersections between polygons (buildings), I have
 found
 shapes that make "equals" predicate crash. With simpler shapes, it occurs
 too :


 {{{
 >>> from shapely.geometry import Polygon
 >>> p1 = Polygon(((0,0),(0,10),(10,10),(10,0),(8,0),(8,8),(2,8),(2,0)))
 >>> p2 = Polygon(((2,0),(2,8),(8,8),(7,4),(8,0)))
 >>> inter = p1.intersection(p2)
 >>> inter.is_valid and p1.is_valid and p2.is_valid
 True
 >>> inter.wkt
 'GEOMETRYCOLLECTION (POINT (8.0000000000000000 0.0000000000000000),
 LINESTRING (8.0000000000000000 8.0000000000000000, 2.0000000000000000
 8.0000000000000000), LINESTRING (2.0000000000000000 8.0000000000000000,
 2.0000000000000000 0.0000000000000000))'
 >>> inter.equals(p1)
 False
 >>> inter.equals(p2)
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File
 "/usr/lib/python2.5/site-packages/Shapely-1.0.11-
 py2.5.egg/shapely/predicates.py",
 line 34, in __call__
     return bool(self.fn(self.context._geom, other._geom))
   File
 "/usr/lib/python2.5/site-packages/Shapely-1.0.11-
 py2.5.egg/shapely/predicates.py",
 line 21, in errcheck
     raise PredicateError, "Failed to evaluate %s" % repr(self.fn)
 shapely.geos.PredicateError: Failed to evaluate <_FuncPtr object at
 0x96a3bf4>
 }}}


 I have got a Bus Error on MacOSX (libgeos version 3.0.0) and a
 Segmentation
 Fault on Ubuntu (libgeos version 3.0.3) with an equivalent code written in
 C
 (so I think Shapely is not involved).

 Attached files :

 simple.wkt contains the 2 polygons used in the Python script below

 equals_errors.hexwkb : the original polygons (4 couples of polygons :
 errors occur with polygons 0 and 1, polygons 2 and 3, etc ...)

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


More information about the geos-devel mailing list