Todd,
Perhaps we are talking at cross purposes here. The definition of
Within() on page 2-27 of SFSQL 1.1 seems to imply to me that A.Within(A)
is TRUE. So A.Contains(A) is also TRUE.
And I agree, if that is the case, then Equals() would be redundant,
since the only way A.Contains(B) and A.Within(B) is if A.Equals(B).
I only used "Intersection()" because I couldn't type in the
upside-down-U set intersection symbol that appears in the manual.
Do you feel page 2-27 means something else?
Best regards,
Paul
Todd Jellett wrote:
Read the post Paul. I very aware of what the spec is and says.
Note that nowhere do I talk about Intersection(A,B). I'm talking about
the inverse of disjoint(), intersects(), the Binary Predicate.
A.equals(B) = TRUE implies that A.intersects(B) = TRUE A.touches(B) =
TRUE implies that A.intersects(B) = TRUE
A.contains(B) = TRUE implies that A.intersects(B) = TRUE
A.within(B) = TRUE implies that A.intersects(B) = TRUE
A.overlaps(B) = TRUE implies that A.intersects(B) = TRUE
on the other hand this *does not* work the same way for contains/within
A.equals(B) = TRUE *does not imply* that A.within(B) = TRUE
A.touches(B) = TRUE *does not imply* that A.within(B) = TRUE
A.contains(B) = TRUE *does not imply* that A.within(B) = TRUE
A.disjoint(B) = TRUE *does not imply* that A.within(B) = TRUE
So I excluded the binary predicate intersects() to simplify my example
(which you seem to have missed altogether).
My example has a simple 1-ring 5-point polygon that is a square. When
this geometry is tested against itself by calling each of the binary
predicates in turn, I observe that A.equals(B) = TRUE, A.contains(B) =
TRUE *and* A.within(B) = TRUE. This is what I am questioning the
validity of.
Nowhere, absolutely nowhere in the OGC SFSQL does it say that a single
geometry (any two geometries for that matter) can be equal to each
other, and at the same time have A be contained in itself (or another
geometry B) *and* have A within itself (or another geometry B).
If this is how it is supposed to be then the equals() predicate is
redundant and could be eliminated. (equal = contains && within).
Todd
Paul Ramsey wrote:
The OGC SFSQL document says that
A.Within(B) implies Insersection(A,B) == A
And Contains is just defined for commutative purposes against Within():
A.Within(B) implies B.Contains(A).
So, you might not like the semantics, but they are implemented as
defined by the standards body.
Paul
Todd Jellett wrote:
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
_______________________________________________
geos-devel mailing list
geos-devel@geos.refractions.net
http://geos.refractions.net/mailman/listinfo/geos-devel
--
Paul Ramsey
Refractions Research
http://www.refractions.net
[EMAIL PROTECTED]
Phone: 250-383-3022
Cell: 250-885-0632
_______________________________________________
geos-devel mailing list
geos-devel@geos.refractions.net
http://geos.refractions.net/mailman/listinfo/geos-devel