⼏何对象模型概述

空间实体概述

在物理世界中,所有物体都会有⾃⼰特定的空间位置,我们为了 便于理解,往往会将这些带有空间信息的实体称为空间实体。在 GB/T 37118—2018 《地理实体空间数据规范》中对其做出了⼀个⽐较明确的 定义:现实世界中具有空间位置、共同属性的独⽴⾃然或⼈⼯地物。

那么空间实体有什么样的内涵呢?主要可以归结为三⼤要素:空 间位置、属性以及时间。空间位置的作⽤是唯⼀化地标识当前空间实 体的位置,这是空间实体中最基础、最核⼼的信息之⼀。属性则标明 了⼀些附加信息,这些信息往往是⼀些⼈为定义的通⽤数据。时间则 表⽰空间实体出现的时间或者存续的时间,当然很多空间实体的存续 时间⾮常⻓,相⽐之下没有那么重要,因此时间经常被省略掉。

空间实体示例

在城市中,会有很多道路,这些道路本⾝都是带有空间信息的, 因此它们都是空间实体。不过每条道路在建设过程中,还附加了很多 属性,例如路基宽度、⻋道数、道路类型、技术等级等,这些信息与 空间信息⽆关,它们都是空间实体的属性信息。⽽这些道路⼜可以分 成不同的路段,不同的路段之间可能有不同的道路交汇点,它们都带 有空间信息和属性信息。当然在城市中,不会仅存在道路,还有可能 存在很多⻋辆,这些⻋辆的轨迹本⾝也是有空间属性的,它们都是空 间实体。除此以外,这些轨迹都具有时间属性,还有可能具有⼀些⼈ 为定义的属性信息,因此它是⼀个三⼤要素⻬备的典型的空间实体。

如何描述空间实体

( 1 )不同的空间实体要有不同的描述结果,但描述结果要保证唯 ⼀性,例如唯⼀的编码。通过描述结果的唯⼀性才能够保证不同空间 实体的唯⼀性。

( 2 )空间实体⼀般要使⽤坐标的形式来描述,这样可以保证不同 的空间实体能够在相同的坐标系下进⾏处理和计算。

( 3 )空间实体要包含其空间类型,例如点、多段线、多边形等, 这样才能够让⽤户在接触到这些空间实体的对象时能够对应到它们的 空间类型。

( 4 )在⼀些场景下,属性信息也是必要的,这样可以描述⼀些与 空间实体本⾝相关,但是⼜与空间位置⽆关的信息。

上述⼏点是我们对空间实体进⾏描述时需要考虑的,⽽开源地理 信息系统(如 OpenGIS )已经对这些要求进⾏了具体的实现

OpenGIS ⼏何对象模型

在 OGC 规范中,⼏何对象模型⼜称简单特征⼏何( Simple Feature Geometry ),⼏何对象模型是独⽴于计算平台之外的、天然适⽤于分 布式计算的、使⽤统⼀建模语⾔( Unified Modeling Language , UML )表⽰的⼀种对象模型。⼏何对象模型的类图如图所⽰。 Geometry 是所有⼏何对象模型类的基类。每个⼏何对象模型都有⼀个 坐标参考系统属性,该属性⽤于描述⼏何对象模型的坐标所在的坐标 系。基于 Geometry 基类,⼏何对象模型⾸先实现了点、线、⾯和对应 的集合形式的多点、多线、多⾯,然后将 Curve 和 Surface 作为超类引 ⼊,⽤于描述曲线和曲⾯。

⼏何对象模型分类

⼏何对象模型⼤致可以分为 3 类:简单数据模型、 集合数据模型、曲线和曲⾯数据模型。

⼏何对象

⼏何对象( Geometry )是⼏何对象模型中的根节点,它是⼀个⽆ 法被实例化的抽象类,其类图如图 所⽰。⼏何对象的⼦类是⼀系列 存储零维、⼀维、⼆维和三维坐标的类。具体来说,⼀个⼆维⼏何对 象就是具有 x 、 y 两个坐标的⼏何要素,⽽⼀个三维⼏何对象就是具有 x 、 y 、 z 或者 x 、 y 、 m 这 3 个坐标的⼏何要素,以此类推,⼀个四维⼏何 对象就是具有 x 、 y 、 z 、 m 坐标的⼏何对象。对于每个⼏何对象⽽⾔, 它的所有的坐标必须都处于同⼀个坐标参考系下。对于⼏何点来说, z 和 m 坐标是可选⽽不是必选的。

⼏何对象的⽅法如表所⽰。

简单数据模型

简单数据模型往往是通过特征点来进⾏描述的,它们由于本⾝信 息⽐较少,⽽且对空间数据的形态精度要求不是很⾼,因此在业务中 被⼴泛使⽤。在这些简单数据模型中,⽐较常⽤的是点数据模型、多 段线数据模型、多边形数据模型以及多⾯体表⾯对象等。

点数据模型

最基本的点数据模型是点对象( Point ),它仅表⽰⼀个空间位置 的零维⼏何对象。点对象默认具有 x 轴坐标、 y 轴坐标和空间坐标系等 属性。点对象的 z 轴坐标和 m 轴坐标是可选的。⼀个点对象的外接矩形 是⼀个空集。点对象的⽅法如表所示

更为复杂的是多点对象( MultiPoint ),它是⼀组点对象组成的⼏ 何集合,是⼏何对象集合的⼦类。多点对象的集合内仅允许包含点要 素,多点对象的集合内的各个点要素是⽆序的。

多段线数据模型

如果⼀个曲线对象的所有点都是线性内插的,则该对象被称为多 段线对象。多段线的每⼀段都被称为线段( LineString ),其形态⽰意 如图 所⽰。⼀个仅具有两个节点的多段线被称为直线( Line )。⼀ 个闭合的多段线被称为线性环( LineRing )。多段线的类图如图所示

多段线对象的⽅法如表示

对于多段线数据模型,它也有⽐较复杂的形态,多重多段线数据 模型( MultiLineString ),这个数据模型是⽤来描述具有多个多段线的 数据模型的,在⾏业内也得到了⼴泛的使⽤。

多边形数据模型

多边形就是具有⼀个外部边界、零个或多个内部边界的平⾯。⼀ 个内部边界⽤于定义⼀个多边形内的空洞。多边形的外部边界的点序 是从上到下,按逆时针⽅向组织的,⽽内部边界的点序与外部边界相 反。三⾓形是具有 3 个不同的⾮共线顶点且没有空洞的⼀种多边形。

OGC 规范通过以下规则来判断⼀个多边形是否合法。

( 1 )多边形是闭合的。

( 2 )多边形的内部和外部边界是否由⼀系列的线性环构成。

( 3 )多边形的线性环不相交。

( 4 )多边形不能有断线或破裂。

( 5 )每个多边形的内部都是⼀个连通点集。

( 6 )具有空洞的多边形的外部边界是不相连的,⼀个空洞就有⼀ 个独⽴的不与其他部分相连的边界。

多边形对象的⽅法如表所示

多⾯体表⾯对象

多⾯体表⾯对象是由⼀组相接的平⾯多边形构成的,每组相接的 多边形的边界必须是⻓度有限的线段。如果⼀个多⾯体表⾯是由三⾓ 形组成的,则被称为不规则三⾓⽹( Triangulated Irregular Network , TIN )。多⾯体表⾯中所有多边形的节点顺序是⼀致的。多⾯体表⾯ 对象类图如图所⽰

多⾯体表⾯对象的⽅法如表所示

集合数据模型

由于⼏何对象在很多情况下都不是孤⽴的,往往不同的⼏何对象 之间都是有关系的,因此这些⼏何对象会通过集合数据模型来统⼀管 理。在 OGC 规范中,集合数据模型可以分为以下 4 类:⼏何对象集 合、曲⾯⼏何对象集合、多边形⼏何对象集合、曲线⼏何对象集合。

⼏何对象集合

⼀组⼏何对象构成的⼏何对象被称为⼏何对象集合( Geometry Collection )。在⼏何对象集合中,所有⼏何对象具有共同的空间坐标 系,除此之外,⼏何对象集合对其内部的⼏何对象没有其他硬性要 求。与⼏何对象类似,⼏何对象集合也是⼀些更复杂的⼏何对象的基 类,其类图如图 所⽰。

⼏何对象集合的⽅法如表所⽰

曲⾯⼏何对象集合

曲⾯⼏何对象集合是由⼀组曲⾯对象组成的集合,曲⾯⼏何对象 集合内的所有曲⾯对象都具有相同的空间坐标系。在 OGC 规范中,曲 ⾯⼏何对象集合也是⼀个不可实例化的抽象类,⽤于定义⼀系列的⽅ 法。曲⾯⼏何对象集合的⼦类为多边形⼏何对象集合。曲⾯⼏何对象 集合类图如图所⽰。

曲⾯⼏何对象集合的⽅法如表所示

多边形⼏何对象集合

多边形⼏何对象集合就是元素均为多边形对象的曲⾯⼏何对象集 合。在 OGC 规范中,对多边形⼏何对象集合的额外定义如下。

( 1 )多边形⼏何对象集合中的多边形对象不能相交。

( 2 )多边形⼏何对象集合中的多边形对象的边界不能交叉或邻 接。

( 3 )多边形⼏何对象集合是拓扑闭合的。

( 4 )多边形集合不能有断线或破裂,必须是⼀套闭合的点集。

( 5 )多边形集合最少包含⼀个多边形。

曲线⼏何对象集合

曲线⼏何集合( MultiCurve )对象是⼀组曲线对象组成的集合。 在 OGC 标准中,曲线⼏何对象集合是⼀个不可实例化的类,仅⽤于定 义其⼦类需要实现的⽅法和参数。曲线⼏何对象集合类图如图所 ⽰。

曲线⼏何对象集合的⽅法如表所⽰

多段线⼏何对象集合就是全部由多段线要素组成的曲线⼏何对象 集合,其⽅法与曲线⼏何对象集合的⽅法相同。

曲线和曲⾯数据模型

曲线数据模型

曲线对象( Curve )是⼀个⼀维的点的序列。曲线对象可根据不同 的内插⽅式划分为不同的⼦类。⽬前 OGC 规范仅定义了⼀种⼦类的实 现,即多段线( LineString ),其使⽤线性内插算法进⾏点的内插。如 果⼀个曲线对象的点序列中没有重复的部分,则这个曲线对象是简单 曲线对象。如果曲线对象的起点、终点重叠,则这个曲线对象被称为 闭合曲线对象。⼀个简单且闭合的曲线对象可被称为⼀个环 ( Ring )

曲线对象的⽅法如表所示

曲⾯数据模型

曲⾯对象( Surface )由 “ ⾯⽚ ” 组成,⾯⽚包含⼀个外部边界、零 个或多个内部边界。曲⾯对象由 OGC 规范定义的⼦类有两个,分别是 多边形对象( Polygon )和多⾯体表⾯对象( PolyhedralSurface )。多 边形对象就是⼀个平⾯的多边形,⽽多⾯体表⾯对象则有⼀系列的⾯ 块或⾯⽚。曲⾯对象的类图如图所⽰。

曲⾯对象的⽅法如表所⽰。

空间关系运算

九交模型概述

空间关系运算是⽤于测试在地图上表⽰两个⼏何对象的空间关系 的拓扑结构是否存在的布尔⽅法。两个⼏何对象的空间关系⼀直是学 术界⼴泛研究的主题。⽐较两个⼏何对象的基本⽅法是将这两个⼏何 对象投影到表⽰地球表⾯的⼆维⽔平坐标系上,然后对两者的内部、 边界和外部之间的交点进⾏成对测试投影,并根据⼏何体的内部、边 界和外部中的条⽬对两个⼏何对象的空间关系进⾏分类,⽣成 3×3 的 交集矩阵,通常被称为九交模型。内部、边界和外部的概念被很好地 定义为点⼏何,并抽象为⼀般拓扑结构。