MapGuide API Reference
 All Classes Functions Variables Enumerations Enumerator Friends
Touches

OGC Definition

[OGC99-049] defines Touches as follows:

A.Touches(B) iff ( I(A) intersect I(B) is empty) and ( A intersect B is not empty) where I(A) means interior of A.

Expressed in terms of the DE-9IM :

A.Touches(B) iff ( I(A) intersect I(B) is empty) and ( ( B(A) intersect I(B) is not empty) or ( I(A) intersect B(B) is not empty) or ( B(A) intersect B(B) is not empty) ) iff A.Relate(B, "FT*******") or A.Relate(B, "F**T*****") or A.Relate(B, "F***T****")
where B(A) means boundary of A and "FT*******" means

dim( I(A) intersect I(B) ) is empty
dim ( I(A) intersect B(B) ) belongs to { 0, 1, 2 }
dim ( I(A) intersect E(B) ) does not matter
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) ) does not matter
dim ( E(A) intersect B(B) ) does not matter
dim ( E(A) intersect E(B) ) does not matter

Examples of the foregoing are a point or multipoint object intersecting the boundary of a polygon or line or the interior of a line intersecting the boundary of a line.

"F**T*****" means

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

Examples of the foregoing are the boundary of a line or a polygon intersecting the boundary of a line or a polygon.

"F***T****" means

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

Examples of the foregoing are the boundary of a line or polygon intersecting a point or multipoint object or the boundary of a line intersecting the interior of a line.

Oracle Spatial Definition

[OSUGR] defines Touch as follows. "The boundaries intersect but the interiors do not intersect." The FDO Oracle Provider implements Touches using the Oracle touch spatial operator.

touches = touch as used in the third argument to the sdo_relate spatial operator, for example,
sdo_relate(a.GEOEMTRY, MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(4,2, 5,2, 5,3, 4,3, 4,2)), 'mask=touch') .

Illustration

touches.png