Opened 15 years ago
Closed 15 years ago
#239 closed defect (invalid)
Bug in GEOSEquals predicate
Reported by: | pleroux | Owned by: | sgillies |
---|---|---|---|
Priority: | major | Milestone: | 3.1.1 |
Component: | SWIG Python | Version: | 3.0.3 |
Severity: | Unassigned | Keywords: | |
Cc: |
Description
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 ...)
Attachments (2)
Change History (7)
by , 15 years ago
Attachment: | simple.wkt added |
---|
by , 15 years ago
Attachment: | equals_errors.hexwkb added |
---|
comment:1 by , 15 years ago
comment:3 by , 15 years ago
Milestone: | → 3.1.1 |
---|
comment:4 by , 15 years ago
Component: | Default → SWIG Python |
---|---|
Owner: | changed from | to
In pure GEOS it has no problems, as of current SVN:
Matrix for your 'inter' (A) and 'p2' (B)
Equals: AB=F, BA=F
Disjoint: AB=F, BA=F
Intersects: AB=T, BA=T
Touches: AB=T, BA=T Crosses: AB=F, BA=F
Within: AB=F, BA=F
Contains: AB=F, BA=F Overlaps: AB=F, BA=F
comment:5 by , 15 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
I think it is a more general problem, linked to the intersection geometry.
With the same variable names as in the script above :