论文部分内容阅读
随着图形处理能力,计算机存储能力和网络带宽的不断提高,使得以大规模存储、计算机网络、多媒体和虚拟现实技术为基础的虚拟城市应用成为可能。实现虚拟城市应用的其中一个基本问题就是如何有效的存储、读取、检索和更新大规模的场景数据,以及把虚拟场景和矢量地图、文字属性以及栅格数据进行统一管理。传统的虚拟场景数据以文件的形式存储,但是随着场景数据量的增大,基于文件系统的存储方式存在导入速度较慢,更新数据文件效率低下,以及难以检索局部场景的弱点。本文提出并实现了一个基于数据库系统(DBMS)的二、三维场景数据存储方案,兼容VRML/X3D数据模型和矢量数据类型。 目前的商用数据库系统基于关系模型建立,而对于空间数据,关系模型难以表达,所以我们在实现时采用对象-关系模式,利用Oracle的面向对象扩展及其空间数据组件Oracle Spatial作为系统的基础平台。使用Oracle Spatial提供的SDO_GEOMETRY数据类型处理二维矢量数据。根据VRML/X3D标准,将场景图节点映射为数据库实体,将节点之间的层次关系映射为一个二元关系在数据库中进行存储。为了提高系统的可用性,我们开发了一些为数据库采集数据的程序接口,支持WRL文件、3Dmax和AutoCAD向数据库导入数据。经过测试,在从数据库系统读取大规模场景时,效率比从WRL文件读取提高4~5倍。 数据库系统的一大优势在于支持索引和查询,对于数字或者字符串类型的字段采用B+树;对于空间索引,Oracle Spatial为SDO_GEOMETRY数据类型增加了四叉树和R树索引。针对虚拟城市场景具有地平面的特点,我们把虚拟场景的每个Shape节点的包围盒朝X-Z方向(即场景的“地平面”)投影,投影区域使用SDO_GEOMETRY类型进行存储并和Shape节点绑定在一起,以SDO_GEOMETRY字段进行空间索引。