著录项信息
专利名称 | 一种基于文件系统的三维空间数据存储管理方法 |
申请号 | CN201010269095.9 | 申请日期 | 2010-09-01 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2010-12-15 | 公开/公告号 | CN101916299A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中国地质大学(武汉) | 申请人地址 | 湖北省武汉市洪山区鲁磨路388号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国地质大学(武汉) | 当前权利人 | 中国地质大学(武汉) |
发明人 | 吴冲龙;刘刚;何珍文;翁正平;孙卡;田宜平;张夏林;刘圆圆;王玭茜;李晶;彭元;崔运涛;刘延婷;李莹莹;周涛 |
代理机构 | 湖北武汉永嘉专利代理有限公司 | 代理人 | 唐万荣 |
摘要
本发明涉及三维空间数据存储技术领域,尤其涉及一种基于文件系统的三维空间数据存储管理方法。本发明是一种基于文件系统的三维空间数据存储管理方法,采用面向对象的方法和基于文件系统的思想进行设计与开发,该存储管理方法将三维空间对象实体的空间数据及属性数据统一存储于文件中,通过文件流技术进行有效存储和获取数据,本发明采用分类存储、增量追加、索引管理和实时调度的思想,实现了地上地下、室内室外三维空间数据一体化管理、高效三维空间索引与动态调度等核心技术。本发明具有处理高效、管理灵活的优点,并且与大型空间数据库系统有很好的兼容特性,为三维空间数据库管理与应用提供底层支持。
1.一种基于文件系统的三维空间数据存储管理方法,其特征在于:
采用文件系统设计模式,将三维空间对象实体的空间数据和属性数据统一存储在文件中;
概念模型设计中,将地上、地下三维空间数据表示成统一的数据模型进行存储与管理;
逻辑模型设计中,将空间对象的存储级别划分为不同的粒度与类别,并将每个类别进行单独存储,对三维空间数据进行分类存储、增量追加、索引管理和实时调度;
所述逻辑模型设计中,将空间对象的存储级别划分为不同的粒度与类别,分别为:要素集、要素对象、空间数据和属性数据;
物理模型设计中,采用空间分区、属性分层的方法,将整个三维空间范围建立多个可管理的分块,并在每一个分块内部建立基于对象类型的分层组织与分类管理。
2.根据权利要求1所述的基于文件系统的三维空间数据存储管理方法,其特征在于:
所述分类存储为将空间对象按其语义划分为不同的要素类,每个要素类进行单独存储;
所述增量追加为对某一空间对象进行编辑时,在其所在要素类文件的末尾写入编辑后的对象,不进行整个要素类文件的重写;
所述索引管理为对空间对象建立索引,以便于查找和更新;
所述实时调度为在需要空间对象时才调度其空间数据。
3.根据权利要求1所述的基于文件系统的三维空间数据存储管理方法,其特征在于:
所述概念模型设计中的数据模型由两个层次组成,其中,底层为空间数据表达层,提供点、线、面、体几何对象的表达;上层为兼顾空间关系、语义关系和拓扑关系并支持空间对象多细节层次表达的语义层。
一种基于文件系统的三维空间数据存储管理方法\n技术领域\n[0001] 本发明涉及三维空间数据存储技术领域,尤其涉及一种基于文件系统的三维空间数据存储管理方法。\n背景技术\n[0002] 随着空间技术的迅速发展,三维GIS的发展越来越受到人们的广泛关注。三维空间数据除了具有一股空间数据的特点,还体现在空间目标的语义、几何与纹理等属性多样、相互关系复杂、数据量庞大等方面。而地理空间数据又具有多源、多类、多维、多量、多时态、多主题及多细节层次表达等特征,使得地理空间数据的存储、管理和更新能力,成为决定三维GIS应用成功的关键。因此研究一种三维空间数据的存储管理方法成为亟须突破的难点。\n[0003] 基于文件系统的管理模式是空间数据管理的主要模式之一,常见的基于文件系统的GIS数据格式有:MapInfo(*.TAB、*.MIF)数据格式,MicroStation(*.DGN、*.FCl、*.POS等)数据格式,ESRI(*.SHP、*.EOD、*.ADF等)数据格式,此外,美国国家空间数据协会(NSDI)制定了统一的空间数据格式规范SDTS,中国制定了国家标准地球空间数据交换格式,用来作为不同空间数据格式的转换标准。但是,随着GML(含CityGML)、KML越来越广泛的被用来存储GIS数据,用GML实现GIS数据的表达与交换已成为一种趋势。2008年OGC推出的CityGML1.0已经对地表以上的城市三维空间对象进行了比较系统的归纳总结,提出了一系列的三维地表空间数据结构模型。然而已有的多数空间数据结构模型都是针对地表或面向专题的,没有地上、地下一体化统一的结构模型,因此如何在前人研究的基础上,扩展实现基于文件系统的地上下三维空间数据存储模型,使之能够满足地上下一体化统一存储与管理,是实现三维GIS的关键问题之一。\n[0004] 由于外存设备的容量要远远的高于内存设备的容量,而空间数据又以爆炸式的速度增长,同时由于操作系统的限制(如Windows XP系统最大仅支持4G内存空间),因此外部存储设备和内存之间存在着巨大的矛盾。另外,由于各种历史原因,已有的空间数据管理系统(如MapGIS、AutoCAD等)采用的是将空间数据一次性调入内存的方式,因此这类软件无法进行海量空间数据的管理。尽管目前的3G通信技术取得了巨大的进步,但空间数据分布式和移动式的应用日益普及,如车载导航系统要求对沿途路线加以逼真实时的显示、野外勘查设备要加载大量已有的基础数据,使得在当前情况下无线传输技术在经济上和技术上都无法满足实时加载海量空间数据的要求,因此研究基于文件系统的三维空间数据存储模型并使之能够支持高效的管理和动态调度,成为行业和社会发展的必然需求。\n发明内容\n[0005] 针对上述存在的技术问题,本发明的目的是提供一种基于文件系统的三维空间数据存储管理方法,以扩展实现基于文件系统的地上地下三维空间数据存储,使之能够满足地上地下、室内室外一体化统一存储与管理。\n[0006] 为达到上述目的,本发明采用如下的技术方案:\n[0007] 采用文件系统设计模式,将三维空间对象实体的空间数据和属性数据统一存储在文件中;\n[0008] 概念模型设计中,将地上、地下三维空间数据表示成统一的数据模型进行存储与管理;\n[0009] 逻辑模型设计中,将空间对象的存储级别划分为不同的粒度与类别,并将每个类别进行单独存储,对三维空间数据进行分类存储、增量追加、索引管理、实时调度;\n[0010] 物理模型设计中,采用空间分区、属性分层的方法,将整个三维空间范围建立多个可管理的分块,并在每一个分块内部建立基于对象类型的分层组织与分类管理。\n[0011] 所述逻辑模型设计中,将空间对象的存储级别划分为不同的粒度与类别,分别为:\n要素集、要素对象、空间数据和属性数据。\n[0012] 所述分类存储为将空间对象按其语义划分为不同的要素类,每个要素类进行单独存储;\n[0013] 所述增量追加为对某一空间对象进行编辑时,在其所在要素类文件的末尾写入编辑后的对象,不进行整个要素类文件的重写;\n[0014] 所述索引管理为对空间对象建立索引,以便于查找和更新;\n[0015] 所述实时调度为在需要空间对象时才调度其空间数据。\n[0016] 所述增量追加包括以下步骤:\n[0017] ①根据更新对象的ID,获取其对应的IndexItem信息;\n[0018] ②将该对象的包围盒及相关信息分别从空间索引和根据ID构建的索引中移除,同时更新这两种索引结构;\n[0019] ③将IndexItem信息添加到更新索引结构中;\n[0020] ④将更新后的对象序列化成的数据块写入*.FS文件,并新建一个IndexItem对象实现相关信息的记录;\n[0021] ⑤将更新后的对象的IndexItem信息分别添加到空间索引和根据ID构建的索引中移除,同时更新这两种索引结构。\n[0022] ①在创建基于文件系统的数据库时,创建空的*.FDX和*.UDX文件及其他相关数据文件;\n[0023] ②在系统启动时,打开*.FDX和*.UDX文件,把其内部的数据加载到分别由map 和 vector所 创 建 的 对 象_vIndexMap 和 _uIndexVector中,并根据_vIndexMap中的内容创建空间索引_SpatialIndex,该索引可以是空间R树索引或其它空间索引;\n[0024] ③在添加空间对象时,将空间对象序列化为DataBlock并追加到*.FS文件的末尾,然后将该空间对象对应的IndexItem*添加到_vIndexMap中,并更新_SpatialIndex对象;\n[0025] ④在读取空间对象时,首先根据用户输入的关键字检索_SpatialIndex对象,查找到满足需求的空间对象的ID集合,然后,在_vIndexMap中找到这些ID集合所对应的IndexItem*项,并对其按其所在的要素类分组,最后启动多线程调度程序,分别从不同的*.FS文件中进行DataBlock的读取,并将其反序列化为空间对象;\n[0026] ⑤在编辑空间对象时,将更新前空间对象的IndexItem*从_vIndexMap中转移到_uIndexVector中,将更新后的对象序列化为DataBlock并追加到*.FS文件的末尾,然后将更新后的空间对象对应的IndexItem*添加到_vIndexMap中,并更新_SpatialIndex对象;\n[0027] ⑥在删除空间对象时,将该对象的IndexItem*从_vIndexMap中转移到_uIndexVector中,然后更新_SpatialIndex对象;\n[0028] ⑦当频繁地对空间对象进行编辑、删除操作后,动态监测*.FS文件的长度以及_uIndexVector中对象的个数,当*.FS的长度接近文件系统所管理的极限或者_uIndexVector中对象的个数超过用户设定的数量时,启动文件压缩功能,文件压缩功能将删除_uIndexVector中索引项所指向的数据段,重建*.FS文件和_SpatialIndex对象,同时清空_uIndexVector和*.UDX文件中的内容。\n[0029] 所述文件系统空间数据库包含以下数据文件:工程文件、要素类文件、要素信息文件、有效索引文件、更新索引文件、LOD数据文件、LOD索引文件、更新LOD索引文件、材质信息文件、项目模型文件夹、共享模型数据文件、共享模型索引文件、系统纹理文件、纹理文件、纹理索引文件、系统拓扑文件夹、拓扑信息文件。\n[0030] 所述概念模型设计中的数据模型由两个层次组成,其中,底层为空间数据表达层,提供点、线、面、体等几何对象的表达;上层为兼顾空间关系、语义关系和拓扑关系并支持空间对象多细节层次表达的语义层。\n[0031] 所述物理模型设计中,包括空间分区全局索引文件、属性文件、元数据文件三大类,空间分区索引文件向下分为若干子空间分层局部索引文件,并根据数据类型分为格网索引、真三维空间索引和线状索引,具体包括DEM索引文件、DOM索引文件、建筑模型索引文件、地质体模型索引文件、道路网络模型文件。\n[0032] 本发明具有以下优点和积极效果:\n[0033] 1)本发明实现了三维空间数据的分类存储、增量追加、索引管理、实时调度等功能,是空间数据应用系统的基础,满足了三维空间数据管理的应用需求;\n[0034] 2)本发明设计的文件系统数据模型,能够满足地上地下数据一体化表达,实现地上数据和地下数据的一体化组织与高效管理,为三维空间数据库高效管理与应用提供底层支撑;\n[0035] 3)本发明基于文件系统的三维空间数据存储管理,主要面向单用户、小范围的各类专题应用,并且可方便、无损地与数据库系统进行数据交换,有很好的兼容特性;\n[0036] 4)本发明提出的高效的三维空间数据管理和动态调度方法,在文件系统的实现中,建立不同类型空间数据的索引文件以及具体的适应于快速绘制等应用的存储格式,解决了三维空间数据的动态与快速调度问题。\n附图说明\n[0037] 图1是本发明基于文件系统的三维空间数据存储管理方法的逻辑模型设计示意图。\n[0038] 图2是本发明基于文件系统的三维空间数据存储管理方法的分类存储粒度关系示意图。\n[0039] 图3是本发明的增量追加方案设计示意图。\n[0040] 图4是本发明的索引管理方案空间索引结构示意图。\n[0041] 图5是本发明基于文件系统的三维空间数据存储管理方法的逻辑模型设计实现流程图。\n[0042] 图6是本发明基于文件系统的三维空间数据存储管理方法的物理模型设计示意图。\n[0043] 图7是本发明基于文件系统的三维空间数据存储管理方法的数据引擎模块设计示意图。\n具体实施方式\n[0044] 本发明提出的基于文件系统的三维空间数据存储管理方法,是针对目前三维空间数据存储结构复杂、类型繁多、数据量庞大、空间分布不均衡、个体对象的差异性,多细节层次表达的特性等技术难点而提出的。\n[0045] 该基于文件系统的三维空间数据存储管理方法是以文件系统为基础,以数据为核心将多种技术联合应用,其设计开发遵循存储三维空间数据的文件系统的设计原理与方法,体现了以文件系统为基础,将空间信息和属性信息统一管理为核心的设计思路,[0046] 该基于文件系统的三维空间数据存储管理方法以单个存储文件为单位,将三维空间中的所有对象,如道路模型、管线模型、建筑物模型、地质体模型的空间信息和属性信息统一存入文件中,同时可以对这些数据进行分类存储、增量追加、索引管理和实时调度,实现数据的数字化、自动化、高速化、和综合化。\n[0047] 本发明以三维空间数据库的数据内容与数据模型为设计基础,遵循关系数据库的设计流程,以文件系统主要是面向单用户、小范围的城市空间分析及各类专题应用为目的,并建立面向关系数据库数据的导入、导出接口。\n[0048] 在本发明文件系统数据库的实现中,根据三维空间数据库的设计,分别在概念模型设计、逻辑模型设计、物理模型设计上采用如下技术方案:\n[0049] 概念模型设计中采用集成的思想,将地上、地下三维空间数据表示成统一的数据模型进行存储与管理,实现地上数据与地下数据的一体化组织,为高效管理提供底层支撑。\n[0050] 逻辑模型设计中主要采用对三维空间数据的分类存储、增量追加、索引管理、实时调度的技术方案进行设计。将空间对象的存储级别划分为不同的粒度与类别,并将每个类别进行单独存储,保证文件系统数据库的数据清晰并易于管理。对数据文件的修改、编辑操作采用增量追加方式,不进行整个文件的重写,并根据数据修改情况更新索引内容以提高调度效率。对每一类对象类型建立相应的索引组织与索引格式,以满足实时调度的需要,并针对空间分析应用、专题业务应用建立文件系统的接口。\n[0051] 物理模型设计中,采用空间分区、属性分层的方法,将整个三维空间范围建立多个可管理的分块,并在每一个分块内部建立基于对象类型的分层组织与分类管理。建立不同类型空间数据的索引文件及具体的适应于快速绘制等应用的数据文件存储格式,构建文件系统三维空间数据库。\n[0052] 下面分别从概念模型设计、逻辑模型设计和物理模型设计,以具体实施例结合附图对本发明实现存储管理三维空间数据的具体功能进行详细描述:\n[0053] 1、概念模型设计\n[0054] 三维空间数据库的概念模型为地上地下三维空间实体集成表示的统一数据模型。\n它由两个层次组成,底层为空间数据表达层,也称为几何层,提供点、线、面、体等几何对象的表达;上层为兼顾空间关系、语义关系和拓扑关系并支持空间对象多细节层次表达的语义层,也称为核心层。核心层和几何层的主要组成部分,如几何表达对象、属性管理对象、拓扑管理对象、LOD对象等采用联合或聚合的设计思想统一封装为空间对象。三维空间中的各类对象,如地形模型、道路模型、管线模型、建筑物模型、地质体模型等,统一采用该空间对象进行表达,它是三维空间数据文件存储系统所要研究和管理的对象。\n[0055] 2、逻辑模型设计与实现\n[0056] 在三维空间数据管理方法的逻辑模型设计中,设计了文件系统空间数据库的数据文件、索引文件的存储格式,并明确给定这些文件之间的关系。逻辑模型的设计采用分类存储(将空间对象按其语义划分为不同的要素类,每个要素类进行单独存储),增量追加(对某一空间对象进行编辑时,在其所在要素类文件的末尾写入编辑后的对象,不进行整个要素类文件的重写),索引管理(对空间对象建立索引,以便于查找和更新),实时调度(在需要空间对象时才调度其空间数据)的方法。基于文件系统的三维空间数据存储管理方法的逻辑模型设计见附图1所示。\n[0057] 本发明设计的文件系统空间数据库将空间对象的存储级别划分为三个不同的粒度,最大的粒度是要素集,它是要素对象(Feature)的集合。该粒度在内存中对应于类FeatureSet,在外存中对应于数据文件*.FS;第二个粒度是要素对象,它实现空间对象的定义和描述,由空间数据和属性数据两部分聚合而成,在内存中它对应于Feature对象,在外存中对应于Feature对象序列化而成的数据段DataBlock;第三个粒度是空间数据和属性数据,它们是构建Feature对象的元素,在内存中它们分别对应于类Geometry(及其派生类)和类property。该三个不同存储粒度的关系见附图2所示。在创建文件系统数据库时,根据存储的数据语义类型不同划分不同的要素类,并将每个要素类进行单独存储,保证文件系统数据库的数据清晰并易于管理,并对每个要素类创建相应的索引文件。\n[0058] 由于文件系统是顺序存储设备,因此将要素对象写入*.FS文件时,本发明采用文件追加的方式进行,首先将Feature对象序列化成的数据块(DataBlock),然后将这些数据块追加到*.FS文件的尾部。在对空间对象进行编辑时,通常会产生三种结果,对象数据块减小、对象数据块增加、对象删除。由于文件系统的固有特性,在文件中原来的位置可能无法写入更新后的数据,而采用重写文件的方式系统的开销又太大,因此采用文件追加的方法更加合理。将更新后的数据块写入文件的末尾,将被更新对象的索引信息写入到更新索引结构中,该结构在内存中对应于vector,在外存中对应于文件*.UDX。该方案可在数据操作的逻辑层上屏蔽物理层的相关操作,可加快数据的读取及编辑速度。\n[0059] 增量追加方案见附图3所示。在对象编辑时,增量追加操作步骤如下:\n[0060] 1)根据更新对象的ID,获取其对应的IndexItem信息;\n[0061] 2)将该对象的包围盒及相关信息分别从空间索引和根据ID构建的索引中移除,同时更新这两种索引结构;\n[0062] 3)将IndexItem信息添加到更新索引结构中;\n[0063] 4)将更新后的对象序列化成的数据块写入*.FS文件,并新建一个IndexItem对象实现相关信息的记录;\n[0064] 5)将更新后的对象的IndexItem信息分别添加到空间索引和根据ID构建的索引中移除,同时更新这两种索引结构。\n[0065] 本发明设计的索引文件用来解决空间数据的快速与实时调度问题。在系统启动时,仅加载索引文件,然后根据用户的查找条件,在索引文件中查找满足用户需求的对象,最后启用多线程数据调度程序,实现空间数据的加载。索引文件是索引项(IndexItem)的集合,用来存储空间对象的索引信息,索引项的定义如表1所示:\n[0066] 表1:索引项(IndexItem)结构\n[0067] \n[0068] 索引文件由有效索引文件(*.FDX)和更新索引文件(*.UDX)组成。有效索引文件用来存储未更新的空间对象和更新后的空间对象的索引,在外存中用*.FDX文件进行保存,在内存中使map进行管理;更新索引文件用来存储更新前的或者被删除的空间对象的索引,在外存中使用*.UDX文件进行保存,在内存中使用vector进行管理。\n[0069] 本发明的索引管理采用如下方案:为空间对象的ID建立了一个基于平衡二叉树的索引结构,以支持根据空间对象的ID来检索索引项信息;为每个要素对象的包围盒建立了一个基于R树的空间索引结构,该索引的叶节点为空间对象的包围盒和空间对象的ID,其详情见附图4所示。\n[0070] *.FS文件实现了空间数据和属性数据的存储,因此,在文件系统中,对它的数据块进行描述的信息包括以下部分:空间对象的ID、空间对象的要素类ID、空间对象在*.FS文件中相对于文件起始位置的偏移量L1、空间对象的整体长度M1、几何数据的长度N1;属性数据的长度使用空间对象的整体长度减去几何数据的长度(M1-N1)便可求得,因此不用记录。*.FS文件的文件结构见附图4中(c)部分所示,由于这些数据的数量较大,系统启动时不将其读入内存。\n[0071] 空间对象描述性信息构成了索引项结构,它是一个定长结构,它的集合构成了空间索引文件,该文件在系统启动时读入内存,并且使用C++标准模板库中的map类对其管理,其主建为空间对象的ID,这样就为文件系统中空间对象的ID的建立了索引,如附图4中(b)所示。由于IndexItem中同样记录了空间对象的包围盒,因此在R树空间索引中可以将包围盒的值作为空间索引的主键,IndexItem的指针也聚合在空间索引的叶子节点中。\n在使用空间范围对空间索引进行检索时,可以将空间对象在文件系统中的存储位置检索出来,以快速的实现数据的加载,如附图4中(a)部分所示。\n[0072] 在实现空间对象的插入操作时,首先构建该对象的IndexItem信息,并写入到*.FDX文件中,同时将对象的空间数据、属性数据按段先后写入*.FS文件中,同时在空间索引树中增加一个节点,并更新空间索引树;另外,针对可视化快速调度数据的应用,由于索引项中记录空间对象几何数据的起始位置,因此可以只读取几何数据,通过降低读取的数据量实现数据的快速加载;针对某些不需要几何数据的分析应用,可以只读取属性数据,也可以加速数据读取。索引管理方案步骤如下:\n[0073] 1)在创建基于文件系统的数据库时,创建空的.FDX和.UDX文件及其他相关数据文件;\n[0074] 2)在系统启动时,打开.FDX和.UDX文件,把其内部的数据加载到分别由map和vector所创建的对象_vIndexMap和_uIndexVector中,并根据_vIndexMap中的内容创建空间索引_SpatialIndex,该索引可以是空间R树索引或其他空间索引;\n[0075] 3)在添加空间对象时,将空间对象序列化为DataBlock并追加到.FS文件的末尾,然后将该空间对象对应的IndexItem*添加到_vIndexMap中,并更新_SpatialIndex对象;\n[0076] 4)在读取空间对象时,首先根据用户输入的关键字检索_SpatialIndex对象,查找到满足需求的空间对象的ID集合,然后,在_vIndexMap中找到这些ID集合所对应的IndexItem*项,并对其按其所在的要素类分组,最后启动多线程调度程序,分别从不同的.FS文件中进行DataBlock的读取,并将其反序列化为空间对象。\n[0077] 对空间对象进行编辑或删除操作时,将导致*.FS文件数据段(DataBlock)长度的增加或减小。本系统采用增量追加,索引管理,实时调度的方式进行空间数据的编辑和调度操作,这样可以避免对整个数据文件(*.FS)的重写。其流程见附图5所示,按以下步骤进行:\n[0078] ①在创建基于文件系统的数据库时,创建空的*.FDX和*.UDX文件及其他相关数据文件;\n[0079] ②在系统启动时,打开*.FDX和*.UDX文件,把其内部的数据加载到分别由map 和 vector所 创 建 的 对 象_vIndexMap 和 _uIndexVector中,并根据_vIndexMap中的内容创建空间索引_SpatialIndex,该索引可以是空间R树索引或其它空间索引;\n[0080] ③在添加空间对象时,将空间对象序列化为DataBlock并追加到*.FS文件的末尾,然后将该空间对象对应的IndexItem*添加到_vIndexMap中,并更新_SpatialIndex对象;\n[0081] ④在读取空间对象时,首先根据用户输入的关键字检索_SpatialIndex对象,查找到满足需求的空间对象的ID集合,然后,在_vIndexMap中找到这些ID集合所对应的IndexItem*项,并对其按其所在的要素类分组,最后启动多线程调度程序,分别从不同的*.FS文件中进行DataBlock的读取,并将其反序列化为空间对象;\n[0082] ⑤在编辑空间对象时,将更新前空间对象的IndexItem*从_vIndexMap中转移到_uIndexVector中,将更新后的对象序列化为DataBlock并追加到*.FS文件的末尾,然后将更新后的空间对象对应的IndexItem*添加到_vIndexMap中,并更新_SpatialIndex对象;\n[0083] ⑥在删除空间对象时,将该对象的IndexItem*从_vIndexMap中转移到_uIndexVector中,然后更新_SpatialIndex对象;\n[0084] ⑦当频繁地对空间对象进行编辑、删除操作后,由于本方法采用增量追加的方式处理*.FS文件,这样会导致*.FS文件数据量的急剧膨胀,因此需要动态监测*.FS文件的长度以及_uIndexVector中对象的个数,当*.FS的长度接近文件系统所管理的极限(FAT文件格式为4G,NTFS文件格式为64G)或者_uIndexVector中对象的个数超过用户设定的数量时,启动文件压缩功能。文件压缩功能将删除_uIndexVector中索引项所指向的数据段,重建*.FS文件和_SpatialIndex对象,同时清空_uIndexVector和*.UDX文件中的内容;\n[0085] 按照以上步骤,本发明设计的三维空间数据存储逻辑模型可充分满足三维空间数据的管理和编辑功能。\n[0086] 3、物理模型设计与实现\n[0087] 根据三维空间数据库的数据内容与数据模型的设计基础,以及文件系统的目的主要是面向单用户环境的各类专题应用,该数据存储管理方法建立了面向对象-关系数据库的数据导入、导出接口,在文件系统中完成对三维空间数据的修改、编辑操作,编辑后的结果通过文件系统所提供的更新接口提交到数据库系统进行数据存储。文件系统的实现采用空间分区、属性分层的方法,将整个空间范围建立为多个可管理的分块,并在每一个分块区内部建立基于对象类型的分层组织。对每一类对象类型建立相应的索引组织与索引格式,并针对空间分析应用、专题业务应用建立文件系统的接口。物理模型的设计如图6所示。\n[0088] 物理模型中包括空间分区全局索引文件、属性文件、元数据文件三大类,空间分区索引文件向下分为若干子空间分层局部索引文件,并根据数据类型分为格网索引、真三维空间索引和线状索引,具体包括DEM索引文件、DOM索引文件、建筑模型索引文件、地质体模型索引文件、道路网络模型文件等。通过索引文件创建金字塔和多层次多细节(LOD)文件,查找用户设计的所有几何文件和纹理文件。\n[0089] 三维空间数据存储管理方法在物理模型上满足上文所涉及到的各类空间对象的存储,构建了文件系统三维空间数据库。该空间数据库拥有以下数据文件:工程文件、要素类文件、要素信息文件、有效索引文件、更新索引文件、LOD数据文件、LOD索引文件、更新LOD索引文件、材质信息文件、项目模型文件夹、共享模型数据文件、共享模型索引文件、系统纹理文件、纹理索引文件、纹理文件、系统拓扑文件夹、拓扑信息文件,这些文件的定义及作用见表2所示:\n[0090] 表2:三维空间数据文件类型列表\n[0091] \n[0092] 基于文件系统的三维空间数据存储管理方法的具体实现包含数据模型层的实现和功能应用层的实现,构成了基于文件系统的空间数据引擎。数据模型层实现几何数据、属性数据、拓扑数据、影像数据的表达和存储管理,为功能实现层提供数据存储基础,该层由属性数据管理模块、拓扑数据管理模块、几何数据表达模块、影像数据表达模块、空间对象管理模块组成;功能实现层实现空间数据库的创建,三维空间数据的调度及访问功能,该模块由物理存取模块、缓存管理模块、数据调度模块、访问接口模块组成。基于文件系统的空间数据引擎模块设计见附图7所示。\n[0093] 以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。
法律信息
- 2012-10-10
- 2011-02-02
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201010269095.9
申请日: 2010.09.01
- 2010-12-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-06-02
|
2009-11-24
| | |
2
| |
2005-09-07
|
2005-03-02
| | |
3
| |
2007-01-17
|
2006-06-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |