[geos-devel] Bug in GEOSEquals predicate ?

Sean Gillies sgillies at frii.com
Mon Mar 16 11:52:07 EDT 2009


The GEOS C API returns a integer value of 2 to indicate an error. It's  
good to learn that geometry collection predicates aren't supported.

On Mar 16, 2009, at 9:46 AM, Martin Davis wrote:

> GEOS does not support evaluating predicates on GEOMETRYCOLLECTIONS  
> (due to the potential complexity and lack of obvious semantics of  
> heterogeneous collections).
>
> In JTS trying to do this throws an exception.  I'm not sure how GEOS  
> reacts - or possibly shapely is not handling this gracefully?
>
> Pascal Leroux wrote:
>> Hi all
>>
>> 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).
>>
>> Any idea ? Did I miss something ?
>>
>> Pascal
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> geos-devel mailing list
>> geos-devel at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
> -- 
> Martin Davis
> Senior Technical Architect
> Refractions Research, Inc.
> (250) 383-3022
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel



More information about the geos-devel mailing list