一种道路网络环境下不确定时空轨迹数据的范围查询方法转让专利

申请号 : CN201310056531.8

文献号 : CN103106280B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈岭唐燕琳陈根才

申请人 : 浙江大学

摘要 :

本发明公开了一种道路网络环境下不确定时空轨迹数据的范围查询方法,过程如下:先将道路网络划分成k个划分区域;根据边和划分的对应关系建立哈希表;计算划分区域的边界点,并建立空间二维R树索引;计算每个划分中边界点之间的最短路径距离;对每个划分建立一个一维R树时间段索引,对每棵一维R树,建立存储轨迹数据的B+树;其次计算确定轨迹和不确定轨迹的最早到达时间和最晚离开时间,并将单元段集合和划分起止时间插入时间间隔组件;最后根据查询点所在的划分,计算划分边界点与查询点的距离信息,从而得到查询结果。本发明每次查询只需要对部分划分进行少量的I/O操作和在线计算就可以获得查询结果,查询结果准确度高、响应速度快。

权利要求 :

1.一种道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,按照如下过程依次进行:(1)建立索引结构:

用多层k划分算法将道路网络划分成k个边长总和近似相等的划分区域,k为自然数;根据上述划分得到的划分区域的边和划分的对应关系建立哈希表;根据任意两个划分区域中边的端点的交集来计算划分区域的边界点,并根据边界点的最小包容矩形建立空间二维R树索引,构建划分组件;用最短路径算法计算每个划分中边界点之间的最短路径距离,构建预计算距离组件;对上述每个划分建立一个一维R树时间段索引,对每棵一维R树,建立存储轨迹数据的B+树,构建时间间隔组件;

(2)将轨迹数据插入所述索引结构:

初始化轨迹的首个采样点所在的边和当前划分;计算有下一个采样点的当前采样点所在的边;对于不含路径不确定性的采样点,根据两个采样点的分布情况,计算采样点所在边的最早到达时间和最晚离开时间,并将单元段集合和划分起止时间插入所述时间间隔组件;对于包含路径不确定性和位置不确定性的采样点,先计算轨迹的所有可能路径和所述可能路径中每个单元段的最早到达时间和最晚离开时间并标记各路径是否被划分分割,将获得的不确定轨迹按照所述划分区域进行划分并将单元段集合和划分起止时间插入所述时间间隔组件;

(3)范围查询:

范围查询的定义是查询在时间段(t1,t2)内可能经过与查询点Q的道路网络距离小于dr范围的所有移动对象,t1和t2表示时间范围,dr表示道路网络距离界限值;通过所述哈希表确定输入的查询点所在的划分;查询所述二维R树,得到欧氏空间下满足空间范围条件的划分;计算所述划分边界点与所述查询点的距离信息;划分扩展后计算得到完全划分、部分划分和无用划分;如果只有一个无用划分,则直接利用时间间隔组件计算查询结果;否则对完全划分和部分划分中的轨迹利用时间间隔组件通过不同的查询算法得到查询结果,将得到的查询结果去重得到最终查询结果;

所述完全划分、部分划分和无用划分是指:对于一个划分,如果划分中所有的边界点与查询点的最短路径距离都小于等于所述查询范围,则该划分是完全划分;如果划分中部分边界点与查询点的最短路径距离小于等于所述查询范围,则该划分是部分划分;如果划分中所有的边界点与查询点的最短路径距离都大于所述查询范围,则该划分是无用划分。

2.如权利要求1所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,步骤(2)中,所述的根据两个采样点的分布情况,计算采样点所在边的最早到达时间和最晚离开时间的过程如下:如果两个采样点在同一条边上,只有当是最后一个采样点时,以记录下的划分最早开始时间和当前采样点的时间戳作为划分的起止时间,将单元段集合和划分起止时间插入时间间隔组件;

如果两个采样点在相邻的边上,先计算移动对象离开前一条边的最晚时间,再计算移动对象到达当前边的最早时间,将单元段集合和划分起止时间插入时间间隔组件;

如果当前划分与当前边所在的划分不同,将划分中第一条边的最早到达时间和最后一条边的最晚离开时间作为划分的起止时间,和当前单元段集合一起插入时间间隔组件。

3.如权利要求1所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,步骤(2)中,所述的计算轨迹的所有可能路径和所述可能路径中每个单元段的最早到达时间和最晚离开时间并标记各路径是否被划分分割的过程为:先计算两个采样点在边中的位置;

再利用最小优先队列完成计算第一个顶点到最后一个顶点的所有可能路径;

最后计算可能路径中每个单元段的最早到达时间和最晚离开时间,将原轨迹转化为由若干单元段组成的不确定轨迹形式,并标记各路径是否被划分分割。

4.如权利要求3所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,所述的利用最小优先队列完成计算第一个顶点到最后一个顶点的所有可能路径的过程如下:(I)初始化空的优先队列:将第一个顶点、路径和时间0加入队列;

(II)如果队列为空,则结束;否则取出队列中时间最短的顶点;

(III)如果顶点是最后一个顶点,将当前路径加入结果集,跳到(II);否则,该过程结束;

(IV)访问该顶点的邻近边,如果该邻近边未被访问,且到达时间小于tmax,则将该顶点、路径和到达时间加入队列,tmax表最大限制时间,其计算公式为:tmax=ni.timestamp-ni-1.timestamp-sDist/s(ep)-eDist/s(e)  (11)其中ni.timestamp表示当前采样点的时间戳,ni-1.timestamp表示当前采样点的前一个采样点的时间戳,sDist表示前一个采样点到第一个顶点的距离,eDist表示当前采样点到最后一个顶点的距离,s(ep)表示ep的最大限速,s(e)表示e的最大限速,ep表示前一个采样点所在的边,e表示当前采样点所在的边。

5.如权利要求1所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,步骤(2)中,所述的将获得的不确定轨迹按照所述划分区域进行划分并将单元段集合和划分起止时间插入所述时间间隔组件的过程如下:如果前一个采样点所在边对应的划分与当前划分不同,则将单元段集合和划分起止时间插入时间间隔组件;

在处理第一个顶点和最后一个顶点之间的可能路径时,如果最短路径或者该条可能路径被划分分割,则将该条可能路径作为独立的轨迹进行处理,直接将对应的单元段集合和划分起止时间加入时间间隔组件;否则与最短路径在一个划分的且没有被分割的路径与原轨迹加入同一个单元段集合;

在收集最短路径所在的单元段集合时,如果最短路径被分割,则将最短路径与原轨迹作为单独轨迹处理;否则将最短路径的集合加入时间间隔组件。

6.如权利要求1所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,步骤(3)中,所述的划分扩展由最小优先队列算法实现,最小优先队列算法的具体过程如下:(A)初始化当前划分为查询点所在的划分p,p为划分标记符;

(B)初始化最小优先队列为空,将所述计算得到的边界点及其与查询点的最短距离加入队列;

(C)如果队列为空,则跳到G;否则取出离查询点最近的边界点bc,得到bc所在的划分作为当前划分p,bc为队列中离查询点距离最近的边界点,p为bc所在划分的标记符;

(D)如果遍历完划分p中的所有边界点bi,则跳到C;否则利用公式:

dist_sum←distc+dist(bi,bc)  (14)

计算该边界点更新的距离,其中dist_sum表示边界点更新的距离;distc表示边界点bc更新前离查询点的距离;dist(bi,bc)表示bi与bc的最短距离,bc为队列中离查询点最近的边界点,bi为划分p的边界点,i为自然数;

(E)如果dist_sum的值小于dr,则将边界点bi加入队列,否则跳到步骤F,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;dr为查询范围的道路网络距离界限值;

(F)如果dist_sum小于bi的有效距离,则更新队列中的距离,否则跳到D,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;

(G)根据划分中边界点与查询点的距离,标记完全划分和部分划分。

7.如权利要求1所述的道路网络环境下不确定时空轨迹数据的范围查询方法,其特征在于,步骤(3)中,所述的对完全划分和部分划分中的轨迹利用时间间隔组件通过不同的查询算法得到查询结果的过程如下:对于完全划分,查询一维R树时间段索引得到满足时间范围的轨迹数据即为查询结果;

对于每个部分划分需先进行时间过滤后再计算空间信息,得到查询结果,具体过程为:

先查询一维R树时间段索引得到满足时间范围的轨迹数据候选集;

再根据R树中的得到的最早到达时间、最晚离开时间和轨迹标识组合得到单元段集合的键,通过B+树获得对应轨迹的单元段集合,获得划分中满足空间条件的边,将划分的边界点和查询点用虚拟的线连接,从查询点到边界点的花费为查询点到边界点的最短路径距离,这样就将求划分中满足空间条件的边问题转化为从查询点出发在划分中的增量网络扩展算法;然后求出满足空间条件的边和单元段集合的交集,只要求出交集中的任意一条边同时满足startTime≤te和endTime≥ts,就认为该条轨迹数据满足查询条件,其中startTime表示移动对象到达单元段的最早时间,endTime表示移动对象离开单元段的最晚时间,ts表示所述输入的时间范围的开始时间,te表示所述输入的时间范围的结束时间;所有满足所述输入的时间范围的轨迹数据组成部分划分的查询结果。

说明书 :

一种道路网络环境下不确定时空轨迹数据的范围查询方法

技术领域

[0001] 本发明涉及信息检索领域,尤其涉及一种道路网络环境下不确定时空轨迹数据的范围查询方法。

背景技术

[0002] 随着经济的发展,越来越多的人拥有汽车,交通事故已经成为全球最大的意外伤亡原因。在调查交通事故中,如果能通过分析在事故发生时段经过事故发生指定范围的车辆,就可以快速地找到肇事者或者潜在目击证人,加快交通事故的处理时间,提高肇事逃逸的破案效率。在这种需求下,发明一种道路网络环境下高效处理不确定轨迹数据范围查询方法是十分必要的。随着通信技术和全球定位技术的快速发展,汽车导航、交通管理系统等基于位置服务的应用需求日益增长,诸如汽车这样的移动对象产出了庞大的时空轨迹数据集,可以为道路网络环境下不确定轨迹数据范围查询提供大量的原始数据,这使得发明一种道路网络环境下不确定轨迹数据范围查询方法切实可行。
[0003] 轨迹数据的不确定性来源有很多,GPS数据的误差、用户的隐私保护和两个采样点之间信息的丢失等。在道路网络环境下对于不确定轨迹数据的查询,现有的方法主要有两种:第一种是基于形状的UTR树索引(参见Z.M.Ding.UTR-Tree:An index structure for the full uncertain trajectories of network-constrained moving objects[C].MDM,2008,33-40),该方法提出三种轨迹数据更新策略用于计算两个采样点之间的不确定区域;
第二种是基于概率分布的UTH索引(参见K.Zheng,G.Trajcevski.Probablistic Range query for uncertain trajectories on road networks[C].EDBT,2011,283~294.),该方法以FNR树索引为基础,假设道路网络中路段的最大限速,提出移动对象的概率分布函数。在实际真实情况中,UTR树索引只适用于窗口范围查询,不提供基于道路网络距离的范围查询;UTH索引的概率计算花费较大,查询效率不高,索引文件多、磁盘I/O读取次数多。
[0004] 公开号为CN 102693293 A的发明专利申请公布了一种多变量时空数据的范围查询方法及系统,其中,方法包括:载入并打开netCDF格式的多变量时空数据文件;读取多变量时空数据文件中各个多变量的格点数据并根据多变量的空间范围对格点数据进行预处理;获取多变量时空数据文件中的变量数据,对变量建立基于四叉树的层次化索引结构,其中层次化索引用于查找时使用;用户定义查询范围区域;根据查询范围,载入元数据信息及层次化索引结构;以及根据变量的层次化索引结构,通过对层次化索引结构的节点进行递归查找完成实时范围查询。
[0005] 这种基于四叉树的层次化索引结构通过不停的把要查找的记录分成4部分来进行匹配查找直到仅剩下一条记录为止,计算量大、查询效率不高,系统消耗大。

发明内容

[0006] 本发明提供了一种道路网络环境下不确定时空轨迹数据的范围查询方法,解决了现有方法计算量大、查询效率低、索引文件多、磁盘I/O读取次数多和系统消耗大的不足等问题,并且可以在交通事故查询、城市交通路况分析、模糊轨迹数据挖掘等方面应用,查询结果高效精确。
[0007] 范围查询的定义是查询在时间段(t1,t2)内可能经过与查询点Q的道路网络距离小于dr范围的所有移动对象,t1和t2表示时间范围,dr表示道路网络距离界限值。
[0008] 本发明基于一种道路网络中不确定轨迹数据模型,如图1所示,T1和T2是相邻的两个采样点,T1(p1,10)表示采样点T1的地理位置是p1,时间戳是10,(e1,3)表示移动对象以最大限速经过边e1所花费的时间。在采样点T1和T2之间不能确定移动对象选择的是三条路径中的哪一条,以及在某一时刻在路径中的准确位置。因此,轨迹数据的不确定性分为路径不确定性和位置不确定性。
[0009] 路径不确定性:给定一个移动对象O的两个道路网络上的采样点(pi,ti)和(pi+1,ti+1),则在时间ti和ti+1之间可能的所有路径 是所有连接地理位置pi和pi+1的所有花费时间小于等于ti+1-ti的路径,计算公式为:
[0010]
[0011] 其中pi和pi+1表示地理位置, 表示所有路径,Pj表示地理位置pi和pi+1间的某条路径,t(Pj)表示路径Pj所花费的时间,i,j为自然数。
[0012] 其中,路径Pj的花费时间t(Pj)的计算公式为:
[0013]
[0014] l(e)表示e的长度,s(e)表示e的最大限速,e表示路径Pj的某条边,j为自然数。
[0015] 位置不确定性:当所有路径 的元素都找到以后,就需要确定在一条路径上某个时刻移动对象可能的位置。采用简单的建模方式,以各个采样点经过的道路边作为变量,分析移动对象在道路边上的最长时间,包括最早到达时间和最晚离开时间。对于路径Pj上一个给定的节点 i,j为自然数,使用最早到达时间 和最晚离开时间来表示。特别地, 最早到达时间和最晚离开时间可以迭代计
算得到:
[0016]
[0017]
[0018] 这样对于开始节点为 结束节点为 的边e,移动对象在边上的最长时间段为[0019] 一种道路网络环境下不确定时空轨迹数据的范围查询方法,按照如下过程依次进行:
[0020] (1)建立索引结构:
[0021] 用多层k划分算法将道路网络划分成k个边长总和近似相等的划分区域,k为自然数;根据上述划分得到的划分区域的边和划分的对应关系建立哈希表;根据任意两个划分区域中边的端点的交集来计算划分区域的边界点,并根据边界点的最小包容矩形建立空间二维R树索引,构建划分组件;用最短路径算法计算每个划分中边界点之间的最短路径距离,构建预计算距离组件;对上述每个划分建立一个一维R树时间段索引,对每棵一维R树,建立存储轨迹数据的B+树,构建时间间隔组件;
[0022] (2)将轨迹数据插入所述索引结构:
[0023] 初始化轨迹的首个采样点所在的边和当前划分;计算有下一个采样点的当前采样点所在的边;对于不含路径不确定性的采样点,根据两个采样点的分布情况,计算采样点所在边的最早到达时间和最晚离开时间,并将单元段集合和划分起止时间插入所述时间间隔组件;对于包含路径不确定性和位置不确定性的采样点,先计算轨迹的所有可能路径和所述可能路径中每个单元段的最早到达时间和最晚离开时间并标记各路径是否被划分分割,将获得的不确定轨迹按照所述划分区域进行划分并将单元段集合和划分起止时间插入所述时间间隔组件;
[0024] (3)范围查询:
[0025] 范围查询的定义是查询在时间段(t1,t2)内可能经过与查询点Q的道路网络距离小于dr范围的所有移动对象,t1和t2表示时间范围,dr表示道路网络距离界限值。通过所述哈希表确定输入的查询点所在的划分;查询所述二维R树,得到欧氏空间下满足空间范围条件的划分;计算所述划分边界点与所述查询点的距离信息;划分扩展后计算得到完全划分、部分划分和无用划分;如果只有一个无用划分,则直接利用时间间隔组件计算查询结果;否则对完全划分和部分划分中的轨迹利用时间间隔组件通过不同的查询算法得到查询结果,将得到的查询结果去重得到最终查询结果。
[0026] 步骤(2)中,所述根据两个采样点的分布情况,计算采样点所在边的最早到达时间和最晚离开时间的过程如下:
[0027] 如果两个采样点在同一条边上,只有当是最后一个采样点时,以记录下的划分最早开始时间和当前采样点的时间戳作为划分的起止时间,将单元段集合和划分起止时间插入时间间隔组件;
[0028] 如果两个采样点在相邻的边上,先计算移动对象离开前一条边的最晚时间,再计算移动对象到达当前边的最早时间,将单元段集合和划分起止时间插入时间间隔组件;
[0029] 如果当前划分与当前边所在的划分不同,将划分中第一条边的最早到达时间和最后一条边的最晚离开时间作为划分的起止时间,和当前单元段集合一起插入时间间隔组件。
[0030] 步骤(2)中,所述计算轨迹的所有可能路径和所述可能路径中每个单元段的最早到达时间和最晚离开时间并标记各路径是否被划分分割的过程为:
[0031] 先计算两个采样点在边中的位置;
[0032] 再利用最小优先队列完成计算第一个顶点到最后一个顶点的所有可能路径;
[0033] 最后计算可能路径中每个单元段的最早到达时间和最晚离开时间,将原轨迹转化为由若干单元段组成的不确定轨迹形式,并标记各路径是否被划分分割。
[0034] 所述利用最小优先队列完成计算第一个顶点到最后一个顶点的所有可能路径的过程如下:
[0035] (I)初始化空的优先队列:将第一个顶点、路径和时间0加入队列;
[0036] (II)如果队列为空,则结束;否则取出队列中时间最短的顶点;
[0037] (III)如果顶点是最后一个顶点,将当前路径加入结果集,跳到(II);否则,该过程结束;
[0038] (IV)访问该顶点的邻近边,如果该邻近边未被访问,且到达时间小于tmax,则将该顶点、路径和到达时间加入队列,tmax表最大限制时间,其计算公式为:
[0039] tmax=ni.timestamp-ni-1.timestamp-sDist/s(ep)-eDist/s(e)   (11)[0040] 其中ni.timestamp表示当前采样点的时间戳,ni-1.timestamp表示当前采样点的前一个采样点的时间戳,sDist表示前一个采样点到第一个顶点的距离,eDist表示当前采样点到最后一个顶点的距离,s(ep)表示ep的最大限速,s(e)表示e的最大限速,ep表示前一个采样点所在的边,e表示当前采样点所在的边。
[0041] 步骤(2)中,所述将获得的不确定轨迹按照所述划分区域进行划分并将单元段集合和划分起止时间插入所述时间间隔组件的过程如下:
[0042] 如果前一个采样点所在边对应的划分与当前划分不同,则将单元段集合和划分起止时间插入时间间隔组件;
[0043] 在处理第一个顶点和最后一个顶点之间的可能路径时,如果最短路径或者该条可能路径被划分分割,则将该条可能路径作为独立的轨迹进行处理,直接将对应的单元段集合和划分起止时间加入时间间隔组件;否则与最短路径在一个划分的且没有被分割的路径与原轨迹加入同一个单元段集合;
[0044] 在收集最短路径所在的单元段集合时,如果最短路径被分割,则将最短路径与原轨迹作为单独轨迹处理;否则将最短路径的集合加入时间间隔组件。
[0045] 步骤(3)中,所述划分扩展由最小优先队列算法实现,该算法的具体过程如下:
[0046] (A)初始化当前划分为查询点所在的划分p,p为划分标记符;
[0047] (B)初始化最小优先队列为空,将所述计算得到的边界点及其与查询点的最短距离加入队列;
[0048] (C)如果队列为空,则跳到G;否则取出离查询点最近的边界点bc,得到bc所在的划分作为当前划分p,bc为队列中离查询点距离最近的边界点,p为bc所在划分的标记符;
[0049] (D)如果遍历完划分p中的所有边界点bi,则跳到C;否则利用公式:
[0050] dist_sum←distc+dist(bi,bc)   (14)
[0051] 计算该边界点更新的距离,其中dist_sum表示边界点更新的距离;distc表示边界点bc更新前离查询点的距离;dist(bi,bc)表示bi与bc的最短距离,bc为队列中离查询点最近的边界点,bi为划分p的边界点,i为自然数;
[0052] (E)如果dist_sum的值小于dr,则将边界点bi加入队列,否则跳到步骤F,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;dr为查询范围的道路网络距离界限值;
[0053] (F)如果dist_sum小于bi的有效距离,则更新队列中的距离,否则跳到D,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;
[0054] (G)根据划分中边界点与查询点的距离,标记完全划分和部分划分。
[0055] 步骤(3)中,所述完全划分、部分划分和无用划分是指:
[0056] 对于一个划分,如果划分中所有的边界点与查询点的最短路径距离都小于等于所述查询范围,则该划分是完全划分;
[0057] 如果划分中部分边界点与查询点的最短路径距离小于等于所述查询范围,则该划分是部分划分;
[0058] 如果划分中所有的边界点与查询点的最短路径距离都大于所述查询范围,则该划分是无用划分。
[0059] 步骤(3)中,所述对完全划分和部分划分中的轨迹利用时间间隔组件通过不同的查询算法得到查询结果的过程如下:
[0060] 对于完全划分,查询一维R树时间段索引得到满足时间范围的轨迹数据即为查询结果;
[0061] 对于每个部分划分需先进行时间过滤后再计算空间信息,得到查询结果,具体过程为:
[0062] 先查询一维R树时间段索引得到满足时间范围的轨迹数据候选集;
[0063] 再根据R树中的得到的最早到达时间、最晚离开时间和轨迹标识组合得到单元段集合的键,通过B+树获得对应轨迹的单元段集合,获得划分中满足空间条件的边,将划分的边界点和查询点用虚拟的线连接,从查询点到边界点的花费为查询点到边界点的最短路径距离,这样就将求划分中满足空间条件的边问题转化为从查询点出发在划分中的所述增量网络扩展算法;然后求出满足空间条件的边和单元段集合的交集,只要求出交集中的任意一条边同时满足startTime≤te和endTime≥ts,就认为该条轨迹数据满足查询条件,其中startTime表示移动对象到达单元段的最早时间,endTime表示移动对象离开单元段的最晚时间,ts表示所述输入的时间范围的开始时间,te表示所述输入的时间范围的结束时间;所有满足所述输入的时间范围的轨迹数据组成部分划分的查询结果。
[0064] 本发明主要针对在交通事故发生后肇事车逃逸的情况,根据事故发生点的位置、事故发生时间和当前时间确定查询的时间段,并根据周围路段的最大限速设定查询范围,可最大程度的找到肇事者或者潜在目击证人,加快交通事故的处理时间,提高肇事逃逸的破案效率。
[0065] 本发明的有益效果为:本发明中提出的层次化的索引结构基于划分思想,增大了每次磁盘I/O操作的粒度从而减少次数,可以离线计算边界点之间的最短路径距离,减少了由不确定性模型引起的时间段重叠;该索引结构分别对时间维度和空间维度创建了索引,在查询过程中,先进行空间维度的筛选,再进行时间维度的筛选使得筛选效果更明显;基于这种结构提出的一种高效的范围查询算法,每次查询只需要对部分划分进行少量的I/O操作和在线计算就可以获得查询结果,查询结果准确度高、响应速度快。

附图说明

[0066] 图1为轨迹路径不确定性示意图。
[0067] 图2为图1的轨迹位置不确定性示意图。
[0068] 图3为本发明索引结构框架图。
[0069] 图4为图3所述的索引结构框架图的详细结构图。
[0070] 图5为本发明总体操作流程图。
[0071] 图6为本发明建立索引结构流程图。
[0072] 图7为本发明将轨迹数据插入所述索引结构流程图。
[0073] 图8为本发明寻找可能路径流程图。
[0074] 图9为本发明范围查询流程图。
[0075] 图10为本发明划分扩展算法流程图。

具体实施方式

[0076] 本实施方式提供的是基于道路网络中不确定轨迹数据模型的不确定时空轨迹数据的范围查询方法。
[0077] 轨迹数据的不确定性分为路径不确定性和位置不确定性。路径不确定性是指在某两个采样点之间,移动对象可能的路径在一条以上;位置不确定性是指在某一时刻,移动对象可能在不同路径的不同位置。
[0078] 路径不确定性:给定一个移动对象O的两个道路网络上的采样点(pi,ti)和(pi+1,ti+1),则在ti和ti+1之间可能的所有路径 是所有连接地理位置pi和pi+1的所有花费时间小于等于ti+1-ti的路径,计算公式为:
[0079]
[0080] 其中pi和pi+1表示地理位置, 表示所有路径,Pj表示地理位置pi和pi+1间的某条路径,t(Pj)表示路径Pj所花费的时间,i,j为自然数。
[0081] 其中,路径Pj的花费时间t(Pj)的计算公式为:
[0082]
[0083] l(e)表示e的长度,s(e)表示e的最大限速,e表示路径Pj的某条边,j为自然数。
[0084] 位置不确定性:当所有 的元素都找到以后,就需要确定在一条路径上某个时刻移动对象可能的位置。采用简单的建模方式,以各个采样点经过的道路边作为变量,分析移动对象在道路边上的最长时间,包括最早到达时间和最晚离开时间。对于路径Pj上一个给定的节点 i,j为自然数,使用最早到达时间 和最晚离开时间来表示。特别地, 最早到达时间和最晚离开时间可以迭代计算得
到:
[0085]
[0086]
[0087] 这样对于开始节点为 结束节点为 的边e,移动对象在边上的最长时间段为[0088] 图2是根据图1计算得到的每条道路边上可能停留的最长时间,在同一时刻,移动对象可能在多条边的不同位置上。
[0089] 不确定轨迹数据的模型如上所述,将采用一系列的带有开始位置(时间)和结束位置(时间)的边来表示,将这样的边称为单元段,其表示公式为:
[0090]
[0091] 其中i=1,2,...,n,edgeId表示道路网络中边的唯一标识, 表示移动对象在该条边上的开始位置,用0~1之间的某个数表示与边的相对偏移位置, 表示移动对象在该条边上的结束位置,通常情况下 除了轨迹数据的起始点和结束点, 和分别表示最早到达道路边的时间和最晚离开道路边的时间。
[0092] 基于该不确定性轨迹模型,建立道路网络中基于划分的不确定轨迹的索引结构PUTI(Partition-based Uncertain Trajectory Index),该索引结构的框架图如图3所示:PUTI主要由两层R树和一层B+树组成。最顶层的R树用来索引道路网络划分的最小包容矩形,每个叶子节点中指向对应划分的结构信息和对应的时间段索引R树,叶子节点结构为,其中x1,y1,x2,y2表示划分的最小包容矩形,partitionId表示划分的唯一标示,可以用此标示找到对应划分的具体内容和在此划分上的时间段索引。第二层R树索引了移动对象在对应划分中运动的起止时间,其叶子节点结构为,ts,te分别表示标识为trajId移动对象进入划分的最早时间和离开划分的最晚时间。
[0093] 图4为该道路网络中基于划分的不确定轨迹的索引结构框架图的详细结构图,主要由边与划分的哈希表、划分组件、时间间隔组件和预计算距离组件构成。
[0094] 边与划分的哈希表:因为所有的位置都是以边的Id和偏移量给出的,需要一个哈希表来快速查询到给定位置所属的划分。哈希表可以直接放在内存中,便于快速查找。图4中edgeId表示道路中边的标识,取值从1到n;partitionId表示划分区域的标识,取值从1到p。
[0095] 划分组件:划分组件中记录了每个划分的边界点、与邻近划分的公共边界点等信息,并且指向对应的时间间隔组件。划分组件也可以存放在内存中。另外,对划分建立了R树,用来满足对空间划分范围进行限定的需求。图4中Pi表示标识为i的划分区域,i为自然数,bi表示划分区域中第i个边界点,i为自然数。
[0096] 预计算距离组件:预计算距离组件记录了各个划分中边界点之间的最短路径距离。预计算组件可以放在内存中也可以放在磁盘中,视道路网络的大小而定。图4中dist(bi,bj)表示边界点bi到边界点bj的最短路径距离。
[0097] 时间间隔组件:为了快速地确定候选的划分中是否包含满足条件的移动对象,维护了一个1D R树和B+树来组织时间段和对应路径的存储。通过R树叶子节点中的ts,te,trajId组成唯一标示,根据主键找到对应的值。值中存放的是该移动对象在划分中的所有轨迹单元段集合,及经过每条边的位置、时间和方向,如图4中表示:
[0098]    (6)[0099] 其中edgeId表示经过边的唯一标示,startTime表示到达边的最早时间,endTime表示离开边的最晚时间,startPosition表示开始位置,endPosition表示结束位置,direction表示移动对象运动的方向。
[0100] 本实施方式道路网络环境下不确定时空轨迹数据范围查询方法的主要实施过程如图5所示,主要分为建立道路网络索引结构、将轨迹数据插入该索引结构和范围查询三个步骤,其具体实施步骤如下:
[0101] (1)建立道路网络索引结构,该步骤由以下子步骤完成,其流程图如图6所示。
[0102] (1.1)利用多层k划分算法将道路网络划分成k个划分区域,k为自然数且根据地图的大小而定,使每个划分区域中边的长度总和近似相等。本步骤由可以分为以下子步骤:
[0103] (1.1.1)将道路网络地图抽象的图转为对应的线图,即将原图中的边转换成顶点,如果原图中的边共享一个端点,则在顶点之间加上边;
[0104] (1.1.2)以线图和k值作为多层k划分算法的输入,得到k个连续、平衡的划分,且划分之间连接最少。多层k划分算法可以采用METIS(参见http://glaros.dtc.umn.edu/gkhome/metis/metis/overview)基于启发式算法的公开图划分实现方法;
[0105] (1.1.3)将顶点转换成对应的边,就成功地将原图按照边划分成平衡的k个区域;
[0106] (1.2)通过步骤(1.1)中得到的划分与边的关系,将对应的划分与边插入哈希表,边与划分的哈希表构建成功;
[0107] (1.3)计算步骤(1.1)中任意两个划分区域中边的端点的交集来计算划分区域的边界点,并根据边界点的最小包容矩形建立空间二维R树索引,划分组件构建成功;
[0108] (1.4)利用迪杰斯特拉最短路径算法计算步骤(1.3)中每个划分中边界点之间的最短路径距离,预计算距离组件构建成功;
[0109] (1.5)对步骤(1.1)中每个划分建立一个空的时间段R树索引,并且对应每棵R树,建立B+树索引用来存储轨迹数据的详细信息,时间间隔组件构建成功。
[0110] (2)将轨迹数据插入该索引结构,该步骤由以下子步骤完成,如图7所示:
[0111] (2.1)初始化轨迹的首个采样点所在的边和当前划分;
[0112] (2.2)如果有下一个采样点,则计算当前采样点所在的边,否则结束;
[0113] (2.3)如果两个采样点在同一条边上,只有当是最后一个采样点时,以记录下的划分最早开始时间和当前采样点的时间戳作为划分的起止时间,将单元段集合和划分起止时间插入时间间隔组件,跳到步骤(2.2);
[0114] (2.4)如果两个采样点在相邻的边上,该步骤由以下子步骤完成:
[0115] (2.4.1)先计算移动对象离开前一条边的最晚时间:
[0116] tl(ep)=ni.timestamp-l(e)×ni.ratio/s(e)   (7)
[0117] 其中ni表示当前采样点,ni.timestamp表示当前采样点的时间戳,ni.ratio表示当前采样点在边e上的相对偏移位置,l(e)表示当前边e的长度,s(e)表示e的最大限速,ep表示前一个采样点所在的边,e表示当前采样点所在的边;
[0118] 再计算移动对象到达当前边的最早时间:
[0119] te(e)=l(ep)×(1-ni-1.ratio)/s(ep)+ni-1.timstamp   (8)
[0120] 其中ni-1.ratio表示当前采样点的前一个采样点在边ep上的相对偏移位置,ni-1.timestamp表示当前采样点的前一个采样点的时间戳,l(ep)表示前一条边ep的长度,s(ep)表示ep的最大限速,ep表示前一个采样点所在的边,e表示当前采样点所在的边;
[0121] (2.4.2)如果当前划分与当前边所在的划分不同,将划分中第一条边的最早到达时间和最后一条边的最晚离开时间作为划分的起止时间,和当前单元段集合一起插入时间间隔组件;
[0122] (2.5)如果两个采样点之间的可能路径大于一条,该步骤由以下子步骤完成:
[0123] (2.5.1)计算两个采样点在边中的位置,计算公式为:
[0124] sDist=(1-ni-1.ratio)*l(ep)   (9)
[0125] eDist=ni.ratio*l(e)   (10)
[0126] 其中sDist表示前一个采样点到第一个顶点的距离,eDist表示当前采样点到最后一个顶点的距离,ni.ratio表示当前采样点在边e上的相对偏移位置,ni-1.ratio表示当前采样点的前一个采样点在边ep上的相对偏移位置,l(ep)表示ep的长度,ep表示前一个采样点所在的边,e表示当前采样点所在的边;
[0127] (2.5.2)利用最小优先队列完成计算第一个顶点到最后一个顶点的所有可能路径,最大限制时间计算公式为:
[0128] tmax=ni.timestamp-ni-1.timestamp-sDist/s(ep)-eDist/s(e)   (11)[0129] 其中ni.timestamp表示当前采样点的时间戳,ni-1.timestamp表示当前采样点的前一个采样点的时间戳,sDist表示前一个采样点到第一个顶点的距离,eDist表示当前采样点到最后一个顶点的距离,s(ep)表示ep的最大限速,s(e)表示e的最大限速,ep表示前一个采样点所在的边,e表示当前采样点所在的边;
[0130] 利用最小优先队列完成计算第一个顶点到最后一个顶点所有可能路径的过程比较复杂,其流程图如图8所示,由以下子步骤完成:
[0131] (I)初始化空的优先队列。将第一个顶点、路径和时间0加入队列;
[0132] (II)如果队列为空,则结束;否则取出队列中时间最短的顶点;
[0133] (III)如果顶点是最后一个顶点,将当前路径加入结果集,跳到(II);否则,该过程结束;
[0134] (IV)访问该顶点的邻近边,如果该邻近边未被访问,且到达时间小于tmax,则将该顶点、路径和到达时间加入队列;
[0135] (2.5.3)计算可能路径中每个单元段的最早到达时间和最晚离开时间,将原轨迹转化为由若干单元段组成的不确定轨迹形式,并且标记路径是否被划分分割,其计算公式为:
[0136] tl(ei)=ti+1-∑i
[0137] te(ei)=ti+∑0<=j
[0138] 其中tl(ei)表示单元段的最晚离开时间,te(ei)表示单元段的最早到达时间,l(ei)表示边ei的长度,s(ei)表示ei的最大限速,0,…,n是两个采样点之间道路边的编号,ei、e表示划分中的边;
[0139] (2.6)将步骤2.5中的获得的不确定轨迹按照划分区域进行划分,该步骤可以由以下子步骤完成:
[0140] (2.6.1)如果前一个采样点所在边对应的划分与当前划分不同,则将单元段集合和划分起止时间插入时间间隔组件;
[0141] (2.6.2)处理第一个顶点和最后一个顶点之间的可能路径,如果最短路径或者该条可能路径被划分分割,则将该条可能路径作为独立的轨迹进行处理,直接将对应的单元段集合和划分起止时间加入时间间隔组件;否则与最短路径在一个划分的且没有被分割的路径与原轨迹加入同一个单元段集合;
[0142] (2.6.3)收集最短路径所在的单元段集合,如果最短路径被分割,则将最短路径与原轨迹作为单独轨迹处理;否则将最短路径的集合加入时间间隔组件;
[0143] (2.7)如果当前采样点是最后一个采样点,按照(2.3)进行处理。
[0144] (3)范围查询。范围查询的定义是查询在时间段(t1,t2)内可能经过与查询点Q的道路网络距离小于dr范围的所有移动对象,其公式表示为:
[0145] dr=s(e)×(t2-t1)   (14)
[0146] 其中s(e)表示边e的最大限速,t1和t2为输入的查询时间段的阈值,dr表示查询点的查询范围的距离界限值,e表示划分中的边。
[0147] 对于一个划分P={b1,b2,...,bn}、一个查询点q和一个距离界限值dr,如果划分中所有的边界点与q的最短路径距离都小于等于dr,则p是完全划分;如果划分中部分边界点与q的最短路径距离小于等于dr,则p是部分划分;如果划分中所有边界点与q的最短路径距离都大于dr,则p是无用划分,其中p为划分标记符。
[0148] 范围查询的过程由以下子步骤完成,其过程如图9所示:
[0149] (3.1)通过边与划分的哈希表确定输入的查询点Q所在的划分p;
[0150] (3.2)查询二维R树,得到欧氏空间下满足空间范围条件的划分;
[0151] (3.3)利用增量网络扩展(Incremental Network Expansion,INE)算法(参见D.Papadias,J.Zhang.Query processing in spatial network databases[C].In Proc.VLDB,2003,802-813.)计算划分p的边界点与查询点的距离信息;
[0152] (3.4)利用划分区域的边界点进行划分扩展,扩展算法利用最小优先队列进行,计算得到完全划分和部分划分,该步骤由以下子步骤完成,其过程如图10所示:
[0153] (A)初始化当前划分为查询点所在的划分p;
[0154] (B)初始化最小优先队列为空,将步骤3.3中计算得到的边界点及其与查询点的最短距离加入队列;
[0155] (C)如果队列为空,则跳到G;否则取出离查询点最近的边界点bc,得到bc所在的划分作为当前划分p;
[0156] (D)如果遍历完p中的所有边界点bi,则跳到C;否则利用公式:
[0157] dist_sum←distc+dist(bi,bc)   (15)
[0158] 计算该边界点更新的距离,其中dist_sum表示边界点更新的距离;distc表示边界点bc更新前离查询点的距离;dist(bi,bc)表示bi与bc的最短距离,bc为队列中离查询点最近的边界点,bi为划分p的边界点,i为自然数;
[0159] (E)如果dist_sum的值小于dr,则将边界点bi加入队列,否则跳到步骤F,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;dr为查询范围的道路网络距离限制;
[0160] (F)如果dist_sum小于bi的有效距离,则更新队列中的距离,否则跳到D,其中dist_sum表示边界点更新的距离;bi为划分p的边界点,i为自然数;
[0161] (G)根据划分中边界点与查询点的距离,标记完全划分和部分划分;
[0162] (3.5)如果只有一个无用划分,则只需要计算查询点Q所在划分,按照步骤(3.7)中处理部分划分的方法处理该无用划分,得到查询结果即可返回;
[0163] (3.6)对于步骤(3.4)中的完全划分,查询一维R树时间段索引得到满足时间范围的轨迹数据即为查询结果;
[0164] (3.7)对于步骤(3.4)中的每个部分划分需要先进行时间过滤后计算空间信息,该步骤由以下子步骤完成:
[0165] (3.7.1)查询一维R树时间段索引得到满足时间范围的轨迹数据候选集;
[0166] (3.7.2)根据R树中的得到的最早到达时间、最晚离开时间和轨迹标识组合得到单元段集合的键,通过B+树获得对应轨迹的单元段集合,获得划分中满足空间条件的边,将划分的边界点和查询点用虚拟的线连接,从查询点到边界点的花费为查询点到边界点的最短路径距离,这样就可以将求划分中满足空间条件的边问题转化为从查询点出发在划分中的INE算法。然后求出满足空间条件的边和单元段集合的交集,只要求出交集中的任意一条边同时满足startTime≤te和endTime≥ts,就可以认为该条轨迹数据满足查询条件。其中startTime表示移动对象到达单元段的最早时间,endTime表示移动对象离开单元段的最晚时间,ts表示所述输入的时间范围的开始时间,te表示所述输入的时间范围的结束时间;所有满足条件的轨迹数据组成部分划分的查询结果;
[0167] (3.8)最后将步骤(3.6)和(3.7)中的结果去重得到最终查询结果返回即可。