本文首先介绍了城市GIS数据的内容和特点,重点分析了海量三维模型及属性数据的组织体系结构,阐述关键问题的实现方式,初步设计了一套基于海量数据管理方法的数据流程。
1 引言
随着“智慧城市”等概念的提出,基于三维的数码城市地理信息系统(GIS)在城市信息管理中的应用日益广泛,而且它的应用范围也逐渐的扩大,由单个住宅小区的三维演示发展到整个城市的大范围演示,三维数码城市GIS所管理的数据量呈现出陡增的趋势,高效快捷的海量数据管理方法已成为数码城市GIS实现的关键技术难题。国内外的科研工作者们在这方面进行了许多探索和实践,并产生了一些有益的研究成果。本文借鉴了GIS中传统的二维信息管理技术,并在此基础之上提出了一种管理海量三维数据的模式,初步设计了一套完整的基于对象关系型数据库的城市GIS数据管理引擎。
2 城市GIS数据内容与特点
相对于传统的二维GIS而言,三维数码城市GIS具有更强的表现力与实用性,而这是以增加管理大量的数据类型和数据量为实现代价的,主要包含了以下几大类:1)空间数据(Spatial Data)。空间数据是城市GIS的基础信息, 城市GIS功能的绝大部分将以空间数据为基础。城市GIS管理的空间数据经抽象后可以分为描述地物和描述地形的两大类,即描述地物类的二维矢量空间数据(Digital Line Graphic,DLG)、三维矢量模型数据,描述地形的数字高程模型(Digital Elevation Model,DEM)数据和数字正射影像图(Digital Orthophoto Map,DOM)数据;2)属性数据。属性数据是从现实内容方面对三维矢量模型数据的补充,相对于各个特定地物类的“形”而言,属性数据赋予了它们“意”的内容,描述了它们自身的特有性质,如建筑物可以拥有名称、高度、用途等属性信息;3)多媒体数据。城市GIS广泛应用于社会各行业、各部门,如城市规划、交通等,随着应用需求的进一步拓展以及网络技术的日新月异,如语音、图象等多媒体信息也开始用于数码城市GIS中,丰富了系统的表现形式,赋予了系统更加强大的表现能力。
城市GIS的数据内容及其数据量决定了它的应用特点。与传统的二维GIS相比较,数码城市GIS对数据组织与管理又提出了许多更高的要求,比如:1)矢量模型数据、DEM数据和DOM数据的三库一体化管理;2)多尺度模型的集成应用;3)从数据库到三维虚拟显示的快速转换,如:必须只在当前的视线范围内选择物体(金字塔或是圆锥内)和动态装载等都要求新的数据模型和有效的空间索引机制。
3 海量三维模型及属性数据的组织体系结构
3.1三维空间实体的描述模型介绍
模型是人们对现实世界的一种抽象,数据模型是现实世界向数字世界转换的桥梁。信息系统的数据模型决定了信息系统的数据结构和对数据可施行的操作,因此数据模型是GIS的灵魂和关键。三维空间数据模型是关于三维空间数据组织的概念和方法,它反映了现实世界中三维空间实体及实体间的相互联系,对三维空间数据模型的认识和研究在很大程度上决定着3D GIS系统的发展和应用的成败。其中,三维几何数据模型是三维CAD、三维GIS都需要首先解决的问题,目前,用来描述三维空间实体的模型主要有以下四种(李青元等,2000):1)结构实体几何模型(Construction Solid Geometry,CSG);2)边界表示模型(B-reps);3)面向对象模型;3)面向对象的可视化数据模型。这些模型各有优缺点,要应用到城市GIS的海量数据管理,还需要根据实际情况做结构上的调整和优化,以适应海量数据管理的应用特点。通过比较分析,并结合城市GIS软件设计的可复用性、可扩展性,本文将采用面向对象的可视化数据模型进行三维模型数据的组织。
3.2 三维模型及属性数据组织结构
城市GIS的数据内容包括DLG、DEM、DOM、三维模型及其属性数据,其中最主要的是三维模型及其属性数据,它们同时也是结构最为复杂的数据部分,涉及的数据量也非常巨大。三维模型及其属性数据的数据结构设计是关系到整个城市GIS存储数据量大小、漫游速度快慢以及表现逼真程度高低等的重要因素,本文利用了面向对象的可视化数据模型的设计思想将尽可能完整的数据信息包括进来,同时考虑到数据结构设计的精简性和易操作性。
1)三维模型数据结构
a)超组对象。对应面向对象可视化数据模型中的组对象。超组对象用于组合各种简单对象以表达复杂地物,并描述该复杂物体的整体特征,从严格意义上讲,它并不是实体的地物存储单元,因为它本身并不存储地物的矢量数据,因而不作为主要的数据存储实体。
b)体对象。在数码城市GIS中,体对象主要用来描述建筑物,针对建筑物结构复杂、通常包含多个单独实体的特点(例如一个大厦有主楼、副楼、底座等单独实体),同时为了获取最大的灵活性,本文在组织建筑物数据时采用体元对象描述每个单独实体,同时引入一个体组对象,用它来将其所有体元对象组合成一个具有整体特征和属性的体对象。体组对象和体元对象之间是一对多的关系。
c)面对象。它统一了二维面对象和三维面对象的数据描述,将其矢量数据部分集中到一个面片单元中。面片单元可以描述二维面数据也可以描述三维面数据。
d)线对象。它统一了二维线对象和三维线对象的数据描述,特别将三维管线也引入到线对象模型中,并加入了材质、颜色和管线半径等可视化信息,管线半径为零时则表示该线对象描述的是二维或三维的简单线对象。
e)点对象。它主要描述独立的点状地物,并在描述树、街灯等纹理点状地物的同时引进了CAD或3DS模型,将这些模型也作为点对象,并用一个定位点和方向来放置它,以增强点对象的可视化效果。因此,点对象既可用来描述简单的点对象也可通过CAD或3DS模型来描述复杂的对象
上述各个对象均有各自的数据结构,下面以点对象为例简要说明其特征。点对象的数据结构如下图所示:
2)属性数据结构
属性数据是三维模型数据的解释和语义描述,它是城市GIS必需的表现数据之一,缺少属性说明的三维模型有“形”而无“意”,从“形”的意义出发,可将三维模型数据分为五大类地物;但从“意”的角度讲,对其分类是以地物的地物类编码为依据的。地物类编码是用来标识和区分一类地物的最直接的说明,尤其在区分属性数据结构方面更是如此,相同地物类编码所标识的同一类地物将具有相同描述结构的属性数据。因此,一个城市所有模型数据中地物类编码的多少就决定了属性数据结构的多少,这些不同的属性数据结构主要是由城市GIS的用户来设计的。同时,基于系统实用性的考虑,对地物类编码的定义又作了适当的扩展,因为有时用户觉得严格意义上不同地物类编码的属性结构有相似性,例如都包含:名称,面积,备注等信息,用户可以将这几类不同地物类编码的地物归入同一个新的地物类编码,从而将它们的属性数据结构统一起来。
3.3数据库空间索引方法
在城市GIS中,空间索引一直是空间数据组织的重要内容之一,它是组织空间数据体系结构的基础,并为快速的空间数据查询提供了一个高效的途径。空间索引的性能优劣将直接影响到城市GIS的整体性能优劣。
对于空间索引,各国学者进行了较多的研究,最主要的成果如BSP树、K-D-B树、R树、R+树、CELL树、四叉树等。本文采用的第一种空间索引方法是类似R+树的索引,但针对城市GIS海量数据管理的特点对其组织作了一定的调整,利用它可以在空间快速的定位一个地物,提高了三维空间漫游时的系统效率。但是使用这种索引方式会导致在进行空间分析时需要设计复杂的算法才能执行较为复杂的查询操作,而这类算法通常由于复杂度较高且涉及大量数据,所以执行效率比较低;另外一方面,基于Oracle空间插件(Spatial Catridge)的空间索引提供了复杂的索引功能和简单的编程接口,不需要复杂的算法就可以实现分析功能,克服了前者的缺点,但Oracle空间索引的执行效率比较低,无法满足实时漫游的效率要求。为此,本文提出的数据组织方法中将采用这两种索引方法,二者相辅相成,既满足了实时查询时的速度要求也满足了复杂查询的效率要求。
4 关键问题的实现
4.1空间数据的快速压缩和解压
在城市GIS管理的海量数据中,三维模型数据是其主要部分,而在三维模型数据中矢量数据和纹理数据占有较大比重。在网络环境下直接传输如此大数据量的数据势必会降低系统效率,为此,为了提高客户机从远程数据库中提取数据时的网络传输速度,一方面,必须建立高效的空间索引机制;另一方面,出于减少从数据库中读取和网络上传输的数据量的考虑,采用数据压缩技术来实现用更少量的数据来表达更多信息的目的成为必然的选择。本文根据三维模型中矢量数据、纹理数据各自的特点,分别采用了两种压缩方法:一种是针对矢量数据的无损压缩算法-LZ77,另外一种是针对纹理数据的有损压缩算法-JPEG。
4.2 多用户并发控制机制
多用户数据库中,由于多个并发的事务操作中可能会同时更新相同的数据,所以必须保证这些同时执行的事务操作能够产生有意义、一致性的结果。为此,多用户数据库中对数据并发和数据一致性的控制是至关重要的。管理数据库的目的就是为了实现多用户环境下的数据共享协作,因此并发控制是城市GIS数据管理面临的关键性问题。
通常,多用户数据库中是利用锁机制来解决数据并发、数据一致性以及数据完整性问题的。锁机制是一种防止多个事务在访问相同资源时导致的破坏性交互操作的机制,加锁控制的用户对象包括用户的表和表中记录。然而在此基础之上,还必须设计一个合理利用锁机制的策略来保证多个用户并发访问时数据库的吞吐量,但由于事务隔离模型与数据库的吞吐量是两个互相矛盾的制约因素,因此必须在二者之间寻求相对平衡以使得在不影响数据一致性的前提下达到系统的最大吞吐量,本文即利用锁机制实现了多用户的并发控制。
同时本文并没有采用对表加锁的方法,而是采用了对记录加锁的方法来设计并发控制机制。对表加锁的缺点是当某个用户访问表中的一条记录时会锁定整个表,导致其它用户无法访问该表,这在很大程度上降低了系统的吞吐量,因为大多数情况下并发用户访问的记录一般是不同的,这样的并发操作并不会产生数据的不一致性。相对而言,对记录加锁的方法将具有更大的控制灵活性,但同时也增加了设计的复杂性。采用的锁类型主要是ORACLE中的共享记录锁(Row Share Table Locks ,RS),它是所有锁类型中限制最小的锁模式,共享记录锁允许在一个事务采用该类型锁锁定某表中记录的同时还允许其它事务在该表中进行查询、插入或者对该表中其它记录的更新、删除以及上锁操作;共享记录锁限制其它事务对该表进行排它型(Exclusive)的写操作,即不允许对上了锁的记录进行写操作,但允许对该表中的其它记录进行任何其它操作。共享记录锁是灵活性最大的一种锁模式,灵活运用共享记录锁可以达到更大的数据库吞吐量以及更小的并发操作等待时间的效果。
上述这些控制机制保证了多用户并发环境下城市GIS数据库能够维持其底层空间数据库的数据一致性和完整性。
4.3整体系统的简要数据流程
从逻辑上讲,本文所述城市GIS数据管理体系结构是一个三层结构:上层是数据管理操作层(用户界面)、中间是数据操作功能实现层(空间数据引擎),底层是ORACLE数据库。这三者之间的数据流从数据库的角度出发可分为两种:入数据流(In Flow)和出数据流(Out Flow),入数据流主要是指由上层插入或更新数据时向底层数据库输入的数据,出数据流主要是指由上层发出查询请求时由底层数据库向上层提供的数据,三者间的简要数据流程如图2所示。
5 结语
完备的三维数据模型定义、高效空间索引、快速数据压缩方法等等问题都是城市GIS海量数据管理的难点。这些内容不仅依赖三维GIS本身的发展,而且也需要计算机领域技术进步的支持,虽然本文提出城市GIS海量数据管理方法初步实现框架和方式,但仍存在一些问题有待进一步探讨和改进。
作者:闵星 尹端 曹伟 来源:商品与质量·房地产研究 2014年7期
更多论文请到千里马论文发表网