# [geos-devel] Binary Predicate Bug - Even Worse!

Todd Jellett todd.jellett at caris.com
Tue Jun 12 11:05:58 EDT 2007

```It turns out that this is also the case for identical geometries!

If you take just GeomA and run all the listed binary predicates (below)
against itself, you get exactly the same as below.

Running GeomA->GeomA I get:
Disjoint    False
Equal       True
Touch      False
Contain    True
Within      True
Overlap    False

Running a simple geometry against itself should return True for Equals
*only*. It is ambiguous to be also contained and within.

Todd

Todd Jellett wrote:
> Hi all,
>
> First question I'd like to ask is "Are the binary predicates supposed
> to be mutually exclusive?". For any 2 geometries, is there only one
> binary predicate that is a member of (disjoint, equal, touches,
> contains, within, overlaps) that can be true and all the others must
> be false? Note I am leaving out intersects because it is a special
> case of the other predicates. It is not the same type of spatial
> relation as contains/within.
>
> If this is so, I'd like to report a bug. Given the 2 simple single
> ring polygons:
>
> GeomA = POLYGON((0.0 0.0), (5.0 0.0), (5.0 5.0), (0.0 5.0), (0.0 0.0))
> and
> GeomB = POLYGON((5.0 5.0), (0.0 5.0), (0.0 0.0), (5.0 0.0), (5.0 5.0))
>
> Note that these are essentially the same ring, just starting at a
> different position on the ring.
>
> Running all of the above predicates (disjoint, equal, touches,
> contains, within and overlaps) for both GeomA->GeomB and GeomB->GeomA
> I get:
>
> GeomA->GeomB
> Disjoint   False
> Equal      True
> Touch     False
> Contain   True
> Within     True
> Overlap   False
>
> GeomB->GeomA
> Disjoint   False
> Equal      True
> Touch     False
> Contain   True
> Within     True
> Overlap   False
>
> As you can see, all 3 of (equals, contains, and within) come back as
> True.
>
> Shouldn't this just be an equal?
> How can 2 simple geometries be equal *and* contained *and* within?
> This does not make sense.
>
> Although these geometries are simple, I suspect this behavior holds
> for all geometries that are "equivalent" but just start/end on a
> different point.
>
> I'm testing with v3.0.0 rc4
>
> Todd
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel

```