为啥开篇不直接进入主题,而要单独说一说九交模型?肯定是有原因的,当你读完全文,你就能发现问题的关键所在!
九交模型是OGC(Open Geospatial Consortium,开放空间信息协会)制定的一套适用空间查询的一套模型。九交模型根据不同维度,不同类型的几何对象之间的空间关系来定义空间查询的基本算子。
基本的几何对象元素有点,线,面,它们都有很明确的边界,内部,外部。相关定义如表1:
<table border="1px" cellpadding="1" cellspacing="1"> <tr> <td ><p>几何对象</p></td> <td ><p>边界</p></td> <td ><p>内部</p></td> <td ><p>外部</p></td> </tr> <tr> <td ><p>点</p></td> <td ><p>无边界</p></td> <td ><p>点本身</p></td> <td ><p>点对象以外的区域</p> <p> </p></td> </tr> <tr> <td ><p>线</p></td> <td ><p>线对象的端点</p></td> <td ><p>除端点外的线对象</p></td> <td ><p>线对象外的区域</p> <p> </p></td> </tr> <tr> <td ><p>面</p></td> <td ><p>面对象控制边</p></td> <td ><p>面对象除边界后的区域</p></td> <td ><p>面对象本身外的区域</p></td> </tr> </table>
表1
熟悉了这些基本的定义之后,我们进一步接触的就应该算是交九模型的核心,如何对空间关系进行推算: 九交模型通过比较两个或者多个对象的外部,边界,和内部,并求交,考虑求交结果的维度,故适合于各种对象。
任意对象a、b:
<table border="1" cellpadding="0" cellspacing="0"> <tr> <td ><p> </p></td> <td ><p>边界(b)</p></td> <td><p>内部(b)</p></td> <td><p>外部(b)</p></td> </tr> <tr> <td ><p>边界(a)</p></td> <td ><p>dim(I(a) intersect I(b))</p></td> <td><p>dim(I(a) intersect I(b))</p></td> <td><p>dim(I(a) intersect I(b))</p> <p> </p></td> </tr> <tr> <td ><p>内部(a)</p></td> <td ><p>dim(I(a) intersect I(b))</p> <p> </p></td> <td><p>dim(I(a) intersect I(b))</p> <p> </p></td> <td><p>dim(I(a) intersect I(b))</p> <p> </p></td> </tr> <tr> <td ><p>外部(a)</p></td> <td ><p>dim(I(a) intersect I(b))</p> <p> </p></td> <td><p>dim(I(a) intersect I(b))</p> <p> </p></td> <td><p>dim(I(a) intersect I(b))</p> <p> </p></td> </tr> </table>
表2
dim(dimension)的返回值:有-1,0,1,2. 分别代表不同的含义,如下:
注意:对于简单对象(单纯的点,线,面而言,一种三维矩阵能够解决,但是如果是不同类型组合对象组合而成的复杂对象,就需要多个三维矩阵来判断了。)
介绍了这么多的九交模型的知识,现在开始进入正题,ArcGIS是如何来对这些类型进行分类的。