本发明涉及计算机大数据处理领域,具体为一种基于位图的轨迹编码方法。
背景技术:
交通管理、气象监控、移动计算等应用需要管理大量的时空数据,随着移动设备的普及、公共监管的发展和完善,移动计算和基于位置的服务出现了发展热潮,定位数据增长、定位精度的提高为研究定位数据提供了数据基础,也形成了海量的轨迹数据积累,例如,车辆gps的日均数据量(采样点)在千万到亿的数量级,轨迹数据的存储体积达到了pb数量级,因此轨迹数据的分析查询压力大,需要可行高效的查询方案。
位置数据的管理和查询按场景可以分为实时查询和历史数据查询两类,在历史轨迹查询方案中,有一种是基于空间数据库方案。现有的关系型数据库可以基于空间查询插件来实现管理空间数据的效果,但是,现有的拓展插件方案,例如postgis主要针对空间特征的计算和查询,擅长转换为平面几何关系的查询,而像移动设备产生的数据不仅带有空间信息,还有时间信息,轨迹不是理想的可以简单转换为用几何数据类型描述的数据,拓展方案中实现的空间索引也缺少为时空类型的查询问题的优化,例如时空条件组合的范围查询,对时空数据的支持还不完善。
通过移动设备的gps传感器或者专用定位方案(例如船舶自动识别系统ais),它们产生的位置采样点,与独立的位置点不同,具有时序关系和空间特征,在管理上也适合应用于轨迹模型进行数据挖掘,分析交通运输中的规律特征,提出路线推荐等应用,而轨迹在常规的数据库系统中没有对应的数据类型,但对轨迹数据的查询和存储有专门设计的索引技术和系统方案,例如seti和trajstore,另外,轨迹数据的提取与轨迹分析算法缺乏统一的环境支持,限制了海量轨迹数据的分析应用。
hadoop、spark是兴起的大规模数据计算分析的分布式计算方案,基于分布式计算实现大规模时空数据的分析是当前的热门问题,例如spatialhadoop、geospark是基于分布式计算平台实现空间数据分析的方案,它们实现的分布式索引方案能够支持点、多边形等空间类型数据的并行计算和查询,但是轨迹数据的查询、计算需求与常规的空间数据不同,它们支持的数据结构缺少对轨迹查询问题的直接支持。而另一方面,也有研究基于分布式平台实现的例如轨迹的knn查询方案,但是方案往往受限于解决个别的轨迹问题。
技术实现要素:
本发明的目的是为了克服上述不足提供一种基于位图的轨迹编码方法。
本发明基于位图的轨迹编码方法,包括以下步骤:
第1步:在预设的划分精度下,空间被划分为多个近似网格形状的子空间,每个网格空间得到一个唯一的标识;
第2步:将一条轨迹拆分成连续的轨迹段,逐个对所述轨迹段进行遍历,分别计算出与第1步中得到的网格空间中有共同位置关系的网格空间,从而得到所述轨迹对应的一组网格标识序列;
第3步:将第2步中得到的所述一组网格标识序列,进行去除重复项处理;
第4步:将第3步中进行去除重复项处理后的一组网格编码序列转换为一个位图格式数据。
所述第2步具体包括以下步骤:
第21步:对于一个所述轨迹段,找出属于该轨迹段的所有轨迹点,若轨迹点之间间隔超出划分网格空间时设置的最大距离,则插入补充点使新的轨迹段能被区域包围;
第22步:根据第21步中得到的每一个轨迹点,通过geohash算法取得该轨迹点在空间中的哈希编码;
第23步:搜集轨迹段在第22步中计算得到的所有哈希编码,转换为全局唯一、不重复的整数标识。
所述轨迹为一个连续的(x,y,t)的序列,(x,y)是空间坐标下的点,t是采样时间,表示(xi,yi,ti)在ti时刻移动物体的位置在(xi,yi),所述轨迹可以表示为trajectory=[(x1,y1,t1),...,(xi,yi,ti),...(xn,yn,tn)](t1<ti<tn);在某个时间范围[ti,tj]内,轨迹的某一部分运动过程与整体运动过程的关系可以用子轨迹表示。
所述轨迹段为轨迹中任意相邻两个采样点组成的轨迹段落,轨迹的采样点数量是n,则所述轨迹段ts=trajecotry(i,i+1)(1≤i<n)。
所述子轨迹为在定义的时间范围[ti,tj]内,由采样点组成的属于轨迹的部分运动过程,轨迹的采样点数量为n,子轨迹可以表示为
trajectory(i,j)=[(xi,yi,ti),(xi+1,yi+1,ti+1),......,(xj,yj,tj)],1≤i≤j≤n。
根据轨迹的所述位图格式数据进行关系判断的步骤如下:
第61步:两个空间物体,假设两条轨迹a、b,对应的位图格式数据分别为gea、geb;
第62步:将对应的位图格式数据gea、geb按位与运算;
第63步:计算位运算后位图结构中非零位的数量长度;编码重叠检测是基于轨迹编码的运算,计算了geb与gea位运算后的长度就是两个轨迹对应的重叠区域的数量;当它为0时,则完全不重合,当它不为0时,则两个编码相交。
第64步:a和b对应的编码在重叠检测计算找出重叠区域数量,其结果小于b的空间编码对应的区域数量大小,则两个编码交叉;a和b的重叠检测值与b的空间编码对应的区域数量相等,则两个编码包含的判断。
所述近似网格形状的子空间为在空间坐标系下,基于geohash算法将经度和纬度划分成间隔范围一致的数值区间。
所述预设模型或者为线性插值法,或者为根据运动规律和移动物体运动的知识库等其他非直线的路径,使用map-match算法在道路网络中获得更符合实际运动路径的结果。
本发明基于位图技术,使用位图数据结构的最大优点是节省存储空间和高计算效率,数据库使用位图索引对值域基数较小和固定的字段建立索引,计算速度快、存储空间小;位图技术还能利用cpu指令集的优化极大的提升计算效率;历史轨迹数据包含的空间位置是固定的,但是空间坐标的值域类型是浮点数,本发明通过设计编码,使轨迹数据的查询可以利用位图技术的优势而实现高效的轨迹数据分析。
附图说明
图1为本发明流程示意图。
具体实施方式
下面结合附图及实施例进一步说明本发明。
实施例:一条轨迹描述了移动目标的历史运动信息,轨迹是连续的运动过程,但却是通过采样点以时空点进行描述和存储,轨迹的采样点至少包括时间和空间信息。
一个连续的(x,y,t)的序列,(x,y)是空间坐标下的点,t是采样时间,表示(xi,yi,ti)在ti时刻移动物体的位置在(xi,yi),可以表示为
trajectory=[(x1,y1,t1),....,(xi,yi,ti),....(xn,yn,tn)](t1<ti<tn)。
轨迹一段较长的运动过程,它在某个时间范围[ti,tj]内,轨迹的某一部分运动过程与整体运动过程的关系可以用子轨迹表示。
轨迹trajectory在定义的时间范围[ti,tj]内,由采样点组成的属于轨迹的部分运动过程。轨迹的采样点数量为n,子轨迹可以表示为
trajectory(i,j)=[(xi,yi,ti),(xi+1,yi+1,ti+1),......,(xj,yj,tj)],1≤i≤j≤n。
现有系统通常采用r-树类型索引。其中,以最小外包矩形(mbr)对任意空间数据进行包围表示,存储不规则空间形状的物体。但是轨迹是近似一条折线,狭长的运动形状相对于mbr区域的面积几乎可以忽略,因此通过mbr空间重叠检测找到的轨迹不满足查询条件的概率较高,降低了查询的效率。因此,本发明首先将空间划分成较小面积的区域,划分空间的方法有较多选择,但是划分空间与数据分布相关性大,划分结果缺乏一致性,例如基于固定参数来进行网格索引,或者通过quad-tree的有动态特性的基于数据规律划分区域的方法,但是以上方法可能随着空间点的变化导致划分区域与粒度不一致,从而对同一轨迹的表示不能统一。本发明基于
geohash算法对空间的划分,geohash是能够对经度[-90,90]纬度[-180,180]之间的空间坐标进行统一的处理,其参数简单,容易保持轨迹表示的一致性。
轨迹中任意相邻两个采样点组成的轨迹段落(ts),轨迹的采样点数量是n,则ts=trajecotry(i,i+1)(1≤i<n)。
轨迹采样点的采样频率与采样间隔不一致,当轨迹的相邻两个采样点的距离和采样时间大于临界条件,在识别轨迹算法中,会根据此条件将采样点序列分拆建立独立的轨迹;当采样间隔等条件都在临界条件下,本发明将处理采样点的距离与空间划分区域范围的关系,使轨迹经过的区域编号序列是相邻连续的。
将轨迹经过的所有区域序列计算出来的过程称之为轨迹编码算法。
给定一条轨迹trajectory,它所有的采样点转换为以位图数据结构存储的比特集合,其中的元素是轨迹经过的空间区域的编号,ge(trajectory)=[gidi,gidi+1,......gidj]。
轨迹编码对应的算法如下:
1.在预设的划分精度下,空间被划分为多个近似网格形状的子空间,每个网格空间得到一个唯一的标识。
2.对一条轨迹,通过遍历它所包含的轨迹段,分别计算出与1中得到的网格空间中有共同位置关系的网格空间,从而得到轨迹对应的一组网格标识序列。
3.将2中得到的一组网格标识序列,去除重复项。
4.将3中处理的一组网格编码序列转换为一个位图格式数据。
经过以上步骤,轨迹最终以位图格式数据表示,以上处理过程的第二步是计算和处理的关键步骤,解决如何根据每个采样点找到对应划分区域的问题,这个过程按以下步骤处理,它将轨迹点所属的区域以整数编码返回。
1.对于一个轨迹段,找出属于该轨迹段的所有轨迹点,若轨迹点之间间隔超出划分网格空间时设置的最大距离,则插入补充点。
2.根据1中得到的每一个轨迹点,通过geohash算法取得该轨迹点在空间中的哈希编码。
3.搜集轨迹段在2中计算得到的所有哈希编码,转换为全局唯一、不重复的整数标识。
一般情况下,划分结果的每个网格区域的空间范围大于轨迹采样点之间的距离,由于轨迹的包含的轨迹点的间隔距离可能超出了网格区域的范围,为了使转换得到的序列在空间上是连续的,由预先设置的模型决定,通过插入补充点,补足一条轨迹段的间隔,在完成对轨迹的转换处理后,通过设计基于这种编码数据的基本操作,可以逐步拓展到高级应用中,基于轨迹编码的位图格式数据,其基本计算操作是:重叠、交叉和包含。
根据轨迹的位图格式数据进行关系判断的步骤如下:
1.两个空间物体,假设两条轨迹a、b,对应的位图格式数据分别为gea、geb。
2.将对应的位图格式数据gea、geb按位与运算。
3.计算位运算后位图结构中非零位的数量长度。
编码重叠检测是基于轨迹编码的运算,计算了geb与gea位运算后的长度就是两个轨迹对应的重叠区域的数量。当它为0时,则完全不重合,当它不为0时,就可以判断两个编码相交。类似的,可以拓展到判断交叉和包含关系。根据空间关系定义,交叉是指两个空间物体a和b有交集,但是b有一部分区域不属于a经过的区域,例如:a和b对应的编码在重叠检测计算找出重叠区域数量,其结果小于b的空间编码对应的区域数量大小;而包含关系是指两个空间物体有交集,而且一个被另一个完全包含,例如:a和b的重叠检测值与b的空间编码对应的区域数量相等,因此在编码重叠加测的基础上,多加一次关系判断即可实现交叉和包含的判断。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。