[geos-devel] Bug in Intersection Routine

Martin Davis mbdavis at refractions.net
Fri Oct 5 11:38:13 EDT 2007


This looks like a bug, alright.  JTS returns the expected answer of 
POLYGON ((1 0, 0 0, 0 1, 1 1, 1 0.5, 1 0),
  (1 0.5, 0.5 0.9, 0.5 0.1, 1 0.5))

Martin

Pete Gerritson wrote:
>
> I found what I think to be a bug in the Intersection routine. 
>
> I defined a polygon with the following wkt: POLYGON( (0 0, 1 0, 1 1, 0 
> 1, 0 0), (.5 .1, 1 .5, .5 .9, .5 .1))  This polygon has an exterior 
> ring that is a square, and one interior ring that is a triangle.  The 
> interior ring touches the exterior ring in one point.  I believe this 
> is considered a valid polygon.
>
> When I call the GEOSIntersection method using this polygon for both 
> parameters, I would expect to get back the same polygon.  Instead I 
> get back a geometry collection of 8 linestrings and a polygon:
>
> GEOMETRYCOLLECTION (LINESTRING (0.0000000000000000 0.0000000000000000, 
> 1.0000000000000000 0.0000000000000000), LINESTRING (1.0000000000000000 
> 0.0000000000000000, 1.0000000000000000 0.5000000000000000), LINESTRING 
> (1.0000000000000000 0.5000000000000000, 1.0000000000000000 
> 1.0000000000000000), LINESTRING (1.0000000000000000 
> 1.0000000000000000, 0.0000000000000000 1.0000000000000000), LINESTRING 
> (0.0000000000000000 1.0000000000000000, 0.0000000000000000 
> 0.0000000000000000), LINESTRING (0.5000000000000000 
> 0.1000000000000000, 1.0000000000000000 0.5000000000000000), LINESTRING 
> (1.0000000000000000 0.5000000000000000, 0.5000000000000000 
> 0.9000000000000000), LINESTRING (0.5000000000000000 
> 0.9000000000000000, 0.5000000000000000 0.1000000000000000), POLYGON 
> ((1.0000000000000000 0.0000000000000000, 0.0000000000000000 
> 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 
> 1.0000000000000000 1.0000000000000000, 1.0000000000000000 
> 0.5000000000000000, 1.0000000000000000 0.0000000000000000), 
> (1.0000000000000000 0.5000000000000000, 0.5000000000000000 
> 0.9000000000000000, 0.5000000000000000 0.1000000000000000, 
> 1.0000000000000000 0.5000000000000000)))
>
> The last polygon appears to be equivalent to my input, but with one 
> extra point in the exterior ring.  The 8 linestrings appear to be the 
> pieces of the boundary of the polygon.
>
> I believe this is a bug. If I change the input polygon so that the 
> interior ring doesn't touch the exterior ring, I get the expected result.
>
> Thanks,
>
> Pete Gerritson
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel
>   

-- 
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022




More information about the geos-devel mailing list