本发明专利技术公开了一种路网环境下的连续移动K近邻查询方法,建立路网结点哈希表、路网边的哈希表等;录入路网的结点信息,初始化路网结点的哈希表;录入路网的边的信息;将移动对象插入到路网移动对象哈希表;根据移动对象在路网移动对象哈希表中的位置找到对应的边,更新完成后要判断该移动对象是否为查询对象;更新对应的查询结果。基于内存的哈希表表结构,充分利用了哈希表能够快速实现插入和快速查找操作的特性,提高了索引的建立、移动对象初始化、索引及查询的效率,节省了时间,网络的密集和稀疏对其影响比较小,对稀疏网络的效果也很明显,实用性强,具有较强的推广与应用价值。
【技术实现步骤摘要】
一种路网环境下的连续移动K近邻查询方法
本专利技术属于移动数据索引
,尤其涉及一种路网环境下的连续移动K近邻查询方法。背景枝术随着无线通信技术、全球定位系统(GlobalPositioningSystem,GPS)技术以及数据库技术的发展,移动对象数据库技术逐渐成为数据库领域的研究热点,其中移动对象数据的连续移动K近邻查询是研究中的一个重要领域,但是过去的大部分研究工作都是针对处于自由空间下的K近邻查询,并且已经比较成熟;对于路网环境中,查询对象和被查询目标在受限空间的连续K近邻查询问题,目前国内外这方面的研究都还处于初级阶段。要解决这类查询问题,首先是需要一个能够高效存储移动对象的索引结构。2003年在VLDB会议上PapadiasD和ZhangJ等人提出了两种算法,分别是IER(IncrementalEudlideanRestriction)算法和INE(IncrementalNetworkExpansion)算法。INE算法扩展网络边的方式与Dijkstra算法类似,查询搜索的起点为查询点的位置,在搜索的过程中比较遇到的移动对象,直至扩张半径超过K近邻的最远距离为止,该算法适合于密集网络。因为它在扩展时即使网络边上未包含兴趣点,该边上查询仍然执行,因此稀疏的网络会使得搜索空间较大,从而效率下降。针对INE算法对于稀疏网络效率较低的情况,2004年KolahdouzanM和ShahabiC提出了基于Voronoi的VN3算法。该方法是把整个路网划分为各个小的Voronoicell区域,成为NVP(networkVoronoipolygon),然后用R树索引NVP,这样查询最近邻问题就转化为对点的定位。查找K近邻就可以根据邻接的NVP找到。但是移动对象的密度对VN3算法的影响较大,当数据集分布稀疏时,每个NVP会变得比较大,这将导致预计算比较高并且搜索的性能变差,因此该算法适合小规模数据集。2005年HuangX等人提出了Island方法,首先在预处理阶段将路网划分为各个Island区域,并索引这些区域内的对象,接着在网络扩展阶段根据查询对象所在的边找到与该边的端点相交的区域,从而找到查询的对象并计算距离。2006年MouratidisK等人提出了能处理路网上查询对象任意运动的两种算法,分别是IMA(Incrementalmonitoringalgorithm)和GMA(groupmonitoringalgorithm)算法。该方法是使用基于内存的数据结构来存储和表达路网及连接性,并且使用扩展树结构来维护和更新查询结果。GMA方法是对同一边上的查询对象共享查询结果等策略进一步提高算法的效率。但是该算法的缺点是在采样的查询时刻查询结果准确,而不同查询时刻间的结果是不确定的。并且IMA算法利用PMR四分树索引路网,索引的建立和定位移动对象的效率都比较低。2009年Yuan-KoHuang,Zhi-WeiChen,ChiangLee提出了路网上移动对象持续监控的方法,它分为两个阶段,分别是剪枝阶段和确认阶段。剪枝阶段的目的是计算剪枝距离,然后根据剪枝距离不符合要求的对象被剪枝掉,然后在确认阶段判断候选对象是不是查询对象的K近邻。该算法的缺点是在剪枝阶段的剪枝距离太大,因此导致监视的对象个数太多,从而对象到查询点的距离的计算量加大,并且在确认阶段当候选对象过多时可能导致求K近邻的时间过长引发算法失效。2010年GuohuiLi提出了路网环境下的连续K近邻查询的有效算法,该算法在每个被查询对象上使用了moving_state结构,该结构有两个值away和closer分别表示运动状态导致该对象离查询点越来越远和越来越近。算法的执行过程是首先根据对象的运动方向和速度计算moving_state,然后根据它可以排除一部分不可能是查询结果的对象,然后进一步根据剪枝距离删选,最后在确认阶段可以根据moving_state值排除不可能改变查询结果的K近邻,因此该算法的计算量较低,该算法的缺点是对象在边上的速度标量是个常量,不太符合现实生活中道路情形。
技术实现思路
本专利技术提供了一种路网环境下的连续移动K近邻查询方法,旨在解决现有的技术对稀疏网络效率较低,并且索引的建立、移动对象初始化索引、查询算法都花费时间较高的问题。本专利技术的目的在于提供一种路网环境下的连续移动K近邻查询方法,该连续移动K近邻查询方法包括以下步骤:步骤1:建立路网结点哈希表(nodeh)、路网边的哈希表(edgeh)、路网移动对象的哈希表(objecth)及路网查询点的哈希表(kqh);步骤2:录入路网的结点信息,初始化路网结点的哈希表(nodeh);步骤3:录入路网的边的信息,初始化路网边的哈希表(edgeh),并通过两个结点的id的计算得到此处的eid;步骤4:录入移动对象信息,判断移动对象的类型,如果移动对象类型是新增点执行步骤5,如果移动对象的类型是查询点执行步骤6,如果移动对象的类型是更新点执行步骤7,此处的更新点是指从一个地方移到另一个地方的移动点,如果移动对象的类型是删除点执行步骤8;步骤5:将移动对象插入到路网移动对象哈希表(objecth),根据移动对象移动方向的初点(nodel)和末点(node2)定位到该移动对象所在的路网边(edgeh),将移动对象插入到边中对应的移动对象链表(oid),最后判断该边影响的查询对象(qid),计算并进行更新;步骤6:根据移动对象的信息定位到移动对象所在的边(edgeh),将该边放入查询结果的边表edgelist中,同时该对象的id也存入该边的查询对象链表中,将该边上的移动对象插入查询结果链表中,分别搜索以该边的两个顶点为端点的边,并按照端点到查询对象的距离的升序入队,此处端点到查询对象的距离取边两个端点到查询点距离的较小值;步骤7:移动对象进行更新操作时,首先由根据移动对象在objecth中的位置找到对应的边,然后判断更新后移动对象所在的边与未更新前的边是否相同,在更新的同时要判断移动对象对查询结果的影响,在更新完成后要判断该移动对象是否为查询对象;步骤8:根据移动对象的信息找到移动对象所在的边,从该边的oid中删除的该移动对象,处理与该边有关系的查询对象链表,更新对应的查询结果,最后判断该移动对象是否在路网查询点的哈希表中,若在则删除查询结果。进一步,在步骤1中,路网结点哈希表以点的id进行哈希,路网边的哈希表以边的id进行哈希,路网移动对象的哈希表以移动对象的id进行哈希,路网查询点的哈希表以查询点的id进行哈希。进一步,在步骤3中,录入路网的边的信息,初始化路网边的哈希表(edgeh),并通过两个结点的id的计算得到此处的eid时,若边的一个结点的id为15,另一个结点的id为35,则该边的eid就为151035,即在两个id中间加上字符串10拼接而成,如果知道移动对象的移动方向的初点id和末点id,就可以直接得到该移动对象所在边的eid。进一步,在步骤6中,对队列里的边进行操作,访问到每条边都将该边放入查询结果的edgelist链表中,同时查询对象的id也存到该边的查询对象链表内,然后处理该边上的移动对象,并处理以边的另一端点为顶点的边,按照端点到查询对象的距离的升序入队,最本文档来自技高网...
【技术保护点】
一种路网环境下的连续移动K近邻查询方法,其特征在于,该连续移动K近邻查询方法包括以下步骤:步骤1:建立路网结点哈希表(nodeh)、路网边的哈希表(edgeh)、路网移动对象的哈希表(objecth)及路网查询点的哈希表(kqh);步骤2:录入路网的结点信息,初始化路网结点的哈希表(nodeh);步骤3:录入路网的边的信息,初始化路网边的哈希表(edgeh),并通过两个结点的id的计算得到此处的eid;步骤4:录入移动对象信息,判断移动对象的类型,如果移动对象类型是新增点执行步骤5,如果移动对象的类型是查询点执行步骤6,如果移动对象的类型是更新点执行步骤7,此处的更新点是指从一个地方移到另一个地方的移动点,如果移动对象的类型是删除点执行步骤8;步骤5:将移动对象插入到路网移动对象哈希表(objecth),根据移动对象移动方向的初点(nodel)和末点(node2)定位到该移动对象所在的路网边(edgeh),将移动对象插入到边中对应的移动对象链表(oid),最后判断该边影响的查询对象(qid),计算并进行更新;步骤6:根据移动对象的信息定位到移动对象所在的边(edgeh),将该边放入查询结果的边表edgelist中,同时该对象的id也存入该边的查询对象链表中,将该边上的移动对象插入查询结果链表中,分别搜索以该边的两个顶点为端点的边,并按照端点到查询对象的距离的升序入队,此处端点到查询对象的距离取边两个端点到查询点距离的较小值;步骤7:移动对象进行更新操作时,首先由根据移动对象在objecth中的位置找到对应的边,然后判断更新后移动对象所在的边与未更新前的边是否相同,在更新的同时要判断移动对象对查询结果的影响,在更新完成后要判断该移动对象是否为查询对象;步骤8:根据移动对象的信息找到移动对象所在的边,从该边的oid中删除 的该移动对象,处理与该边有关系的查询对象链表,更新对应的查询结果,最后判断该移动对象是否在路网查询点的哈希表中,若在则删除查询结果。...
【技术特征摘要】
1.一种路网环境下的连续移动K近邻查询方法,其特征在于,该连续移动K近邻查询方法包括以下步骤:步骤1:建立路网结点哈希表nodeh、路网边的哈希表edgeh、路网移动对象的哈希表objecth及路网查询点的哈希表kqh;步骤2:录入路网的结点信息,初始化路网结点的哈希表nodeh;步骤3:录入路网的边的信息,初始化路网边的哈希表edgeh,并通过两个结点的id的计算得到此处的eid;步骤4:录入移动对象信息,判断移动对象的类型,如果移动对象类型是新增点执行步骤5,如果移动对象的类型是查询点执行步骤6,如果移动对象的类型是更新点执行步骤7,此处的更新点是指从一个地方移到另一个地方的移动点,如果移动对象的类型是删除点执行步骤8;步骤5:将移动对象插入到路网移动对象哈希表objecth,根据移动对象移动方向的初点node1和末点node2定位到该移动对象所在的路网边的哈希表edgeh,将移动对象插入到边中对应的移动对象链表oid,最后判断该边影响的查询对象qid,计算并进行更新;步骤6:根据移动对象的信息定位到移动对象所在的路网边的哈希表edgeh,将该边放入查询结果的边表edgelist中,同时该对象的id也存入该边的查询对象链表中,将该边上的移动对象插入查询结果链表中,分别搜索以该边的两个顶点为端点的边,并按照端点到查询对象的距离的升序入队,此处端点到查询对象的距离取边两个端点到查询点距离的较小值;步骤7:移动对象进行更新操作时,首先由根据移动对象在objecth中的位置找到对应的边,然后判断更新后移动对象所在的边与未更新前的边是否相同,在更新的同时要判断移动对象对查询结果的影响,在更新完成后要判断该移动对象是否为查询对象;步骤8:根据移动对象的信息找到移动对象所在的边,从该边的oid中删除的...
【专利技术属性】
技术研发人员:王波涛,王国仁,王标,孙清清,
申请(专利权)人:东北大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。