[geos-devel] Robustness of Binary Predicates

Todd Jellett todd.jellett at caris.com
Fri Mar 3 07:57:21 EST 2006


Hi Paul,

Yes I indicated in my first post that the Binary Predicates seemed like 
they were trying to "work at infinite precision" (ie on graph paper) and 
were not honouring the precision model.

I chose my example carefully to illustrate the problem. I chose the end 
point of the second LineString to be the primary intersection point 
because geos actually did find the correct intersection for those 
geometries. If however, I chose L2 to end on one of the "extraneous 
intersection points" but not cross or touch any other part of L1, either 
(4,2) or (6,3), the geos intersection does not fare as well (because it 
does not see these).

So there are 2 problems:
1)   The Binary Predicates are not honouring the precision model.
2)   Geos does not detect "extraneous intersection points" in either the 
Binary Predicates or the set theoretic (intersection, union, differences).

Although the frequency of this phenomenon (extraneous intersection 
points) decreases as the precision becomes finer, they do occur even 
when using a FLOATING precision model (because the computer runs under a 
FIXED model with 15 significant figures). Whether they occur or not is a 
function of the input geometries.

Todd

Paul Ramsey wrote:

> I am surprised Martin has not jumped in here with the definitive  
> answer. It looks like the intersection is being done with a precision  
> model and the boolean test is not... on graph paper those lines to  
> not touch, but they do get within the precision tolerance of one  
> another.
>
> P.
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel





More information about the geos-devel mailing list