[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