1.一种基于倒排序索引及前缀树的轨迹索引建立方法,其特征在于,包括如下步骤:步骤1:获取车辆所在城市的路网数据和车辆的原始轨迹数据,所述路网数据包括多个路段和每个路段的路段id,所述原始轨迹数据包括多条原始轨迹和每条原始轨迹的原始轨迹id,并对原始轨迹数据进行预处理;
步骤2:将路网数据匹配到步骤1进行预处理后得到的原始轨迹数据上,获得原子轨迹数据,所述每条原子轨迹包括路段id、原始轨迹id和属性特征;
步骤3:将原始轨迹id相同的原子轨迹作为一组,获得多组原子轨迹;
对每组原子轨迹进行判断,若该组中连续三个及以上的原子轨迹的属性特征相同,则将该组原子轨迹作为一个轨迹段,获得轨迹段数据,所述每个轨迹段包含一个原始轨迹id和一个路段id序列,每个轨迹段的路段id序列为该轨迹段所包含的所有原子轨迹对应的路段id的集合;
步骤4:根据步骤1得到的每个路段生成一棵前缀树;获取步骤3得到的所有轨迹段的原始轨迹id、所有路段id序列中的路段和所有路段id序列中每个路段在其所在路段id序列中的序号,将每个路段所对应的原始轨迹id和该路段在其所在路段id序列中的序号插入该路段的前缀树中得到有序前缀树,获得每个路段对应的有序前缀树,将全部有序前缀树作为轨迹索引库。
2.如权利要求1所述的基于倒排序索引及前缀树的轨迹索引建立方法,其特征在于,步骤2中采用基于HMM模型的地图匹配方法将路网数据匹配到步骤1进行预处理后得到的原始轨迹数据上。
3.如权利要求1所述的基于倒排序索引及前缀树的轨迹索引建立方法,其特征在于,步骤4中将每个路段所对应的原始轨迹id和该路段在其所在路段id序列中的序号插入该路段的前缀树中得到有序前缀树,包含如下步骤:步骤a1:取前缀树的根节点为当前节点;
步骤a2:获取每个路段所对应的原始轨迹id的年月日、时、秒、车牌号和该路段在其所在路段id序列中的序号分别作为字符P1,P2,P3,P4,P5;
步骤a3:获取新节点Pi并令Pi=P1,将Pi与当前节点的所有子节点进行比较,如果有与Pi相同的子节点则将该子节点设为当前节点并执行步骤a4;如果没有与Pi相同的子节点则将Pi与当前节点的所有子节点一起排序,按序将Pi插入为新子节点,并将Pi设为当前节点并执行步骤a4;
步骤a4:如果i=5,则生成完成,获得有序前缀树;否则Pi=Pi+1,返回步骤a3。
4.如权利要求1所述的基于倒排序索引及前缀树的轨迹索引建立方法,其特征在于,轨迹索引库更新时采用如下方法:
步骤b1:获取新产生的轨迹数据,对新产生的轨迹数据执行步骤1至步骤3,最后得到更新轨迹段数据;
步骤b2:对更新轨迹段数据经过的路段生成更新前缀树;获取更新轨迹段数据中包含的路段id,从数据库中查询相同路段对应的有序前缀树,将该有序前缀树与生成的更新前缀树做并集运算,得到更新后的有序前缀树,随后将更新后的有序前缀树覆盖掉数据库中与其路段id相同的有序前缀树,索引更新完成。
5.一种轨迹查询方法,其特征在于,包括如下步骤:步骤Ⅰ:获取目标路段集合以及查询时间范围,所述目标路段集合包括起点路段、终点路段和中间路段;
步骤Ⅱ:按照如权利要求1‑4所述的任一种基于倒排序索引及有序前缀树的轨迹索引建立方法获得轨迹索引库,从轨迹索引库中查询并获得起点路段、终点路段和查询路段所对应的所有有序前缀树;
步骤Ⅲ:根据查询时间范围对步骤Ⅱ获得的所有有序前缀树进行裁剪,剪切掉不符合时间范围的有序前缀树,保留符合查询时间范围的有序前缀树集合(T1,T2,...,Tn),其中T1为起点路段对应的有序前缀树,Tn为终点路段对应的有序前缀树,令T1与有序前缀树集合中除T1外的所有有序前缀树分别做交集运算,最终交集后的T1即为目标路段集合的有序前缀树;
步骤Ⅳ:将步骤Ⅲ得到的目标路段集合的有序前缀树还原,得到查询时间范围内经过目标路段的所有轨迹段id序列。
6.一种基于倒排序索引及前缀树的轨迹索引建立系统,其特征在于,包括数据采集模块、轨迹划分模块、轨迹段生成模块和前缀树生成模块;
所述数据采集模块用于获取车辆所在城市的路网数据和车辆的原始轨迹数据,所述路网数据包括多个路段和每个路段的路段id,所述原始轨迹数据包括多条原始轨迹和每条原始轨迹的原始轨迹id,并对原始轨迹数据进行预处理;
所述轨迹划分模块用于将路网数据匹配到步骤1进行预处理后得到的原始轨迹数据上,获得原子轨迹数据,所述每条原子轨迹包括路段id、原始轨迹id和属性特征;
所述轨迹段生成模块用于将原始轨迹id相同的原子轨迹作为一组,获得多组原子轨迹;对每组原子轨迹进行判断,若该组中连续三个及以上的原子轨迹的属性特征相同,则将该组原子轨迹作为一个轨迹段,所述每个轨迹段包括一个原始轨迹id和路段id序列,获得轨迹段数据;
所述前缀树生成模块用于根据数据采集模块得到的每个路段生成一棵前缀树;获取步骤3得到的所有轨迹段的原始轨迹id、所有路段id序列中的路段和所有路段id序列中每个路段在其所在路段id序列中的序号,将每个路段所对应的原始轨迹id和该路段在其所在路段id序列中的序号插入该路段的前缀树中得到有序前缀树,获得每个路段对应的有序前缀树,将全部有序前缀树作为轨迹索引库。
7.如权利要求6所述的基于倒排序索引及前缀树的轨迹索引建立系统,其特征在于,采用基于HMM模型的地图匹配方法将路网数据匹配到进行预处理后得到的原始轨迹数据上。
8.如权利要求6所述的基于倒排序索引及前缀树的轨迹索引建立系统,其特征在于,将每个路段所对应的原始轨迹id和该路段在其所在路段id序列中的序号插入该路段的前缀树中得到有序前缀树,包含如下步骤:步骤a1:取前缀树的根节点为当前节点;
步骤a2:获取每个路段所对应的原始轨迹id的年月日、时、秒、车牌号和该路段在其所在路段id序列中的序号分别作为字符P1,P2,P3,P4,P5;
步骤a3:获取新节点Pi并令Pi=P1,将Pi与当前节点的所有子节点进行比较,如果有与Pi相同的子节点则将该子节点设为当前节点并执行步骤a4;如果没有与Pi相同的子节点则将Pi与当前节点的所有子节点一起排序,按序将Pi插入为新子节点,并将Pi设为当前节点并执行步骤a4;
步骤a4:如果i=5,则生成完成,获得有序前缀树;否则Pi=Pi+1,返回步骤a3。
9.如权利要求6所述的基于倒排序索引及前缀树的轨迹索引建立系统,其特征在于,轨迹索引库更新时采用如下方法:
步骤b1:获取新产生的轨迹数据,对新产生的轨迹数据执行步骤1至步骤3,最后得到更新轨迹段数据;
步骤b2:对更新轨迹段数据经过的路段生成更新前缀树;获取更新轨迹段数据中包含的路段id,从数据库中查询相同路段对应的有序前缀树,将该有序前缀树与生成的更新前缀树做并集运算,得到更新后的有序前缀树,随后将更新后的有序前缀树覆盖掉数据库中与其路段id相同的有序前缀树,索引更新完成。
10.一种轨迹查询系统,其特征在于,包括输入模块、前缀树查询模块、前缀树剪裁模块、轨迹查询模块;
所述输入模块用于获取目标路段集合以及查询时间范围,所述目标路段集合包括起点路段、终点路段和中间路段;
所述前缀树查询模块用于按照如权利要求6‑9所述的任一种基于倒排序索引及有序前缀树的轨迹索引建立系统获得轨迹索引库,从轨迹索引库中查询并获得起点路段、终点路段和查询路段所对应的所有有序前缀树;
所述前缀树剪裁模块用于根据查询时间范围对步骤Ⅱ获得的所有有序前缀树进行裁剪,剪切掉不符合时间范围的有序前缀树,保留符合查询时间范围的有序前缀树集合(T1,T2,...,Tn),其中T1为起点路段对应的有序前缀树,Tn为终点路段对应的有序前缀树,令T1与有序前缀树集合中除T1外的所有有序前缀树分别做交集运算,最终交集后的T1即为目标路段集合的有序前缀树;
所述轨迹查询模块用于将前缀树剪裁模块得到的目标路段集合的有序前缀树还原,得到查询时间范围内经过目标路段的所有轨迹段id序列。