3D GIS空间索引技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3D GIS空间索引技术
3DGIS是新一代GIS技术的重要分支,是进行全方位、多层次、多要素时空分析的基础,开发结构简单、功能完善的真3DGIS软件是当前GIS研究人员的重要目标。3DGIS需要管理大量的三维空间对象,且常常需要根据空间位置对这些对象进行查询、检索和显示操作。为了处理这类空间操作,传统的关系数据库搜索方法需要花费大量的磁盘访问时间和空间运算时间。为了提高检索效率,传统的关系数据库一般都建立一系列的索引机制,如B+树等。目前常用的索引机制多是一维索引,无法有效处理3DGIS空间数据库中的三维空间地理实体。因此,必须为3DGIS空间数据库建立专门的索引机制——空间索引。
空间索引是指根据空间要素的地理位置、形状或空间对象之间的某种空间关系,按照一定规律排列的数据结构,它介于空间操作算法和空间对象之间,筛选、排除与特定的空间操作无关的空间对象。空间索引机制是快速、高效地查询、检索和显示地理空间数据的基础,其性能优劣直接影响GIS空间数据库的性能,关系到3DGIS软件系统的整体运行状况。
一、三维空间索引简介
3DGIS是2DGIS在三维空间内的延展,是布满整个三维空间内的GIS,它与2DGIS的差异主要体现在空间位置的确定、空间拓扑关系的描述与空间分析的延展方向上。3DGIS将三维空间坐标(x,y,z)作为独立的参数来构建空间实体对象模型,能够实现空间实体的真三维可视化,以立体造型来展现空间地理现象,它不仅能够表达空间实体之间的平面关系,还能够表达其垂向关系,在此基础上进行复杂的三维空间分析与操作。
在GIS由二维扩充到三维后,其处理的空间对象也由二维空间中的“点、线、面”扩充到三维空间中的“点、线、面、体”。2DGIS对平面空间的“有限-互斥-完整”剖分是基于面的划分,而3DGIS对三维空间的“有限-互斥-完整”剖分则是基于体的划分。在3DGIS 空间数据库中,空间实体的表达形式复杂,各种空间操作不仅计算量大,而且多具有面向邻域的特点。因此,在3DGIS中,由于空间维数的增加和空间实体关系复杂度的提高而导致三维空间数据的海量性。海量数据的存储与管理需要更加高效的空间数据结构和空间索引机制。目前成熟的空间索引算法多集中在二维空间索引上,如网格索引、四叉树索引等,而对3DGIS的空间索引问题研究较少。对低维空间数据而言,二维空间索引的索引效率较高,并且多数可以进行扩展以支持高维数据集。但应用实践显示,仅仅简单地将二维空间索引维数增加到三维,其效率并不高,且很多索引结构都是针对特定空间查询操作而设计的,不具有通用性。因此,需要研究3DGIS所使用的空间索引技术。
设计3DGIS空间索引面临的主要困难是:三维空间实体的空间关系比较复杂,有时甚至呈一种相对无序的状态。从本质上看,3DGIS对空间索引的要求与2DGIS基本类似,但在数据采集、数据库维护、数据操作、界面设计等方面要比2DGIS复杂得多。目前的三维空间索引大多是从二维空间索引的基础上发展而来的。与二维空间索引相似,三维空间索引方法也是基于空间数据的层次化聚类原则,结构上类似于早期用于数据检索的B+树:数据矢量存储在数据节点,空间位置邻近的矢量尽可能存储于同一节点。数据节点之间以层次化目录结构来组织,每一个目录节点都指向下一级的一个子树。
目前,索引结构大都采用平衡树的概念,即从根节点到所有数据节点的访问长度(索引高度)相同(但在插入和删除操作后可能会有改变),在树的形状上表现为高度一致性。从任意节点到数据节点的访问长度称为节点的级,数据节点对应第0级。
二、空间索引结构分类
根据空间索引结构的演化过程,空间索引方法可分为4大类,即基于二叉树的索引技术、基于B树的索引技术、基于Hashing的格网技术和空间目标排序法。
空间索引的基本方法是将整个空间分割成不同的搜索区域,以一定的顺序在这些区域中查找空间实体。针对3DGIS应用的实际,按照搜索分割对象不同,可将空间索引分为3类,即基于点区域划分的索引方法、基于面区域划分的索引方法和基于三维体区域划分的索引方法。常见的基于点区域划分的索引结构有KD树、B树、KDB树和点四叉树等;基于面区域划分的索引结构有区域四叉树、R树系列和格网索引机制等;基于三维体区域划分的索引结构有Morton编码、无边界Qu编码、球面QTM编码以及球面HSDS编码等。
按照空间分割方法将空间分割分为规则分割法和对象分割法。规则分割法是将地理空间按照某种规则或半规则的方式进行分割,分割单元间接地与空间要素相关联,空间要素的几何形状可能被分割到几个相邻的单元中,这时空间要素的描述保持完整,而空间索引单元只存储空间要素地址的参考信息。在对象分割法中,索引空间的分割直接由空间要素确定,索引单元包括空间要素地址的参考信息和空间要素的外包络矩形。规则分割法包括规则网格、BSP树、八叉树、KD树、KDB树和R树系列等,对象分割法一般通过层次包围体(bounding volume hierarchy)实现。下文按照分割方法对常见的空间索引结构进行详细讨论。
三、常见的三维空间索引结构
(一)对象分割法
对象分割法一般由层次包围体实现。层次包围体是一种简单的树结构,它用一些特定的方法对空间实体对象进行分割,最终将树的每一个节点保存为所在层次的包围体信息,叶子节点则存储基本对象。如当对两个物体做碰撞检测时,首先检测两者的包围体是否有交,若不相交,则说明两个物体未相交,否则再进一步对两个物体进行检测。求包围体的交比求物体的交要简单得多,以便快速排除很多不相交的物体,从而加速检索算法。常见的包围体有5种:
1.包围球(Spheres)。包围球是一种最简单的包围体,易于计算,非常易于做重叠测试和节点修改,但缺点是与物体的逼近程度较差。
2.轴向包围盒(Axisaligned Bounding Box,ABB)。轴向包围盒是一种长方体的包围体,其各轴的方向与坐标轴的方向一致,它也是一种易于做重叠测试的包围体,但与物体的逼近程度也较差。
3.方向包围盒(Oriented Bounding Box,OBB):方向包围盒是一个任意方向的长方体包围体,与前二者相比,它可提供非常紧凑的逼近效果,而且更新计算的效率较高。
4.离散方向多面体(Discrete Orientation Polytopes,DOP):离散方向多面体是一个凸多面体,它的面由一些半空间所确定,这些半空间的外法向是从k个固定的方向中选取的。与包围球和轴向包围盒相比,离散方向多面体对物体的逼近程度相对较好,与方向包围盒和凸包相比,它的重叠测试和节点修改耗费相对较低。
5.凸包Convex Hul1)。凸包是一种极端情况,它提供了物体最紧凑的凸包围体,但它的重叠测试和节点修改的耗费都相当高。
层次包围体的基本算法包括包围体的计算、分割和相交判断等。一般以上几种包围体(包围盒)的紧凑程度依次增大,但相应地计算复杂度也越来越高。
(二)规则分割法
规则分割法将空间按照某些规则分割成均匀的单元,然后将空间中每个实体对应到一个或多个单元中,这一方法很适于实体在空间中均匀分布的稀疏环境。但对于更为一般的环境,则很难选择一个最优的剖分尺寸,若选择不当,会导致空间耗费大,计算效率低。常用的空间剖分法有规则网格、KD树、KDB树、BSP树、八叉树和R树系列等(图1)。
规则格网空间索引的思路简单,容易理解和实现,其基本思想是将研究区域用横竖线划分为大小相等或不等的网格,记录每一个网格所包含的地理对象。为了建立空间索引的线性表,可将空间格网按Morton码编码,建立Morton码与空间对象的关系。当用户进行空间查询时,首先计算出用户查询对象所在的网格,然后通过该网格快速查询所选地理对