APP下载

基于三维地理信息系统的数据结构分析

2016-04-14马良才

地球 2016年2期
关键词:八叉树三维空间面向对象

■马良才

(广州绘宇智能勘测科技有限公司 广东广州510000)

基于三维地理信息系统的数据结构分析

■马良才

(广州绘宇智能勘测科技有限公司 广东广州510000)

本文首先介绍了进行三维地理信息系统数据结构研究的必要性,详细阐述了其矢量结构的构建、编码等内容,主要探讨分析了其核心技术及系统实际应用功能,针对性地提出结构设计及储存方面的建议,以供相关人员参考借鉴。

三维GIS矢量数据构建编码

0 前言

随着计算机信息技术的发展,现代勘测技术的地形图绘制普遍通过地理信息系统(GIS)来进行,GIS具有地理定位功能、地理信息采集分析储存输出功能、动态预测以及空间分析功能等,拥有极其高的应用价值。加之当下三维技术的应用发展,人们将三维技术与GIS技术相结合,使得GIS更加具体化、数据更加直观明了,现对其数据结构进行研究分析,为三维GIS的发展提供技术支持。

1 三维GIS数据结构探讨的必要性

1.1二维GIS数据结构的缺陷

三维GIS是在二维GIS发展到一定程度的基础上才提出的。对于二维的情况,是将平面上的坐标(x,y)作为独立的参数来表达地物的属性,数学表示为F=f(x,y)。而由DEM生成的地形表面只能称为2.5维GIS,地面高程只是作为一个属性值,其数学表示为Z=z(x,y),F=f(x,y)或者表示成F=f{x,y,z(x,y)}。通过这种结构虽然能表现邻近的多个表面,但对于表面交叉的情况,则难以进行交叉表达和管理。只有将这类现象置于真正的三维空间中考虑,才能灵活高效地处理各种三维问题。而真正的三维GIS是将三维空间坐标(x,y,z)作为独立的参数,数学表达式为F=f(x,y,z)。在三维GIS中所进行的所有操作都是将(x,y,z)作为一个整体参数进行计算的,而传统的二维GIS的数据结构以点、线、面这3种基本要素来表达地物已经不能满足计算机操作的要求。

1.2建立三维GIS数据结构的紧迫性

当前研究和开发三维GIS的思路主要有两种:

(1)从三维可视化领域向三维GIS系统扩展,这一点同早期的二维GIS来源于计算机制图管理一样,是从可视化角度出发的;

(2)从数据库的角度出发向三维GIS发展,将三维空间信息的管理融入RDBMS中,或是从底层开发全新的面向空间的OODBMS。一个新的发展方向是将三维可视化与三维空间对象管理藕合起来,形成集成系统。虽然国内外出现了一些开发三维GIS的相关软件,但它们的共同缺点是只重视表达三维对象本身,而对各对象间关系的表达没有足够的重视。因此,管理大批量三维空间对象的能力较弱,也不能做一些GIS需要的空间分析。出现这种情况的一个主要原因是三维空间数据模型理论和技术不成熟,采用什么样的数据模型对GIS空间拓扑关系的建立以及空间分析与操作至关重要,而三维空间数据结构是三维空间数据模型的具体实现,是客观对象在计算机中的底层表达,是对客观对象进行可视表现的基础。

2 三维GIS数据结构

在三维GIS数据结构方面的研究最初主要集中于栅格或体元表示,后来转向矢量数据的表示,现在也出现了对矢栅数据一体化结构的研究。但就目前来讲,主要还是扩充二维矢量数据结构,将点、线、面要素扩展到体,除了表达各种元素的空间位置外,还表达它们之间的拓扑关系。三维GIS的数据结构大体上可以分为两大类:

(1)基于表面的数据结构,有规则格网(Grid)、不规则三角形网(TIN)、边界表示(BR)和参数函数;

(2)基于体表示的数据结构,有三维栅格(Array)、八叉树(Octree)、实体结构几何法(CSG)和四面体格网法(TEN)。前者便于表面显示,后者便于空间分析。

2.1三维矢量结构

在三维空间中,多采用点、线、面、体来表达各种实体,前三种要素在二维平面GIS的应用中已有较深的研究,只有体元素的研究才刚起步,并且也是三维数据结构研究中必需解决的难题。李青元认为,只有体划分是有限—互斥—完整划分的概念,不同的数据场类型对应不同的体划分方案。在三维空间里,研究区域中涉及最多的便是体元素,体与体之间由曲面片隔开;曲面片由一个外环和若干个内环构成边界;相邻曲面片交于边,环由边有向连接成一个闭合回路;边由两个端结点限定边界,两个端点之间用一系列曲线型值点限定边的形状;不同的边交于结点。

在表达实体对象时,尤其对于复杂地物的表达,常将其按照不同的精细程度进行子结构划分以及拓扑关系的表达,这使得各种空间的操作与查询易于实现。

2.2面向对象方法构建三维数据结构

到目前为止,三维GIS一直处于理论研究阶段,虽然有三维GIS系统问世,但其功能远远不能满足人们分析问题的需要。其拓扑关系模型一直没有解决,另外,三维基础上的数据量十分大,很难建立一个有效的、易于编程实现的三维模型。针对三维GIS拓扑空间的复杂性,使用一种面向对象的三维GIS空间矢量网状数据模型,以链表作为基本结构,把点、线、面、体看作是三维GIS的基本元素,以每个元素为对象设计数据结构。这种结构由面向对象的二维GIS发展而来,符合人们处理GIS基本元素对象的习惯,能较直观自然地表达三维GIS中各个对象间的拓扑关系,且由面向对象的二维GIS系统向面向对象的三维GIS过渡也较易实现。

面向对象三维矢量GIS数据结构按面向对象程序设计的风格,对每一个基本元素定义一个类,拓扑关系包含在类的成员变量及成员函数中。这样程序设计中只针对每个元素,运用其成员变量,编写其成员函数,程序通过调用其成员函数即可实现拓扑关系的自动建立。在表结构中建立指针,通过表结构中的这种指针来表达空间拓扑关系。在这种结构中,每个基本元素类中包含了构成它的基本元素,也包含了由它构成的更高一级的元素,这种数据结构所构成的数据模型能表达网状的空间拓扑关系,较直观地反映了三维GIS中复杂的空间拓扑关系,也便于各类应用系统的开发。

在上面所给出的数据结构中,反映出了如下基本拓扑关系:点线关系、点面关系、线面关系和面体关系。隐含的关系有:线与线关系、面与面关系和体与体关系。这些关系基本上能全面反映已有的空间拓扑关系,由于以点、线、面、体基本对象构建,故适合于面向对象的空间操作与分析。

VC++作为一种功能强大的面向对象语言,是开发GIS图形系统和属性数据库的有利工具。类似于用VB实现OpenGL三维地形显示的思想,在VC的函数库中加入图形绘制函数库,利用VC来实现三维地形显示。在实现三维建模的同时,将对应的属性信息绑定在该类所生成的实体,并对GIS图形数据与属性数据进行连接,在建立其数据库时,可选用ArcSDE与Oracle结合的方式进行建库,最终实现一体化的管理。

2.3八叉树编码的三维GIS数据结构

八叉树结构是三维GIS中一种研究和应用最为广泛的栅格数据结构,也是一种有效的栅格数据结构,是由四叉树结构推广到三维空间而形成的一种三维栅格数据结构。八叉树的特点是结构简单,便于分析和处理。在八叉树的树形结构中,将每一个不是叶子的结点连接8个子结点。根结点表示整个目标空间,对应一个2n边长的立方体(n为八叉树的层次数),任何其他结点对应于一个边长为2i(i为结点的深度)的立方体。从同一个父结点产生的子结点所对应的立方体是通过对父结点对应的立方体沿3个坐标轴进行分割得到的。八叉树编码有普通八叉树、线性八叉树和行程八叉树编码。

普通八叉树编码是八叉树最基本的编码方法,又称为明晰树编码。对于每一个结点需记录结点的类型、结点的属性值和指向兄弟结点的指针,如果是中间结点则有一个指向第一个子结点的指针和一个指向父结点的指针。树中结点的数目是O(s/n),这里s是以分辨率为单位的目标的表面积。对于给定的分辨率,当s增加时,编码的存储空间也增加。由于采用指针,又称为基于指针的编码方法,这种方法明确存储所有需要的内容,没有任何数据压缩,因而便于检索。但是,由于指针占用存储空间大,存储空间的使用率不高,增加了操作的复杂性,使得操作速度较慢,因此一般不使用,特别不适合数据量通常很大的GIS应用。

线性八叉树编码是为了克服普通八叉树编码的不足而形成的一种高效编码方法。线性八叉树编码只存实的叶结点,内容叶结点的位置、大小和属性值。叶结点的编码称为地址码,常用的地址码是Morton码,其中隐含了叶结点的位置和大小信息,Morton码的生成可以由结点在空间的三维坐标(X,Y,Z)经过计算得到。线性八叉树存储内容简单,存储空间占用少,提高了运算效率,能够满足一般的应用需要。目前,许多三维栅格算法都是基于线性八叉树编码。

三维行程编码方法是在对线性八叉树编码方法进行分析的基础上,将行程编码技术引入八叉树的数据压缩而形成的。三维行程编码是二维行程编码的直接扩展,它是将多维表示转换成一维表示,再进行数据压缩的有效方法。在压缩过程中对属性相同的连续编码进行压缩,同时保证空间关系没有任何损失。在三维行程编码中,叶结点采用线性八叉树相同的地址码,即Morton码,当采用十进制编码时,所有结点的编码成为一个一维的连续自然数编码,其中的顺序是一种空间最近关系。当采用自然数编码时,就可以直接用Morton码作为属性值数组的下标,而不需地址码的内存数组。这样可以节省内存,提高运算速度,插入、删除等操作更为简便。

3 结束语

综上所述,三维GIS具有优秀的空间信息表现形式,使用户对于空间信息的认知更为简单明了。三维GIS涉及到很多支撑技术和研究领域,重点在于空间数据的分析处理,不断发挥三维GIS技术作用,对于促进包括我国建筑产业在内的我国各生产领域的发展具有重要的历史作用和现实意义。

[1]姜亚莉、张延辉.GIS空间分析的应用领域 [J].四川测绘.2004(03)

[2]余成肖、李欣、王君.GIS空间分析建模模块的设计与实现 [J].计算机工程与设计. 2010(14).

P2[文献码]B

1000-405X(2016)-2-224-2

猜你喜欢

八叉树三维空间面向对象
三维十字链表八叉树的高效检索实现
基于平面补丁的自适应八叉树三维图像重建
面向对象的计算机网络设计软件系统的开发
三维空间的二维图形
面向对象的数据交换协议研究与应用
白纸的三维空间
面向对象Web开发编程语言的的评估方法
三维空间中次线性Schr(o)dinger-Kirchhoff型方程的无穷多个负能量解
面向对象信息提取中影像分割参数的选择
基于密集型区域的八叉树划分算法