空间数据索引方法及系统的制作方法

文档序号:6584501阅读:170来源:国知局
专利名称:空间数据索引方法及系统的制作方法
技术领域
本发明涉及地理信息系统技术领域,尤其涉及一种空间数据索引方法及系统。
背景技术
绝大多数用户在地理信息系统中查询空间数据时往往釆用两种方式。 一种是通过空间数据的空间信息査找属性信息。例如在地图上划定一个范围,查找该范围含有的地物都有哪些。另一种是通过空间数据的属性信息查找空间信息。例如在搜索框中输入"中国农业大学",查找中国农业大学的具体空间位置。大量的实际应用表明,后一种查询方式是用户采用的最普遍的查询方式,因此,如果针对空间数据的属性数据建立索引,就可以大大加快用户的查询速度,具有很大的实用意义。在目前现有的空间数据索引方法中,基于二叉树的索
引方法、基于四叉树的索引方法、基于B树的索引方法、基于哈希的格子文件和基于空间对象的填充曲线等都是适用于第一种查询方式的索引方法。仅有树型多键索引方法适用于第二种查询方式,但在实际应用中存在一定的问题由于树型多键索引往往根据数据的多个属性项而建,这就需要用户在查询数据时要给出所查数据的大部分属性,至少在树型多键索引中所包含的属性项内容都要给出,这样才能保证对索引树的查询是沿着树的一条路径进行的,否则就需要遍历整棵树来找到目标数据,而这个要求对用户来说几乎是不可能的,因此,亟待提出更适用于第二种查询方式的索引方法。

发明内容
本发明的目的是提供一种空间数据索引方法及系统,可提高用户通过空间数据的属性数据查询信息的速度,以克服现有技术的不足。为实现上述目的,本发明釆用如下技术方案。本发明提供了一种空间数据索引方法,该方法包括
51. 获取索引关键字;
52. 建立所述索引关键字的倒排文件;
53. 计算所述索引关键字的倒排表记录ID在散列表中的位置并建立散列表;
54. 根据所述索引关键字计算散列编码,并在所述散列表中获取所述索引关键字的倒排表记录ID号;
55. 根据所述倒排表记录ID号获取倒排文件中与所述索引关键字有关的所有地物ID号及图层ID号;
56. 获取所述地物ID号及图层ID号在图形数据中的具体坐标值并显示。
其中,所述倒排文件由词表及记录文件构成,所述词表以空间数据中属性数据表的一预设属性项的所有属性值作为关键字记录,所述记录文件对应记录空间数据中包含所述属性值的所有地物ID号及相应的图层ID号。
其中,所述倒排表由所述倒排表记录ID号、所述词表中的关键字、与所述关键字对应的所有地物ID号及相应的图层ID号。其中,所述散列表针对所述词表建立,其建立包括步骤S3.1计算所述词表中每一个关键字的散列编码;S3.2根据散列函数,将每一个所述散列编码分别映射到散列表的相应位置,并将所述散列编码对应的关键字所对应的倒排表记录ID号存入所述映射的位置;S3.3处理冲突。
其中,按照如下多项式散列公式计算所述散列编码
Xo 一1 + X一"2 H-----h :^一2 + X卜!
"为不等于1的非零常数,(x。,;…,xw)对应所述属性值字符串
6中的每一位字符的Unicode统一码值,A为所述字符串中字符的个数。其中,"为100以内的素数。
其中,所述步骤S3.2中映射釆用的方法为除法散列法,所述散列函数为
《为所述散列编码,7V是存储散列表的桶数组的容量,初始时,TV取ll,散列表的装填因子LoadFactor取缺省值0.75,当散列表中存储的所有表项总数C满足C/iV >丄o^F""w时,令7V^2xiV + l,对散列表进行重组。
其中,所述步骤S3.3中解决冲突的方法为链地址法,即所述桶数组的每一个单元都存储一个链表,所述链表中的每一个数据节点记录所述倒排表记录ID号和发生冲突时的关键字的内容。
本发明还提供了 一种空间数据索引系统,该系统包括输入模块,用于获取索引关键字;倒排文件生成模块,用于建立所述索引关键字的倒排文件;散列表生成模块,用于计算所述索引关键字的倒排表记录ID在散列表中的位置并建立散列表;倒排表记录ID号获取模块,用于根据所述索引关键字计算散列编码,并在所述散列表中获取所述索引关键字的倒排表记录ID号;空间信息获取模块,用于根据所述倒排表记录ID号获取倒排文件中与所述索引关键字有关的所有地物ID号及图层ID号;显示模块,用于获取所述地物ID号及图层ID号在图形数据中的具体坐标值并显示。
本发明的空间数据索引方法及系统借鉴多键索引的层次思想,从用户的角度出发,使用倒排文件索引和散列表索引相结合的方式索引空间数据,可提高用户通过空间数据的属性数据查询信息的速度。


图l为依照本发明一种实施方式的空间数据索引方法流程图;图2为依照本发明 一种实施方式的空间数据索引方法中倒排文件的结构图3为依照本发明一种实施方式的空间数据索引方法中倒排文件
的倒排表结构图4为依照本发明 一种实施方式的空间数据索引方法中倒排文件
的生成过程示意图5为依照本发明一种实施方式的空间数据索引方法中散列表的建立过程示意图6为依照本发明 一种实施方式的空间数据索引系统框图7为依照实施例的空间数据索引过程示意图。
具体实施例方式
本发明提出的空间数据索引方法及系统,结合附图和实施例说明如下。
如图1所示,依照本发明一种实施方式的空间数据索引方法包括步骤
51. 获取用户输入需查询内容的索引关键字;
52. 建立索引关键字的倒排文件;
53. 计算该索引关键字的倒排表记录ID在散列表中的位置并建立散歹'J表;
54. 根据索引关键字计算散列编码,并在散列表中获取所述索引获取该索引关键字的倒排表记录ID号;
55. 根据该倒排表记录ID号获取倒排文件中与该索引关键字有关的所有地物ID号及图层ID号;
56. 获取所述地物ID号及图层ID号在图形数据中的具体坐标值,并将其显示在索引结果界面上。
在本发明的方法中,散列表索引是第一层索引,索引的是倒排文件的词表。倒排文件是第二层索引,索引的是空间数据的属性数据。之所以采用两层索引是因为若只使用倒排文件一层索引,那么当用户输入关键字后,首先要在倒排文件中顺序查找与用户输入关键字有关的倒排表,这种查找过程所花费的时间与倒排文件的长度成正比。若倒排文件的长度为h,那么上述查找过程的时间复杂度为O(h)。可见,当倒排文件的长度增长到一定程度时,对倒排文件的査找将浪费不少时间。为了节约对倒排文件的査找时间,本发明方法对倒排文件的词表建立了散列表索引。通过散列表索引直接获得与用户输入关键字有关的倒排表集合,从而省去了顺序查找倒排文件的时间,能够极大地提高整个查询速度。
其中,本发明方法中建立的倒排文件的结构如图2所示,倒排文件由词表及记录文件构成,词表以空间数据中属性数据表的某一属性项的所有属性值作为关键字记录,记录文件对应记录空间数据中包含
上述属性值的所有地物ID号及相应的图层ID号。倒排文件记录着每
个关键字和包含此关键字的所有地物标识符。通常二维地理信息空间数据都会包含一个或多个图层,当数据只有一个图层的时候,地物标
识符可以是地物ID号;当数据包含多个图层的时候,地物标识符除了地物ID号之外还要记录地物所在图层的图层ID号。本发明方法中所使用的倒排文件的倒排表包括倒排表记录ID号、关键字、与关键字对应的所有地物ID号及相应的图层ID号,如图3所示。在倒排文件中,每个倒排表按照上述结构顺序记录,形成一个数据表放在数据库中。数据库中存放倒排文件的数据表的设计如表1所示。
根据上述倒排文件的结构,对数据库中的空间数据进行处理从而生成倒排文件,其具体过程如图4所示针对二维地理空间数据中的属性数据表的某一属性项的所有属性值,在空间数据中查找包含该属
表1倒排表设计
字段名 类型长度是否为空
记录ID号,自动增1
关键字地物标识符
9性值的所有地物的ID号及相应的图层ID号,并将其写入倒排文件的记录文件中,同时将该属性值作为关键字写入词表中。例如以属性数据表中的名称字段创建倒排文件,则针对"name"字段的每 一个属性值,比如"丰台区",在空间数据中查找包含"丰台区"属性值的所有地物。假设包含"丰台区"属性值的地物共有三个,它们的地物ID号分别是2、 7、 10,这三个地物分别在图层l、图层2、图层3上,则记录文件需要存储的内容是"2 (1); 7(2); 10(3)",括号中是相应地物的图层ID号,词表需要存储的内容是"丰台区"。
本发明方法中,对倒排文件的词表建立散列表包括步骤S3.1计算倒排文件词表中每一关键字的散列编码;S3.2根据散列函数,将每一个散列编码分别映射到散列表的相应位置,并将将散列编码对应的关键字所对应的倒排表记录ID号存入散列表中该散列编码映射的位置;S3.3处理冲突。
其中,散列编码的计算是后面两个步骤的基础,如果在散列编码阶段能够极大地避免冲突或使散列编码没有冲突,那么散列函数的设计和对冲突的处理将相对容易很多。
本发明方法对倒排文件的词表建立散列表的具体过程如图5所示。首先针对词表中的每一个关键字按照多项式散列公式
计算其散列编码。其中"是不等于l的非零常数,(X。,Xp…,Xw)对应表示关键字字符串中的每一位字符的Unicode (统一码)值,&为字符串中的字符数。例如,假设词表中有一个关键字是"丰台区",那么、="丰"的Unicode值,&="台"的Unicode值,义2="区"的Unicode值,^=3。在应用上述公式生成散列编码时,a值的选取至关重要,合适的a值能够极大地避免冲突,也就是避免两个不同的关键字生成相同的散列编码。为了减少计算量,本发明取a值为100以内的素数,针对100以内的所有素数,计算所有关键字的散列编码并记录冲突发生的次数,当每种情况的冲突小于7次或没有冲突发生的时候,当前的"值即为选定的"值。
散列编码生成后,将生成的散列编码映射到散列表的相应为之,
即区间[O, TV-1]上。优选地釆用一种简单的压缩映射——除法散列法
来完成这一步骤。
除法散列法的公式即为散列函数,公式如下.
其中,《是生成的散列编码,V是存储散列表的桶数组的容量。初始时,TV取默认值ll,散列表的装填因子(LoadFactor)取缺省值0.75。当散列表中存储的所有表项总数C满足C/iV〉丄o"^^ctor时,令7V二2xiV + l,对散列表进行重组。
确定好散列函数后,就可以按照散列函数计算的结果将倒排表记录ID号存储在桶数组中。
优选地,釆用链地址法解决冲突,具体方法是桶数组的每一个单元都存储一个链表,链表中每一个数据结点记录倒排文件的ID号,即倒排表记录ID号,和发生冲突时的关键字内容。
如图6所示,依照本发明另 一实施方式的空间数据索引系统包括输入模块,用于获取索引关键字;倒排文件生成模块,用于建立索引关键字的倒排文件;散列表生成模块,用于计算索引关键字的倒排表记录ID在散列表中的位置并建立散列表;倒排表记录ID号获取模块,用于根据索引关键字计算散列编码,并在散列表中获取索引关键字的倒排表记录ID号;空间信息获取模块,用于根据倒排表记录ID号获取倒排文件中与索引关键字有关的所有地物ID号及图层ID号;显示模块,用于获取地物ID号及图层ID号在图形数据中的具体坐标值并显示。
实施例
ii如图7所示,本实施例的空间数据索引方法具体过程如下用户
输入想要索引内容的索引关键字,如"丰台区";首先计算"丰台区"的倒排表记录ID在散列表中的位置;然后根据计算得到的位置去散列表中取"丰台区"的倒排表记录ID号;再根据记录ID号去倒排文件中取与"丰台区"有关的所有地物ID号和图层ID号;最后再到图形数据中根据地物ID号和图层ID号获取具体的坐标值,将其显示在界面上。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1、一种空间数据索引方法,该方法包括步骤S1.获取索引关键字;S2.建立所述索引关键字的倒排文件;S3.计算所述索引关键字的倒排表记录ID在散列表中的位置并建立散列表;S4.根据所述索引关键字计算散列编码,并在所述散列表中获取所述索引关键字的倒排表记录ID号;S5.根据所述倒排表记录ID号获取倒排文件中与所述索引关键字有关的所有地物ID号及图层ID号;S6.获取所述地物ID号及图层ID号在图形数据中的具体坐标值并显示。
2、 如权利要求1所述的空间数据索引方法,其特征在于,所述 倒排文件由词表及记录文件构成,所述词表以空间数据中属性数据表 的一预设属性项的所有属性值作为关键字记录,所述记录文件对应记 录空间数据中包含所述属性值的所有地物ID号及相应的图层ID号。
3、 如权利要求2所述的空间数据索引方法,其特征在于,所述 倒排表由所述倒排表记录ID号、所述词表中的关键字、与所述关键 字对应的所有地物ID号及相应的图层ID号。
4、 如权利要求1或3所述的空间数据索引方法,其特征在于, 所述散列表针对所述词表建立,其建立包括步骤S3.1计算所述词表中每一个关键字的散列编码;S3.2根据散列函数,将每一个所述散列编码分别映射到散列表的相应位置,并将所述散列编码对应的关键字所对应的倒排表记录ID号存入所述映射的位置; S3.3处理冲突。
5、 如权利要求4所述的空间数据索引方法,其特征在于,按照如下多项式散列公式计算所述散列编码其中,"为不等于l的非零常数,(x。,^…,Xw)对应所述属性值 字符串中的每一位字符的Unicode统一码值,A:为所述字符串中字符 的个数。
6、 如权利要求5所述的空间数据索引方法,其特征在于,"为 100以内的素数。
7、 如权利要求4所述的空间数据索引方法,其特征在于,所述步骤S3.2中映射釆用的方法为除法散列法,所述散列函数为 /z(yt) = |《|mod7V其中,尺为所述散列编码,7V是存储散列表的桶数组的容量,初 始时,W取ll,散列表的装填因子LoadFactor取缺省值0.75,当散 列表中存储的所有表项总数C满足C/W〉 LoadFactor时,令 A^ = 2xW + l,对散列表进行重组。
8、 如权利要求7所述的空间数据索引方法,其特征在于,所述 步骤S3.3中解决冲突的方法为链地址法,即所述桶数组的每一个单 元都存储一个链表,所述链表中的每一个数据节点记录所述倒排表记 录ID号和发生冲突时的关键字的内容。
9、 一种空间数据索引系统,该系统包括 输入模块,用于获取索引关键字;倒排文件生成模块,用于建立所述索引关键字的倒排文件;散列表生成模块,用于计算所述索引关键字的倒排表记录ID在散 列表中的位置并建立散列表;倒排表记录ID号获取模块,用于根据所述索引关键字计算散列编 码,并在所述散列表中获取所述索引关键字的倒排表记录ID号;空间信息获取模块,用于根据所述倒排表记录ID号获取倒排文件 中与所述索引关键字有关的所有地物ID号及图层ID号;显示模块,用于获取所述地物ID号及图层ID号在图形数据中的具体坐标值并显示。
全文摘要
本发明涉及一种空间数据索引方法及系统,该方法包括步骤获取索引关键字;建立索引关键字的倒排文件;计算索引关键字的倒排表记录ID在散列表中的位置并建立散列表;根据索引关键字计算散列编码,并在散列表中获取索引关键字的倒排表记录ID号;根据倒排表记录ID号获取倒排文件中与索引关键字有关的所有地物ID号及图层ID号;获取地物ID号及图层ID号在图形数据中的具体坐标值并显示。本发明的空间数据索引方法及系统借鉴多键索引的层次思想,从用户的角度出发,使用倒排文件索引和散列表索引相结合的方式索引空间数据,可提高用户通过空间数据的属性数据查询信息的速度。
文档编号G06F17/30GK101673307SQ200910236430
公开日2010年3月17日 申请日期2009年10月21日 优先权日2009年10月21日
发明者张晓东, 时振通, 林 李, 王龙鹤, 剑 秦, 蕾 薛 申请人:中国农业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1