1.2.2 数据模型
本书的主要研究对象为基于对象的模型,即矢量数据。用基于对象的模型来表达现实世界有不同的实现方法,目前比较主流的方法有无拓扑的开放地理空间信息联盟(Open Geospatial Consortium,OGC)、简单要素模型(Simple Feature Specification,SFS)以及基于拓扑的数据模型。无拓扑的简单要素模型的具体应用包括Shapefile文件格式、KML格式等,基于拓扑的数据模型包括Arc Coverage以及OpenStreet Map基础源数据模型等。
为了实现海量地理要素交互式可视化、编辑能够高效和快速地响应,需要考虑查询结果的动态变化和用户需求,因此,本书选择使用带有拓扑结构的数据模型,该模型与OpenStreet Map有一定的相似之处,且与广泛流行的网络模型相容。本书将地理要素集中的几何对象分为三类:顶点、线和组合对象。三类元素被广泛用来表示各种地理要素,在要素模型之中,以顶点为最小粒度,在顶点对象之上定义了线对象的集合,在线对象的基础上定义了组合对象。
(1)顶点。定义在三维流形上的只有位置而无大小、内外之分的几何对象;它们是地理要素集中的最基本单元,所有的其他几何对象都由顶点以一定的结构形成。
(2)线。由有限个顶点所构成序列表示的几何对象。除首尾顶点外,所有中间顶点的度为2;它们同样属于较为基本的几何对象,是组成其他更复杂对象的部件。线的主要特点是其为内部的顶点设立了一个全序关系。
(3)组合对象。由线对象或其他组合对象的序列或集合所定义的对象。组合对象是定义较为宽泛的一类对象,其组成元素可以是线对象,也可以是其他的组合对象,这些元素之间可以存在顺序以形成一个序列,也可以没有顺序,只是形成一个对象的集合。地理要素中的复杂几何,例如面对象、带有岛和洞的多边形对象、多边形集合等,都能以组合对象表示。
顶点、线和组合对象均可以作为地理要素的几何部分,地理要素的属性部分则由属性表表达。通过上述定义,地理要素的数据模型可以较为方便地转换为网络模型,只需要将度大于2的顶点定义为网络中的顶点,将线对象定义为网络中的边,而将组合对象定义为网络中的路径及其集合,这样即可以建立起地理要素集与网络数据间的映射关系,使得网络模型中可用的算法和处理操作可以非常自然地应用于地理要素集。
地理对象的几何部分遵循的基本原则如下:(https://www.daowen.com)
(1)同一位置只能存在单一的顶点对象,也就是说若两个不同的顶点具有完全相同的坐标,则必须将两者合并,否则就存在数据不一致;
(2)线对象的构造原则与简单要素模型中的线对象要求相同,即除首尾顶点外,不能存在自交;
(3)首尾顶点相同的线对象视为一个闭合的环,闭合的环可以作为面对象的外轮廓线;
(4)数据模型中没有独立的“面”(多边形)的概念,面作为一类特殊的线对象存在,其几何组成部分是环,属性(Tags)部分有特殊标识与普通的线对象相区别,并使得后续的处理如地图渲染及空间分析等可以正常进行;
(5)复杂的几何对象如带有岛或洞的多边形则使用组合对象表达,它们包含一个外轮廓线,一个或多个内轮廓线。组合对象不仅能表达由多段首尾相继的线对象组成的更大规模的线状要素或者面状要素,还可以表达点集、网络等复杂的要素。
地理对象的属性信息是通过键值对(Key-Value)的形式表示,键值对使得数据的Schema极为灵活,与通常的要素属性信息以固定Schema的关系表存储具有不同特点。不同的几何对象其键-值对的数量和值都可能不同。