SuperMap iObjects Java 11i 知识库
空间查询  

2     理解几何对象相关概念

点、线、面空间几何对象都有明确的边界矩形(Envelop)、边界(Boundary)、内部(Interior)和外部(Exterior),具体定义见表 2.1。几何对象的空间位置关系比较,实质上就是对相互间边界矩形、边界、内部和外部关系的比较。明确这些定义,将非常有助于理解空间查询各算子的含义。

2.1 几何对象相关定义

几何对象

边界矩形

边界

内部

外部

没有边界矩形

没有边界

点对象本身

点对象本身外的区域

线

线对象的最小外接矩形

线对象的端点

线对象本身除去端点的部分

线对象本身外的区域

面对象的最小外接矩形

面对象控制边的并集

面对象除去边界后的区域

面对象本身外的区域

SuperMap 组件产品 采用OGC的九交模型来定义不同维度不同类型的几何对象之间的空间关系。这个模型分别用I(a)、B(a)、E(a)表示几何对象 a 的内部、边界和外部的集合,通过对两个几何对象的外部、边界、内部集合进行求交,并将求交结果填充到九交模型表中,如表 2.2所示的。九交模型在计算机内部以数组形式存储为一个3*3的矩阵。九交模型适合于所有几何对象。

2.2 九交模型表

 

内部I(b)

边界B(b)

外部E(b)

内部I(a)

dim(I(a) I(b))

dim(I(a) B(b))

dim(I(a) E(b))

边界B(a)

dim(B(a) I(b))

dim(B(a) B(b))

dim(B(a) E(b))

外部E(a)

dim(E(a) I(b))

dim(E(a) B(b))

dim(E(a) E(b))

几何对象的内部、外部、边界求交时,函数dim()返回求交结果集合的维数,分别为-1、0、1和2四个值,我们会根据dim()的取值,为九交模型进行赋值,规则如下:

1.      若dim()=0,1或2,则交集存在,赋值为T;

2.      若dim()= -1,则交集不存在,赋值为F;

3.      若不考虑此种相交情况,则不管交集存在与否,赋值为*。

下面用面部分重叠为例来说明九交模型的赋值,如图 2‑1所示,面a与面b部分重叠,在此我们定义一个String类型数组Matrix[9]来存储九交模型的值,则:

1.      dim(I(a) I(b))=2,则九交模型中Matrix(0)=T,在这里需要说明的是,若线与线overlap,则dim(I(a) I(b))=1;若点与点overlap,则dim(I(a) I(b))=0

2.      dim(I(a) B(b))=1dim(B(a) I(b))=1,但是对于面部分重叠,我们不关心ab的内部与边界交集情况,因此Matrix(1)= Matrix(3)=*

3.      dim(I(a) E(b))=2,则九交模型中Matrix(2)=T

4.      dim(B(a) B(b))=0,但是对于面部分重叠,我们不关心a的边界与b的边界交集情况,因此Matrix(4)=*

5.      dim(B(a) E(b))=1dim(E(a) B(b))=1,但是对于面部分重叠,我们不关心ab的边界与外部的交集情况,因此Matrix(5)= Matrix(7)=*

6.      dim(E(a) I(b))=2,则九交模型中Matrix(6)=T

7.      dim(E(a) E(b))=2,但是对于面部分重叠,我们不关心a的内部与b的边界交集情况,因此Matrix(8)=*

 

21 举例说明“面部分重叠”与其九交模型

 

 

 

 


  版权所有© 北京超图软件股份有限公司。保留所有权利。