CN115145930A - 基于树状层次索引的gis矢量数据层次编码方法及装置 - Google Patents
基于树状层次索引的gis矢量数据层次编码方法及装置 Download PDFInfo
- Publication number
- CN115145930A CN115145930A CN202211068065.0A CN202211068065A CN115145930A CN 115145930 A CN115145930 A CN 115145930A CN 202211068065 A CN202211068065 A CN 202211068065A CN 115145930 A CN115145930 A CN 115145930A
- Authority
- CN
- China
- Prior art keywords
- node
- index
- data
- hierarchical
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000003860 storage Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 11
- 239000013589 supplement Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 230000008520 organization Effects 0.000 description 8
- 238000012800 visualization Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000013079 data visualisation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000007794 visualization technique Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Abstract
本发明公开了一种基于树状层次索引的GIS矢量数据层次编码方法及装置,方法包括:读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,生成基础树状层次索引;深度优先遍历基础索引,根据矢量数据的空间邻近关系及编码依据,生成各节点及节点所属数据的层次编码,其中以节点的层级数及其兄弟节点的个数作为节点编码依据,并且子节点继承与增补其父节点的层次编码,生成的节点层次编码沿用于节点下各数据的编码,根据节点下已经完成编码的数据个数,生成数据的层次编码;将生成的层次编码存储至数据库,以供查询调度。本发明能够支持点、线、面矢量数据高性能的查询和调度,且层次编码拓展性好,适用于各类树状层次索引结构。
Description
技术领域
本发明涉及地理信息系统(GIS)、计算机辅助设计(CAD)、计算机地图制图(CAC),导航地图、手机地图、电子地图领域,尤其涉及一种基于树状层次索引的GIS矢量数据层次编码方法及装置。
背景技术
地图可视化一直是现代地图学的核心,地图可视化方法的性能和质量对高交互的制图和分析具有重要意义。大数据时代的到来,使得当前可视化方法难以应对矢量数据的海量性和复杂性带来的地图高交互性和数据查询与交互的挑战,矢量数据查询与调度所涉及的空间索引技术,以及索引的高效性和可拓展性等方面的研究较为缺乏。
当前空间索引查询的常见方法包括粗略结果查询方法、空间索引嵌套混合方法、基于层级关系划分的聚类算法等。粗略结果查询方法,通过提供粗略结果进而提升空间索引查询效率,但查询结果存在数据丢失的问题,导致可视化结果存在潜在的空间规律无法识别,同时此类结构多为内存结构,未考虑大规模矢量数据带来的计算机内存负载高和数据调度时间长的问题。空间索引嵌套混合方法,例如改进八叉树结合KD树、全局四叉树结合局部R树等,能够发挥各类空间索引的查询优越性,加快数据查询与调度过程,进而提高数据可视化性能。但忽视了当可视化尺度较大时,大规模的数据调度时间成本极高,以及大量高精度数据可视化表达渲染时间长的问题。基于层级关系划分的聚类算法,能够提高数据调度效率,但此类算法需要内存区建立与维护数据的映射关系。随着数据体量的增加,内存不断增加,需要大量的计算资源,可视化效率不断变低。一套有效的编码方式能够避免不必要的查询从而减少计算量,提升查询效率。而目前尚未形成一个高效率、高质量、可拓展的基于树状层次索引结构对GIS矢量数据进行层次编码的方法。
发明内容
发明目的:本发明的目的在于解决传统空间索引难以对小比例尺地图下的海量数据进行高效查询调度的问题,提供一种基于树状层次索引结构的层次编码方法,实现矢量数据高性能查询和调度。
技术方案:根据本发明的第一方面,一种基于树状层次索引的GIS矢量数据层次编码方法,包括以下步骤:
(1)读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引;
(2)深度优先遍历基础树状层次索引,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构;其中所述预定的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据;
(3)将完整的层次编码索引结构存储至数据库,以供对矢量数据进行查询调度。
进一步地,所述步骤(1)中,根据要素总量确定索引层数按照下式计算:
其中n为空间索引层数,f为要素总量。
进一步地,所述步骤(2)中,生成索引各节点的层次编码具体包括如下步骤:
2.1)从根节点出发,向下深度优先遍历各节点,对每个节点执行2.2)、2.3)和2.4)的操作;
2.2)获取当前访问节点i的层数level,并根据level找到其父节点parent;
2.3)以parent当前拥有的孩子节点个数,作为第level层的id数量对其进行更新,再将节点i作为parent新的一个孩子节点,录入并更新parent的孩子节点;
2.4)根据节点i的level数和该将level层的id数量进行编码。
进一步地,所述步骤2.4)中,编码具体包括:节点i的编码拥有level个字母,即对于每一层级,编码值中有一个与该层级对应的字母,而每一个字母在其所属层级上,会根据该level层的id数量,从字母a开始按字母表顺序向后推移id[level]个字母,得到该层对应的字母,最终从最高层,按自顶向下的顺序排列每一层的字母,得到节点i的编码值。
进一步地,所述步骤(2)中,节点i的层次编码生成后,接着生成节点i下各数据的编码值,生成数据的编码值具体包括以下步骤:
2.a)数据编码值的前level个字母沿用数据所属节点的编码值;
2.b)第level+1个字母根据节点i下已经完成编码的数据个数nLeaf,从字母a开始按字母表顺序向后推移nLeaf个字母,得到第level+1个字母,与前level个字母组成该数据的编码值,且nLeaf自增1。
根据本发明的第二方面,一种基于树状层次索引的GIS矢量数据层次编码装置,包括:
基础索引建立模块,用于读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引;
层次编码模块,用于对基础树状层次索引进行深度优先遍历,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构;其中所述预定的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据;
存储模块,用于将完整的层次编码索引结构存储至数据库,以供查询调度。
根据本发明的第三方面,提供一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如本发明第一方面所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
根据本发明的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
有益效果:本发明针对索引高度不平衡及拓展性不足的问题,建立基础的树状层次索引,并提供基于树状层次索引结构的层次编码方法,解决基于数据库的外部空间索引查询方法数据查询与调度效率低的问题。本发明能够支持点、线、面矢量数据进行高性能的查询和调度,满足地图可视化高交互的快速响应需求,同时基于树状层次索引结构的层次编码保证了良好的拓展性,能够应用于各类树状层次索引结构上。相比于粗略结果查询方法,本方法显著减少了大规模矢量数据所带来的计算机内存负载与数据调度时间;相比于空间索引嵌套混合方法,本方法适用于不同的可视化尺度,降低了大规模数据调度与高精度数据渲染的时间成本;相比于基于层级关系划分的聚类算法,本方法能够在数据体量增加、内存和计算资源被大量占用的情况下,提升可视化效率。
附图说明
图1是传统数据组织与索引结构示意图,其中(a)为树索引结构图,(b)为数据库内要素组织结构图;
图2是本发明的基于树状层次索引结构的层次编码方法流程图;
图3是层次编码示意图;
图4是数据组织结构与逻辑结果示意图,其中(a)为要素组织结构,(b)为数据与节点逻辑存储结构图;
图5是索引构建结果示意图,其中(a)为点区域四叉树数据1索引结构图,(b)为点区域四叉树数据2索引结构图,(c)为本发明索引构建结果图;
图6是基于本发明的层次编码的空间索引查询方法与R树查询方法在居民地面数据查询中平均节点访问次数对比图;
图7是基于本发明的层次编码的空间索引查询方法与R树查询方法在居民地面数据查询中查询调度效率对比图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
索引结构是空间索引的重要组成部分,决定了空间索引的数据查询与操作的能力。树索引结构是空间索引最常见的索引结构,无论四叉树、R树和B+树索引其本质都是树索引结构。如图1,左图(a)为树索引结构图,树由一系列节点组成,节点之间存在包含关系,并以节点的度,即以节点孩子的个数,将节点分为叶子节点(不存在孩子节点)与分支节点。为降低空间索引深度,维持空间索引的平衡性,分支节点不存储矢量要素及其信息,而是在叶子节点存储要素ID等信息。要素指一个实际的地物,例如面要素就是面状的地物。右图(b)为数据库中,要素以ID对数据进行有序组织结构示意图,GEOM字段为要素的几何数据,并以ID与索引节点关联。
然而,这种传统的做法,以要素ID为序的数据组织方式不能反映数据的空间关系。如图1中(a)所示,要素3,6位于索引节点3,具有邻近关系,要素2位于索引节点7,但从存储结构上来看,要素2,3邻近存储,要素3,6存储上不具有连续性。同时,基于索引查询得到的要素ID具有不连续性,而基于此要素ID向数据库中查询数据,将导致对数据库表进行多次扫描,进而降低数据查询调度的性能。同时,以要素ID为序的数据组织方式,忽略了树索引结构的层次性,难以发挥数据库内置索引进行空间范围查询。因此,需要充分解析索引结构,设计符合索引结构特征的编码方式,并与数据进行关联以优化数据库内部排序与数据查询调度。
本发明对树状索引结构进行解析,包括树的层数与节点数量情况、上下级与左右级节点之间存在的重叠、包含、嵌套等空间关系、树状结构是否平衡等方面,得到如下结构特征:
1)从上下级关系出发,因为树状索引在构建树和新增节点时,是从最大范围(根节点)不断向下细分与查询新节点的插入位置,因此父节点的空间范围覆盖其各个子节点的空间范围;
2)从左右级关系出发,根据树索引的空间划分规则,分析节点的重叠情况可知,R树允许兄弟节点之间的范围存在重叠,且重叠程度高,而二叉树和四叉树则不允许;
3)对于树状结构的平衡性,根据叶子节点的分布情况可知,B树、B+树、R树和二叉树是平衡树,而四叉树的平衡性不确定。
基于以上树状索引的结构特征,本发明将对索引的节点及节点下各数据进行层次编码。
本发明将重载索引节点和节点数据访问函数,深度优先遍历索引,访问节点及节点下各数据并同步生成对应的层次编码,从而利用层次编码索引减少节点访问次数和数据调度时间,实现数据的快速调度。
参照图2,本发明的矢量数据层次编码方法包括以下步骤:
步骤1,读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引。
本发明根据地图图层的要素总量计算索引层数,设置相应参数,可以选取任意一种树状层次索引进行基础索引建立,并将要素ID和范围作为节点数据插入。由于四叉树平衡性不确定,所以本发明实施例中不使用四叉树,使用R树作为基础索引。
在一个实施例中,以OSM中的三调居民地数据(405479条数据)作为数据集。读入面的矢量数据文件,获取地图图层并计算建立树状索引的必需参数,以R树作为外部空间索引,以数据库内部索引(B+树)对要素ID和层次编码建立索引,再将数据存储至SQLite数据库(版本3.6.18)。
这里对涉及的几个索引概念做如下说明:数据库内部索引即数据库内置自带的索引,生成的层次编码在数据库中作为组件进行存储时,将与数据库的内部索引机制进行关联;而外部空间索引的外部就是相对于数据库内部而言的。基础空间索引的说法与前面两者的概念无关,层次编码是基于基础空间索引而建立的,本发明选用R树作为基础空间索引,根据的R树的基本结构,在深度优先遍历中生成层次编码。
本实施例中采用的硬件环境如下:系统:Windows 10 x64;处理器:2.8GHz IntelCore(TM)i5-8400;内存16 GB;显卡Nvidia GeForce GTX 1060。软件环境:开发工具集:VS2015,开发语言:C++。
本发明的外部空间索引构建流程如下:
1.1)由矢量数据的文件路径path,获取其OGR图层OGRLayer及其要素总量f;
1.3)索引层数n作为索引容量和叶子节点容量,填充因子设为0.7,树类型设为R树,维度设为2维,构建基础空间索引;填充因子的值是从0到100的百分比数值,指定在创建索引后对数据页的填充比例,以便在索引的每个叶级页上留出额外的间隙,并且保留一定百分比的空间,以供将来表的数据存储容量进行扩充和减少页拆分的可能性;维度为2表明构建的是二维索引;
1.4)从OGRLayer中逐个获取要素OGRFeature,得到要素的ID和几何体geom;若geom存在,则由geom获取要素的最小包围盒e;
1.5)以e的最大和最小xy坐标,构造空间索引的范围r,将要素ID与范围r作为节点数据插入R树中;
1.6)遍历所有要素,逐个要素执行1.4)和1.5)步骤。
步骤2,深度优先遍历基础树状层次索引,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构。
本发明根据树状索引的层次性和数据的空间邻近关系,对索引节点和节点下各数据进行层次编码。利用树状索引内置的范围相交查询,重载其中的节点和节点数据访问函数,在深度优先访问节点和节点下各数据的过程中,根据相应的编码依据,生成节点与节点数据的编码值。
本发明基于对树状索引结构的解析,确定节点及节点所述数据的层次编码的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据。
本发明层次编码的具体生成流程如下:
2.1)从根节点出发,向下深度优先遍历各节点,对每个节点执行2.2)、2.3)和2.4)的操作;
2.2)获取当前访问节点i的层数level,并根据level找到其父节点parent;
2.3)以parent当前拥有的孩子节点个数,作为第level层的id数量对其进行更新。再将节点i作为parent新的一个孩子节点,录入并更新parent的孩子节点;例如,对于节点2,层数是2,父节点是1,节点1当前如果是有1个孩子,那就把数值1作为第二层的id值,输入2.4)中作为从字母a开始的向后推移量;
2.4)根据节点i的level数和该将level层的id数量进行编码。节点i的编码拥有level个字母,即对于每一层级,编码值中就会有一个与该层级对应的字母。而每一个字母在其所属层级上,会根据该level层的id数量,从字母a开始按字母表顺序向后推移id[level]个字母,得到该层对应的字母。最终从最高层,按自顶向下的顺序排列每一层的字母,得到节点i的编码值;
2.5)节点i的层次编码生成后,接着生成节点i下各数据的编码值,数据编码也即前述的要素编码,数据编码值的前level个字母沿用数据所属节点的编码值。第level+1个字母根据节点i下已经完成编码的数据个数nLeaf(初始为0),从字母a开始按字母表顺序向后推移nLeaf个字母,得到第level+1个字母,与前level个字母组成该数据的编码值,且nLeaf自增1;
2.6)对节点i下每个数据执行2.5)的操作,均执行完成后,再按深度优先遍历的顺序访问下一节点,执行2.2)、2.3)和2.4)的操作,直到所有节点及节点下所有数据的编码值全部生成完毕。
编码结果如图3所示。本发明的层次编码具有以下特征:①父节点的编码小于孩子节点的编码;②同一层两节点i、j,若i的节点编码小于j的节点编码,则节点i的所有孩子节点编码同样小于j的节点编码。例如,节点1为根节点,编码最小,节点2比节点6编码小,节点2的孩子节点编码同样比节点6编码小。
步骤3,将完整的层次编码索引结构存储至数据库,以供对矢量数据进行查询调度。
图4为以编码为序的数据存储及数据与节点逻辑存储示意图,如图4中(a)所示,为要素在数据库中的组织结构示意图,CODE字段为本发明的编码。从如图4中(b)可以看出,以层次编码为序的数据存储顺序与空间分布相关,即具有共同祖先节点的数据在线性空间中被存储到一起,例如要素3与6在存储上临近。同时,要素存储顺序符合基于索引深度的查询和要素访问顺序。基于编码结构能够实现对数据的范围查询,如当数据查询窗口包含索引节点2的地理范围时,只需查询编码C∈(aa,ab),即利用逻辑符号可快速查询、调度数据。
与传统四叉树的构建算法相比,本发明提出的构建算法,针对的是多要素集合,能够实现对多要素集进行索引构建并对多种数据进行统一管理,索引节点存储层次编码和要素统计信息。如图5中(a)和(b)所示,在传统四叉树的基础上,本发明的索引结构针对多数据集合进行了改进构建。如图5中(c)所示,对于多数据集合,只需节点处添加额外统计信息用于存储其他数据。统计信息存储了节点所包含的顶点数量,例如图5的(c)中,根节点的1:6,6是统计信息,表明该节点所包含的顶点数量为6。再往下一层,根节点的四个子节点,从左到右各包含2、3、1、1个顶点。本发明的数据组织方式可拓展至检索多数据集合。同时,本发明结合数据地理范围和可视化信息,能自适应计算索引最大层级,避免树索引深度过高而带来索引检索效率低的问题。
建立基础空间索引后,调用索引内置的范围相交查询函数,每访问一个节点就通过自定义重载的访问函数,根据数据的空间邻近关系,生成并存储节点及节点下各数据的层次编码值。再以数据库内部索引(B+树)对要素ID和层次编码建立索引。最终,通过层次编码索引查询方法,根据节点与查询窗口的包含关系、节点的像素比例尺与窗口的像素比例尺的大小关系、以及节点的累积简化状态,进行相应的范围查询和离散查询,得到要素编码和索引节点编码构成的查询结果集。
由于小窗口尺度查询数据量小,查询时间极短,计算机系统波动对查询统计结果具有较大影响。因此,本发明避免过小的选取范围,分别以10%,30%,50%,70%的窗口选取几率,进行400个面要素的矢量数据的随机窗口查询,记录400次查询的索引节点平均访问次数,以及从查询到完成数据调度的平均时间。
如图6可以看出,基于本发明的层次编码进行空间索引查询,能够显著减少节点访问次数。本发明通过考虑空间包含关系,能够降低空间索引节点的遍历次数,在大比例尺下,即可视化范围能够包含更多节点数据,只需少量遍历即可获取查询结果,节点遍历数量远小于传统R树遍历方式。当可视化范围与索引节点不包含时,此时查询效率最差,但此时节点的遍历与原始树遍历效率相同。同时,结合本发明提出的层次编码,能够发挥数据库数值索引的查询性能,实现对空间数据的范围查询,减少数据库查询数据时的扫描数据时间,有效提高外部索引数据查询方法的数据查询与调度效率。
而基于R树的基础索引结构,随查询窗口的增加,所需的节点访问次数呈线性快速增长。根本原因在于传统R树的遍历方式,需要遍历至索引的叶子节点才能获取要素信息,因此随着查询窗口变大、查询数据量增加,节点访问次数也快速增长。从图7的查询效率对比来看,在小窗口查询时,由于查询的数据量少,本发明的查询效率和传统查询效率相当,但随着窗口不断变大,R树方式的数据查询调度成本快速增长,其效率远低于本发明方法的数据查询调度。
通过对比分析测评结果,本发明提出基于层次编码的索引结构以及相应的空间查询方法能够提高外部索引查询方法的查询效率,实现数据快速调度,有利于加速可视化过程中的数据获取。
基于和方法实施例相同的发明构思,本发明还提供一种基于树状层次索引的GIS矢量数据层次编码装置,包括:
基础索引建立模块,用于读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引;
层次编码模块,用于对基础树状层次索引进行深度优先遍历,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构;其中所述预定的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据;
存储模块,用于将完整的层次编码索引结构存储至数据库,以供查询调度。
根据本发明的实施方式,基础索引建立模块根据要素总量确定索引层数按照下式计算:
其中n为空间索引层数,f为要素总量。
根据本发明的实施方式,基础索引建立模块生成基础树状层次索引的方法包括:从矢量数据OGR图层OGRLayer中逐个获取要素OGRFeature,得到要素的ID和几何体geom;若geom存在,则由geom获取要素的最小包围盒e;以e的最大和最小xy坐标,构造空间索引的范围r,将要素ID与范围r作为节点数据插入R树中。
根据本发明的实施方式,层次编码模块包括遍历控制单元、父节点确定单元、层次更新单元、层次编码单元,用于生成索引各节点的层次编码,具体地,
遍历控制单元,从根节点出发,向下深度优先遍历各节点,对每个节点执行父节点确定单元、层次更新单元和层次编码单元的操作;
父节点确定单元,获取当前访问节点i的层数level,并根据level找到其父节点parent;
层次更新单元,以parent当前拥有的孩子节点个数,作为第level层的id数量对其进行更新,再将节点i作为parent新的一个孩子节点,录入并更新parent的孩子节点;
层次编码单元,根据节点i的level数和该将level层的id数量进行编码。
其中,编码具体包括:节点i的编码拥有level个字母,即对于每一层级,编码值中有一个与该层级对应的字母,而每一个字母在其所属层级上,会根据该level层的id数量,从字母a开始按字母表顺序向后推移id[level]个字母,得到该层对应的字母,最终从最高层,按自顶向下的顺序排列每一层的字母,得到节点i的编码值。
根据本发明的实施方式,层次编码模块还包括数据编码单元,用于在节点i的层次编码生成后,接着生成节点i下各数据的编码值,具体地,数据编码值的前level个字母沿用数据所属节点的编码值;第level+1个字母根据节点i下已经完成编码的数据个数nLeaf,从字母a开始按字母表顺序向后推移nLeaf个字母,得到第level+1个字母,与前level个字母组成该数据的编码值,且nLeaf自增1。
根据本发明的实施方式,所述装置还包括查询模块,以数据库内部索引对要素ID和层次编码建立索引,通过层次编码索引查询方法,根据节点与查询窗口的包含关系、节点的像素比例尺与窗口的像素比例尺的大小关系、以及节点的累积简化状态,进行相应的范围查询和离散查询,得到要素编码和索引节点编码构成的查询结果集。
本发明还提供一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如上所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程以及流程图中的流程的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程指定的功能的步骤。
Claims (10)
1.一种基于树状层次索引的GIS矢量数据层次编码方法,其特征在于,包括如下步骤:
(1)读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引;
(2)深度优先遍历基础树状层次索引,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构;其中所述预定的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据;
(3)将完整的层次编码索引结构存储至数据库,以供对矢量数据进行查询调度。
3.根据权利要求1所述的方法,其特征在于,所述步骤(1)中,生成基础树状层次索引包括:从矢量数据OGR图层OGRLayer中逐个获取要素OGRFeature,得到要素的ID和几何体geom;若geom存在,则由geom获取要素的最小包围盒e;以e的最大和最小xy坐标,构造空间索引的范围r,将要素ID与范围r作为节点数据插入R树中。
4.根据权利要求1所述的方法,其特征在于,所述步骤(2)中,生成索引各节点的层次编码具体包括如下步骤:
2.1)从根节点出发,向下深度优先遍历各节点,对每个节点执行2.2)、2.3)和2.4)的操作;
2.2)获取当前访问节点i的层数level,并根据level找到其父节点parent;
2.3)以parent当前拥有的孩子节点个数,作为第level层的id数量对其进行更新,再将节点i作为parent新的一个孩子节点,录入并更新parent的孩子节点;
2.4)根据节点i的level数和该将level层的id数量进行编码。
5.根据权利要求4所述的方法,其特征在于,所述步骤2.4)中,编码具体包括:节点i的编码拥有level个字母,即对于每一层级,编码值中有一个与该层级对应的字母,而每一个字母在其所属层级上,会根据该level层的id数量,从字母a开始按字母表顺序向后推移id[level]个字母,得到该层对应的字母,最终从最高层,按自顶向下的顺序排列每一层的字母,得到节点i的编码值。
6.根据权利要求4所述的方法,其特征在于,所述步骤(2)中,节点i的层次编码生成后,接着生成节点i下各数据的编码值,生成数据的编码值具体包括以下步骤:
2.a)数据编码值的前level个字母沿用数据所属节点的编码值;
2.b)第level+1个字母根据节点i下已经完成编码的数据个数nLeaf,从字母a开始按字母表顺序向后推移nLeaf个字母,得到第level+1个字母,与前level个字母组成该数据的编码值,且nLeaf自增1。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:以数据库内部索引对要素ID和层次编码建立索引,通过层次编码索引查询方法,根据节点与查询窗口的包含关系、节点的像素比例尺与窗口的像素比例尺的大小关系、以及节点的累积简化状态,进行相应的范围查询和离散查询,得到要素编码和索引节点编码构成的查询结果集。
8.一种基于树状层次索引的GIS矢量数据层次编码装置,其特征在于,包括:
基础索引建立模块,用于读取矢量数据文件,根据要素总量确定索引层数作为索引容量与叶子容量,并设置填充因子和维度,生成基础树状层次索引;
层次编码模块,用于对基础树状层次索引进行深度优先遍历,根据矢量数据的空间邻近关系及预定的编码依据,生成索引各节点及节点所属数据的层次编码,得到完整的层次编码索引结构;其中所述预定的编码依据包括:对节点进行编码时,获取当前访问节点的层数及其兄弟节点的个数,作为节点层次编码的依据,并将当前节点录入为其父节点的新孩子节点,更新父节点的孩子节点;对节点下各数据进行编码时,以数据的ID号、数据所属节点的层级数和该节点下已经完成编码的数据的个数,作为数据层次编码的依据;
存储模块,用于将完整的层次编码索引结构存储至数据库,以供查询调度。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如权利要求1-7中任一项所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的基于树状层次索引的GIS矢量数据层次编码方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068065.0A CN115145930A (zh) | 2022-09-02 | 2022-09-02 | 基于树状层次索引的gis矢量数据层次编码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068065.0A CN115145930A (zh) | 2022-09-02 | 2022-09-02 | 基于树状层次索引的gis矢量数据层次编码方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115145930A true CN115145930A (zh) | 2022-10-04 |
Family
ID=83416419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211068065.0A Pending CN115145930A (zh) | 2022-09-02 | 2022-09-02 | 基于树状层次索引的gis矢量数据层次编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115145930A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116452682A (zh) * | 2023-05-09 | 2023-07-18 | 北京数慧时空信息技术有限公司 | 基于树构造的免切片实时发布系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529633A (zh) * | 2022-04-22 | 2022-05-24 | 南京师范大学 | 一种支持gis线对象和面对象连续lod绘制的方法 |
-
2022
- 2022-09-02 CN CN202211068065.0A patent/CN115145930A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529633A (zh) * | 2022-04-22 | 2022-05-24 | 南京师范大学 | 一种支持gis线对象和面对象连续lod绘制的方法 |
Non-Patent Citations (1)
Title |
---|
景志敏: "基于GPU的矢量地图连续LOD渲染方法研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116452682A (zh) * | 2023-05-09 | 2023-07-18 | 北京数慧时空信息技术有限公司 | 基于树构造的免切片实时发布系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10685067B2 (en) | Data visualization system | |
Procopiuc et al. | Bkd-tree: A dynamic scalable kd-tree | |
Solihin et al. | Multiple representation approach to achieve high-performance spatial queries of 3D BIM data using a relational database | |
CN113268557B (zh) | 一种适应显示导向型可视化分析的快速的空间索引方法 | |
US20230281182A1 (en) | R-tree index merging and updating method and apparatus based on hilbert curve, and medium | |
Silva-Coira et al. | Efficient processing of raster and vector data | |
CN111221813B (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
Roumelis et al. | Efficient query processing on large spatial databases: a performance study | |
CN101692230A (zh) | 顾及多细节层次的三维r树空间索引方法 | |
CN114048204A (zh) | 基于数据库倒排索引的北斗网格空间索引方法和装置 | |
CN115145930A (zh) | 基于树状层次索引的gis矢量数据层次编码方法及装置 | |
Wang et al. | Space filling curve based point clouds index | |
Wang et al. | Geological tetrahedral model-oriented hybrid spatial indexing structure based on Octree and 3D R*-tree | |
Roumelis et al. | Bulk-loading and bulk-insertion algorithms for xBR^+-trees xBR+-trees in Solid State Drives | |
CN115346005B (zh) | 基于嵌套包围盒概念用于物面网格的数据结构构建方法 | |
Nanjappan | R*-Tree index in Cassandra for geospatial processing | |
CN116090395A (zh) | 数据处理方法、数据结构的生成方法、查询方法 | |
de Berg et al. | Star-quadtrees and guard-quadtrees: I/O-efficient indexes for fat triangulations and low-density planar subdivisions | |
CN114741388B (zh) | 一种集成电路版图数据索引的新型构建方法 | |
Ogayar-Anguita et al. | Nested spatial data structures for optimal indexing of LiDAR data | |
Liu et al. | Research on hybrid index based on 3D multi-level adaptive grid and R+ Tree | |
CN115774749A (zh) | 一种AutoCAD平台与通用的GIS平台数据无损转换方法 | |
CN113918537A (zh) | 一种基于xml的电网多维数据建模方法 | |
Khamayseh et al. | Use of the spatial kD-tree in computational physics applications | |
Kontakis et al. | Spatial indexing of complex virtual reality scenes in the web |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221004 |