基于维度扩展九交模式(Dimensionally Extended 9-Intersection Model,DE-9IM),MapGuide定义了如表8-3所示的11种空间关系,其中8种是OGC简单要素规范所定义的空间关系,另外3种FDO中自定义的空间关系。
空间关系 | 中文名称 | OGC标准 | 解释 |
Contains | 包含 | 是 | 一个几何图形的内部完全包含了另一个几何图形的内部和边界。 |
CoveredBy | 覆盖 | 否 | 一个几何图形被另一个几何图形所包含,并且它们的边界相交。Point和MultiPoint不支持此空间关系,因为它们没有边界。 |
Crosses | 交叉 | 是 | 一个几何图形的内部和另一个几何图形的边界和内部相交,但是它们的边界不相交。 |
Disjoint | 分离 | 是 | 两个几何图形的边界和内部不相交。 |
EnvelopeIntersects | 封套相交 | 否 | 两个几何图形的外接矩形相交。 |
Equal | 相等 | 是 | 两个几何图形具有相同的边界和内部。 |
Inside | 内部 | 否 | 一个几何图形在另一个几何图形的内部,但是和它的边界不接触。 |
Intersects | 相交 | 是 | 两个几何图形没有分离(Non-DisJoint)。 |
Overlaps | 重叠 | 是 | 两个几何图形的边界和内部相交(Intersect)。 |
Touch | 接触 | 是 | 两个几何图形的边界相交,但是内部不相交。 |
Within | 包含于 | 是 | 一个几何图形的内部和边界完全在另一个几何图形的内部。 |
表8-3 MapGuide所支持的11种空间关系
给定一个几何图形a,I(a)、B(a)、E(a)分别表示几何图形a的内部、边界和外部,其中,边界是指对几何图形一次降维之后得到对象,举例来说一个点的边界为空,未封闭的线的边界为其两个端点,封闭线的边界为空,多边形的边界为它的环状边界;内部是指几何对象的边界被移除之后剩下的部分;外部则是指不在边界和内部中的点构成的几何对象。I(a)、B(a)、E(a)中任意两个的相交会产生一个系列新的几何物体x,dim(x)代表几何物体x的维度,它的值可以为-1、 0、1或2,其中-1代表x是一个空的几何物体Æ,维度扩展九交模式的形式如表8-4所示。
| 内部 | 边界 | 外部 |
内部 | dim(I(a)ÇI(b)) | dim(I(a)ÇB(b)) | dim(I(a)ÇE(b)) |
边界 | dim(B(a)ÇI(b)) | dim(B(a)ÇB(b)) | dim(B(a)ÇE(b)) |
外部 | dim(E(a)ÇI(b)) | dim(E(a)ÇB(b)) | dim(E(a)ÇE(b)) |
表8-4 维度扩展九交模型
例如表8-5显示了使用维度扩展九交模型描述的两个多边形a和b的重叠(Overlaps)关系。
| 内部 | 边界 | 外部 |
内部 | 2 | 1 | 2 |
边界 | 1 | 0 | 1 |
外部 | 2 | 1 | 2 |
表8-5 扩展九交模型示例
两个几何物体之间的空间关系可以由9个值表示的扩展九交模型模式来表示,每个值p可以为T、F、*、1或2,这些值的定义如下:
p = T => dim(x) Î{0, 1, 2},即x不等于Æ
p = F => dim(x) = -1,即x等于Æ
p = * => dim(x) Î {-1, 0, 1, 2},即x可以为任何值
p = 0 => dim(x) = 0
p = 1 => dim(x) = 1
p = 2 => dim(x) = 2
例如模式“T*T***T**”表示的是空间关系重叠(Overlaps)。MapGuide支持11种空间关系,它们的扩展九交模型定义如下所示,其中P代表0维的几何物体点和多点(MultiPoint),L代表1维的几何物体线(LineString)和多线(MultiLineString),A代表2维的几何物体多边形和多多边形(MultiPolygon)。
1) Disjoint
a.Disjoint(b) Û (I(a)ÇI(b) = Æ) Ù (I(a) Ç B(b) = Æ) Ù (B(a) ÇI(b) = Æ) Ù (B(a) Ç B(b) = Æ) Û FF*FF****
2) Touches:可以应用到A/A、L/L、L/A、P/A和P/L,但无法用于P/P,图8-2示意了Touches空间关系。
a.Touches(b) Û (I(a)ÇI(b) = Æ) Ù ( (B(a) Ç I(b) ¹ Æ) Ú (I(a) ÇB(b) ¹ Æ) Ú (B(a)ÇB(b) ¹ Æ) ) Û FT******* Ú F**T***** Ú F***T****
3) Crosses:图8-3示意了Crosses关系。
如果a Î P、b Î L 或a Î P、b Î A或a Î L、b Î A:
a.Crosses(b) Û (I(a) Ç I(b) ¹ Æ) Ù (I(a) Ç E(b) ¹ Æ) Û T*T******
如果a Î L、b Î L:
a.Crosses(b) Û dim(I(a)ÇI(b)) = 0 Û 0********
4) Within:图8-4示意了Within关系。
a.Within(b) Û (I(a)ÇI(b) ¹ Æ) Ù (I(a) ÇE(b) =Æ) Ù (B(a)ÇE(b) =Æ) ) Û T*F**F***
5) Overlaps:图8-5示意了Overlaps关系。
如果a Î P、b Î P或a Î A, b Î A:
a.Overlaps(b) Û (I(a) ÇI(b)¹Æ) Ù (I(a) ÇE(b)¹Æ) Ù (E(a) ÇI(b)¹Æ) Û T*T***T**
如果a Î L、b Î L:
a.Overlaps(b) Û (dim(I(a) ÇI(b) = 1) Ù (I(a) ÇE(b)¹Æ) Ù (E(a) ÇI(b)¹Æ) Û 1*T***T**
6) Equal
a.Equal(b) Û (I(a)ÇI(b) ¹ Æ) Ù (I(a) Ç B(b) = Æ) Ù (I(a) Ç E(b) = Æ) Ù
(B(a) ÇI(b) = Æ) Ù (B(a) Ç B(b) ¹ Æ) Ù (B(a) Ç E(b) = Æ) Ù
(E(a) ÇI(b) = Æ) Ù (E(a) Ç B(b) = Æ) Ù (E(a) Ç E(b) ¹ Æ)
Û TFFFTFFFT
7) Contains
a.Contains(b) Û b.Within(a)
8) Intersects
a.Intersects(b) Û! a.Disjoint(b)
9) CoveredBy:图8-6示意了CoveredBy关系。
a.CoveredBy(b) Û (a.within(b) Ù a.intersect(b))
10) Inside:图8-7示意了Inside关系,其中同心圆代表相交点,a、e、g、h、j是多点(MutiPoint)。
a.Inside(b) Û (a.within(b) Ù !a.intersect(b))
11) EvnelopeIntersects
a.EvnelopeIntersects(b) Û envelope(a).Intersects(envelope(b))
其中,envelope(a)代表a的外接矩形。