MapGuide API Reference
 All Classes Functions Variables Enumerations Enumerator Friends
Overlaps

OGC Definition

[OGC99-049] defines overlaps as:

A.Overlaps(B) iff ( dim( I(A) ) = dim( I(B) ) = dim( I(A) intersect I(B) ) ) and (A intersect B is not A) and (A intersect B is not B) where dim(...) is dimension of ... and I(A) is interior of A

Expressed in terms of the DE-9IM :

Case A is a Point and B is a Point:
Case A is Polygon and B is a Polygon:

A.Overlaps(B) iff ( I(A) intersect I(B) is not empty) and ( I(A) intersect E(B) is not empty) and ( E(A) intersect I(B) is not empty) iff A.Relate(B, "T*T***T**") where E(B) is exterior of B and "T*T***T**" means

dim( I(A) intersect I(B) ) belongs to { 0, 1, 2 }
dim ( I(A) intersect B(B) ) does not matter
dim ( I(A) intersect E(B) ) belongs to { 0, 1, 2 }
dim ( B(A) intersect I(B) ) does not matter
dim ( B(A) intersect B(B) ) does not matter
dim ( B(A) intersect E(B) ) does not matter
dim ( E(A) intersect I(B) ) belongs to { 0, 1, 2 }
dim ( E(A) intersect B(B) ) does not matter
dim ( E(A) intersect E(B) ) does not matter

Case A is a LineString and B is a LineString:

A.Overlaps(B) iff ( I(A) intersect I(B) is 1) and ( I(A) intersect E(B) is not empty) and ( E(A) intersect I(B) is not empty) iff A.Relate(B, "1*T***T**") where "1*T***T**" means

dim( I(A) intersect I(B) ) is 1
dim ( I(A) intersect B(B) ) does not matter
dim ( I(A) intersect E(B) ) belongs to { 0, 1, 2 }
dim ( B(A) intersect I(B) ) does not matter
dim ( B(A) intersect B(B) ) does not matter
dim ( B(A) intersect E(B) ) does not matter
dim ( E(A) intersect I(B) ) belongs to { 0, 1, 2 }
dim ( E(A) intersect B(B) ) does not matter
dim ( E(A) intersect E(B) ) does not matter

Oracle Spatial Definition

There is none.

The FDO Oracle Provider maps the OGC overlaps operator to the Oracle spatial operator overlapbdyintersect.

[OSUGR] defines overlapbdyintersect as follows. "The boundaries and interiors of the two objects intersect."

overlaps = overlapbdyintersect as used in the third argument to the sdo_relate spatial operator, for example, sdo_relate(a.GEOMETRY, MDSYS.SDO_GEOMETRY(2005, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1,2), MDSYS.SDO_ORDINATE_ARRAY(3,1, 5,1)), 'mask=overlapbdyintersect').

Illustration

overlaps.png