买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于LZW算法的GPS轨迹数据的压缩方法_同济大学_201810920643.6 

申请/专利权人:同济大学

申请日:2018-08-14

公开(公告)日:2022-04-15

公开(公告)号:CN109286399B

主分类号:H03M7/30

分类号:H03M7/30;G06F16/29

优先权:

专利状态码:有效-授权

法律状态:2022.04.15#授权;2019.03.01#实质审查的生效;2019.01.29#公开

摘要:本发明涉及一种压缩算法,具体为一种基于LZW算法的GPS轨迹数据的压缩方法,本方法将传统的轨迹数据结合路网信息,通过地图匹配的办法将原始轨迹数据转化为使用路段序列表示的轨迹数据,之后为了便于处理,自定义一种编码规则将路段轨迹数据转化成文本类型的数据,最后利用LZW压缩算法对转化后的文本类型的轨迹数据进行压缩和解压缩。本发明通过运用地图匹配、映射轨迹、路段号转换等处理方法,将轨迹数据转化成文本数据的形式,从而可以使用LZW算法对其进行压缩。与其它算法相比,本方法在保证运行效率的同时,保证了压缩率。

主权项:1.一种基于LZW算法的GPS轨迹数据的压缩方法,其特征在于:将传统的轨迹数据结合路网信息,通过地图匹配的办法将原始轨迹数据转化为使用路段序列表示的轨迹数据,之后为了便于处理,自定义一种编码规则将路段轨迹数据转化成文本类型的数据,最后利用LZW压缩算法对转化后的文本类型的轨迹数据进行压缩和解压缩;包括如下步骤:步骤1获取GPS轨迹数据原始的GPS轨迹数据包括了时间戳time、位置坐标的经纬度longitude和latitude以及轨迹的IDtid;步骤2地图匹配使用地图匹配的相关方法将步骤1获取的GPS轨迹数据映射到地图上得到了用路段序列表示的轨迹数据;步骤3建立倒排表通过步骤2地图匹配后,将轨迹表示成一个路段的序列p1→p2→…→pn,pn∈S,S是路网路段集合;以所有的路段的标号作为字符集,对路段的索引进行格式转换;为了处理的便利,需用建立倒查表,从路段倒查经过这个路段的所有轨迹的标号;步骤4轨迹路段号的转换由于步骤3中路段号定义为一个整数,为了便于压缩处理,我们自定义一种方法将其转化为字符串,因为一个字符为8位,不够存储所有的字段号,需要将路段号转化成更高位数的“字符”即多位字符串;步骤5利用LZW算法进行压缩将经过步骤4转化后的轨迹数据集合通过LZW算法进行压缩,从而实现了对轨迹数据的压缩功能;压缩算法具体步骤如下:步骤1.开始时字典是只包含所有标准字符集的初始字典;定义现码序列current_seq,后置码变量next_char,输出字符串变量output步骤2.将需要压缩的字符串s中下一个带压缩字符赋值给后置码变量next_char步骤3.当进入判断:current_seq+next_char是否在字典里1如果“是”,则将current_seq+next_char赋值给current_seq2如果“否”,则对current_seq进行编译后添加到输出变量output中,并把current_seq+next_char添加到字典里作为一个新的编码序列;最后把next_char赋值给current_seq步骤4.当进入判断:字符串s是否全部被取出1如果“是”,则对current_seq进行编译后添加到输出变量output中,输出output,压缩过程结束;2如果“否”,返回步骤2所述的解压缩算法具体步骤如下:步骤1.开始时字典是只包含所有标准字符集的初始字典;定义前置码previous_code,现码current_code,输出变量output步骤2.将需要解压的编码序列s中下一个带压缩字符赋值给前置码previous_code,通过字典解压后添加到output;步骤3.当进入判断:编码序列s是否全部被解压1如果“是”,获得解压结果output,解压过程结束2如果“否”,则将s中下一个需要解压的编码赋值给current_code,并通过字典把current_code解压后添加到output;对previous_code进行解码后连同current_code解码后的第一个字符作为一个新的编码序列添加到字典中;把previous_code和current_code进行合并后储值给previous_code;返回步骤3。

全文数据:基于LZW算法的GPS轨迹数据的压缩方法技术领域本发明涉及一种压缩算法。背景技术基于位置信息location-acquisition的技术的发展,我们可以获得大量的轨迹信息,代表了行人,车辆,野生动物,飓风等移动信息。轨迹数据属于时空数据spatiotemporaldata[1]的一种,一条轨迹记录了移动物体在一连串采样时间下的位置信息。比如一个物体的移动轨迹为:p1p2…pn,每个点包含了移动物体的地理位置坐标和时间戳信息,如p=x,y,t。轨迹信息可以帮助我们更好地了解移动物体的行为特点,促进了基于位置的应用,智能传输网络,智慧城市的发展。这些应用的流行,反过来刺激了轨迹数据挖掘的研究,轨迹数据挖掘已经逐渐成为跨学科的重要的研究领域,吸引了大量领域如计算机科学,社会学,地理学的关注。设备如手机,平板等的广泛使用,使得我们可以得到大量的刻画物体运动的时空数据。据统计,如果我们每隔15秒采集一次GPS数据,每天产生8亿条数据,一个月3T的数据量。随着采集设备和应用的增加,以及时间的推移,数据量的增长难以想象,大量的数据使得存储,查询,分析和通信造成困难。由于轨迹数据一般数量巨大,并且很多点是冗余重复和噪声点,为了储存并传输轨迹数据,应用必须拥有较大的储存空间和传输速率,而这对于一些耗电量和成本敏感的传感器网络来说较难做到。因此,对轨迹数据的压缩成为轨迹数据挖掘的一个研究热点。根据输入的轨迹数据的不同,目前常见的轨迹压缩算法一般分为三类:离线压缩,在线压缩,基于语义的压缩。顾名思义,离线压缩是在轨迹数据完全获得以后进行的压缩,在线压缩是随着物体的移动,实时地进行压缩,而基于语义的压缩利用了轨迹的一些具有语义含义的特殊点进行压缩。离线压缩:给定一条包含一系列完整带有时间戳的点的轨迹,离线压缩算法目标是在误差范围内,舍弃一些点,生成一条近似轨迹。算法的思路类比线简化问题linesimplificationproblem,而线简化问题在计算机图形学和制图学方面已经有了成熟的研究。一个经典的算法是Douglas-Peucker[2],广泛用于曲线化直问题。原始的Douglas-Peucker时间复杂度为ON2,N为轨迹点的个数,它的优化版本的时间复杂度为ONlogN,为了保证生成的近似估计是最优的,Bellman提出了一种动态规划的算法,时间复杂度为ON3。[3,4]中对轨迹点的角度进行范围限制,在一定的最大误差范围内对轨迹点进行压缩。在线压缩:许多应用要求轨迹传输是实时的,许多在线压缩算法处理新获取的数据来决定是否将其保留在压缩轨迹中。主要有两类在线压缩算法,一种是基于窗口window的算法,比如滑动窗口SlidingWindow算法[5]和开窗口OpenWindow算法[6],另一种主要基于移动物体的速度和方向。基于语义的压缩:在对轨迹进行压缩时,尽量保留其语义信息。比如,对于一条行人的游玩轨迹,行人的停留点,拍照点,方向剧烈转换的点比起其他的点,显然有更重要的语义含义。另外有一系列的研究,考虑了在路网约束下的轨迹压缩问题。比如,在同一条路上,我们可以去除一些冗余的点。这些研究需要地图匹配map-matching算法的支持。2014年,PRESS[7]算法将轨迹的时间信息和空间信息分开处理并压缩,对于空间信息,使用频繁序列模式挖掘和霍夫曼树,将出现更频繁的轨迹用更短的霍夫曼编码,节省了存储空间。[8]中根据路网计算任意路段之间的最短路径,并以此进行压缩和解压缩。轨迹数据存在的重复性,使压缩有了用武之地。LZW是一种利用数据重复性的压缩算法,常被用于文本序列的压缩。原始版本的LZW压缩算法由Lempel和Ziv与1978年提出,而后被Welch在1984年进一步修改。于是LZW算法取自他们三人姓名的首字母。LZW压缩算法是一种基于“字典”的压缩算法,通过查找字典来编码数据。LZW压缩算法虽然经常被用于压缩文本文件,但其实对于文件类型并没有特定要求。不过,LZW压缩算法在具有大量重复性子串的文本文件中表现最好。利用LZW进行移动轨迹压缩的方法并不多见,[9-10]中利用道路交通特征参考序列来计算空间上的道路交通差值数据,并对该差值数据进行LZW压缩和解压缩。发明内容思想方法:在本发明中,我们结合路网信息,将移动轨迹数据匹配在路网地图上,根据路网上的路段信息对原始轨迹以LZW算法进行压缩和解压缩。相较于其它算法来说,本方法在保证运行效率的同时,保证了压缩率。技术方案步骤1获取GPS轨迹数据原始的GPS轨迹数据,包括了时间戳time、位置坐标的经纬度longitude和latitude以及轨迹的IDtid。步骤2地图匹配使用地图匹配的相关方法将步骤1获取的GPS数据映射到地图上得到了匹配路网轨迹数据。步骤3建立倒排表对于经过步骤2匹配后的的轨迹数据,将轨迹定义成一个路段的序列p1→p2→…→pn,pn∈S。S是路网路段集合。我们以所有的路段的标号作为字符集,显然,路段的标号可能很大,超过ASCII定义的256大小。所以,需要对路段的索引进行合适的格式转换。为了处理的便利,我们还建立了倒查表,可以从路段倒查经过这个路段的所有轨迹的标号。步骤4轨迹路段号的转换由于步骤3中路段号定义为一个整数,为了便于步骤5LZW算法的处理,我们将其转化为字符,而且一个字符为8位,不够存储所有的字段号,需要将路段号转化成更高位数的“字符”。即对一个路段号,如果他超出了8位字符的表达范围≥255,按8位255对该整数取模,每次添加一个chrrange0,255的字符,直到最后一位chr在0~255范围内。这就将路段号转化成更高位数的“字符”组合字符。需用解码时只要以8位为一个单位遍历字符,对每一个8位字符还原成对应的整数。经过“字符”转化后的路网路段集合更便于接下来的压缩工作。步骤5利用LZW算法进行压缩将经过步骤4转化后的轨迹数据集合通过LZW算法进行压缩,从而实现了对轨迹数据的压缩功能。解压缩同样可以通过LZW算法实现。以上本发明方法方案的创新在于将LZW算法应用于轨迹数据的压缩工作。一般而言,LZW算法常用于文本数据的压缩。本发明通过运用地图匹配、映射轨迹、路段号转换等处理方法,将轨迹数据转化成文本数据的形式,从而可以使用LZW算法对其进行压缩。附图说明图1LZW压缩流程图图2词典图3LZW压缩过程实例图4LZW解压缩流程图图5LZW解压缩过程举例图6轨迹数据基于LZW的编解码算法流程图具体实施方式以下结合附图,对各大步骤涉及的相关技术详解如下:步骤2地图匹配地图匹配是一个将原始经纬度序列转化为地图上路段序列的过程。车辆运行在地图上哪一个路段上的信息对于评估交通流、车辆导航、预测车辆走向、检测从起点至终点最频繁路径有着重要的作用。地图匹配可以选择以下几种本领域常用方法:1几何匹配算法:主要考虑路网上一条线段individuallink的形状,比如说,把一个GPS点映射到最近的路上。2拓扑匹配算法:主要考虑路网的连通性。比如说使用Fréchet距离来度量GPS序列与候选路段序列的相似度。3概率匹配算法:考虑到轨迹点存在噪音或者采样率过小,对噪音点做一个精确规定explicitprovisions,并且考虑多条候选可能路段,从中选概率最大的路段。步骤4,轨迹路段号的转换由于路段号定义为一个整数,为了便于步骤5LZW算法的处理,我们将其转化为字符,但是一个字符为8位,不够存储所有的字段号,需要将将路段号转化成更多位数的“字符”。首先介绍几个概念:1、序数值ordinalvalue:一个char八位在字典中ASCII簿的序数值。可以使用ord函数将字符转换为对应的序数值,如ord‘1’=49,ord‘a’=97,ord‘A’=65。对应的,可以使用chr函数,将序数值转换为对应的字符,如chr49=’1’,chr97=’a’,chr65=’A’。2、编码:对一个整数,如果他超出了8位字符的表达范围≥256,按8位255对该整数取模,每次添加一个chrrange0,255的字符,直到最后一位chr在0~255范围内。3、解码:以8位为一个单位遍历字符,对每一个8位字符还原成对应的整数。编码步骤:步骤1.输入路段号SegInt,把SegInt赋值给变量tmp。定义字符串变量SegChar储存编码生成的字符串步骤2.当进入判断:tmp是否大于等于2551如果“是”,tmp对255取模,并把结果赋值到变量r中;通过chr函数把数字r转化为对应的字母,并添加到SegChar中;tmp除以255取整后赋值给tmp,返回步骤2。2如果“否”,进入步骤3。步骤3.通过chr函数把tmp转化为对应的字母,并把结果添加到将SegChar中。步骤4.输出SegChar,结束编码过程解码步骤:步骤1.输入字符串变量SegChar,初始化路段号SegInt=0,及计数变量i=0步骤2.从SegChar中右取一个未被解码的字母,通过ord函数将其转化成对应的数字,并将赋值给变量ordValue。步骤3.通过公式SegInt=SegInt+ordValue*2^8*i计算出新的SegInt步骤4.进入判断i是否小于字符串SegChar的长度1如果“是”,i+1赋值给i,返回步骤2。2如果“否”,输出解码后的路段号SegInt,结束解码过程。具体的编解码算法流程图见图6。步骤5LZW算法经典算法包括LZW压缩算法和LZW解压算法两部分。LZW使用一个含有2568位个字符的字典作为初始字典,并将这些字符作为标准字符集一般是ASCII字符集。随后,每次读入一个字符8位,将数据编码成字典中对应索引的数字。每次如果读入的是一个新遇见的字符串,就帮它加入字典中,增加一条新的索引;每次如果读入的一个已经遇见过的字符串,将再读入一个字符,将这个字符添加到先前字符的后面,组成一个新字符串。重新考量这个新字符串,重复进行先前的操作。显而易见的是,随着新的字符串不断被发现,索引也会越来越大。如果原数据过大,生成的字典也会过大,这时候操作这个字典就会产生效率问题。所以,当字典过大时,我们干脆清零后重新开始,重新构造字典。理论上,字典越大,压缩比越高,但开销也越高。对于GIF压缩来说,采用了变长的字长。如果原始数据是8位,字典的字长开始是9位8位+1位,当索引大于51229时,增加一位,以此类推,一共可以增加到12位212,也就是4096。压缩算法流程图如图1所示。压缩的具体步骤如下:步骤1.开始时字典是只包含所有标准字符集的初始字典。定义现码序列current_seq,后置码变量next_char,输出字符串变量output步骤2.将需要压缩的字符串s中下一个带压缩字符赋值给后置码变量next_char步骤3.当进入判断:current_seq+next_char是否在字典里1如果“是”,则将current_seq+next_char赋值给current_seq2如果“否”,则对current_seq进行编译后添加到输出变量output中,并把current_seq+next_char添加到字典里作为一个新的编码序列。最后把next_char赋值给current_seq步骤4.当进入判断:字符串s是否全部被取出1如果“是”,则对current_seq进行编译后添加到输出变量output中,输出output,压缩过程结束。2如果“否”,返回步骤2举例来说,压缩字符串banana_bandana,首先用字符串的字符集构造初始字典,索引从0开始,字典如图2所示。首先读入第一个字符“b”,由于“b”不是第一次遇见,在初始字典中已经有“b”所对应的索引,不进行操作,接下来读入第二个字符“a”,现在的字符串包括刚刚读入的“a”和上一次的“b”,所以是“ba”,这个字符串在字典中是没有的,所以将“b”编码输出1,并将“ba”加入字典,索引为5。继续读入下一个字符“n”,现在要观察的字符串是“an”由于“b”已经被编码输出了,加入字典中,索引为6。重复读入数据,直到读入最后一个字符“a”,这时我们要观察的字符串是“ana”,对应的索引是8,由于已经读到字符串末尾,所以直接将“ana”编码输出8。上述例子的压缩过程见图3。解压过程与压缩过程类似,与静态压缩相比,在解压过程中不需要用到压缩过程中产生的字典,可以减少存储字典或其他信息带来的损耗。不过,解压和压缩过程必须有一个相同的初始字典,一般会以256个ASCII集作为初始字典。当LZW解压算法第一次读入一个索引时整数,在字典中查找其对应的值,并输出。随后把这个对应的字符串的第一个字符添加到当前working字符串的末尾,把这个字符串添加到字典中。于是,上一次解压的字符串变成当前working字符串,重复进行这个过程。解压缩算法流程图如图4所示。具体步骤如下:步骤1.开始时字典是只包含所有标准字符集的初始字典。定义前置码previous_code,现码current_code,输出变量output步骤2.将需要解压的编码序列s中下一个带压缩字符赋值给前置码previous_code,通过字典解压后添加到output。步骤3.当进入判断:编码序列s是否全部被解压1如果“是”,获得解压结果output,解压过程结束2如果“否”,则将s中下一个需要解压的编码赋值给current_code,并通过字典把current_code解压后添加到output;对previous_code进行解码后连同current_code解码后的第一个字符作为一个新的编码序列添加到字典中;把previous_code和current_code进行合并后储值给previous_code;返回步骤3。举一个解压缩的例子。解压“1036045328”,第一次先读入1,查找字典并输出b,这时候读入0,查字典得a,这时候将a添加到b的后面得“ba”,添加入字典中,索引编号为5,此时的working字符串替换为a,读入3,查字典得n,将n添加到a后面,得到an,添加进字典中,索引编号为6,重复进行这个过程,直到压缩文件读入完毕。上述举例的解压缩具体过程如图5所示。以下给出实施例进一步说明。实施例11.获取GPS轨迹数据原始的轨迹数据见表1和表2包括了时间戳time、位置坐标的经纬度longitude和latitude以及轨迹的IDtid。表1原始轨迹数据格式表2原始轨迹数据举例2.地图匹配匹配路网轨迹是原始轨迹数据进行地图匹配后匹配到路网上以后的轨迹数据。我们使用了论文[11]中的方法将GPS数据映射到地图上得到了匹配路网轨迹数据。匹配后的数据表4中包含的字段含义如表格3所示。表3匹配路网轨迹数据格式表4匹配路网轨迹数据举例3.轨迹数据解压缩3.1轨迹数据压缩3.1.1把所有Segs中的路段号整合成一个集合,去重,按位置求序数值作为blockId3.1.2建立倒排表表5倒排表格式举例3.1.3把所有Segs中长度大于等于width的子序列且满足一定条件的子序列赋新的blockId,并且替换所有Segs中的子序列。3.1.4匹配后的路网轨迹数据作为输入,通过LZW压缩算法输出压缩后的压缩轨迹文件xxx.csv和字典文件xxx.blk。压缩轨迹文件xxx.csv格式为:[tid,blockIds,length]从第二个元素到倒数第二个元素,是压缩后的路段的十六进制的表示。我们把压缩后的轨迹称为block,block的id用十六进制表示,可以通过blockid来查找原路段的id,进行解压缩。如[1,[1,2,3,4,5,6,8,9,10],9]对应的压缩轨迹为:['1','\x01','\x03','\x02','\x05','\x04','\x07','\t','\x08','\x00','9']字典文件xxx.blk是压缩过程中生成的索引文件,存储了路段号。格式为:[m+segId0+segId1+…+segIdm+recurId1+…recurIdx]注:segId0:第0个block对应的SegId。例:25044;recurId1:递归的blockId。例:“_\x05,_\x06”如对于轨迹:[1,2,3,4,5,6,8,9,10],对应的索引数据为:10+10+1+3+2+5+4+7+6+9+8。3.2解压3.21输入数据:压缩文件格式:xxx.csv;字典文件格式:xxx.blk3.22解压流程如压缩轨迹'\x01','\x03','\x02','\x05','\x04','\x07','\t','\x08','\x00'进行解压缩,”\x01”对应1,”\x03”对应2,可解压出原始轨迹[1,2,3,4,5,6,8,9,10]。参考文献:1.刘大有,陈慧灵,齐红,&杨博.2013.时空数据挖掘研究进展.计算机研究与发展,502,225-239.2.Poiker,T.,&Douglas,D.H.1973.ReflectionEssay:AlgorithmsfortheReductionoftheNumberofPointsRequiredtoRepresentaDigitizedLineoritsCaricature.ClassicsinCartography:ReflectionsonInfluentialArticlesfromCartographica.JohnWiley&Sons,Ltd.3.孙未未,宋壬初.一种最大误差可控的轨迹数据压缩方法:,CN103795417A[P].2014.4.邓泽,王力哲,韩伟,等.一种移动轨迹数据压缩方法及装置:,CN106788448A[P].2017.5.J.Keogh,S.Chu,D.Hart,andM.J.Pazzani.2001.Anon-linealgorithmforsegmentingtimeseries.InProceedingsoftheIEEEInternationalConferenceonDataEngineering.IEEE,289–2966.Meratnia,N.,&Rolf,A.2004,March.Spatiotemporalcompressiontechniquesformovingpointobjects.InInternationalConferenceonExtendingDatabaseTechnologypp.765-782.SpringerBerlinHeidelberg.7.Song,W.Sun,B.Zheng,andY.Zheng.2014.PRESS:Anovelframeworkoftrajectorycompressioninroadnetworks.ProceedingsoftheVLDBEndowment7,92014,661–672.8.孙未未,宋壬初.一种路网轨迹的无损压缩方法:,CN103795418B[P].2016.9.徐东伟,王永东,张贵军,李章维,周晓根,郝小虎.一种基于LZW编码的道路交通空间数据压缩方法[P].2016-04-06.10.徐东伟,王永东,张贵军,李章维,周晓根,郝小虎.一种基于LZW编码的道路交通数据压缩方法[P].2016-03-23.11.Lou,Y.,Zhang,C.,Zheng,Y.,Xie,X.,Wang,W.,&Huang,Y.2009.Map-matchingforlow-sampling-rateGPStrajectories.ACMSigSpatialInternationalSymposiumonAdvancesinGeographicInformationSystems,ACMGIS2009,November4-6,2009,Seattle,Washington,USA,Proceedingspp.352-361.DBLP.

权利要求:1.一种基于LZW算法的GPS轨迹数据的压缩方法,其特征在于:将传统的轨迹数据结合路网信息,通过地图匹配的办法将原始轨迹数据转化为使用路段序列表示的轨迹数据,之后为了便于处理,自定义一种编码规则将路段轨迹数据转化成文本类型的数据,最后利用LZW压缩算法对转化后的文本类型的轨迹数据进行压缩和解压缩。2.如权利要求1所述的基于LZW算法的GPS轨迹数据的压缩方法,其特征在于,包括如下步骤:步骤1获取GPS轨迹数据原始的GPS轨迹数据包括了时间戳time、位置坐标的经纬度longirude和latirude以及轨迹的IDtid;步骤2地图匹配使用地图匹配的相关方法将步骤1获取的GPS轨迹数据映射到地图上得到了用路段序列表示的轨迹数据;步骤3建立倒排表通过步骤2地图匹配后,将轨迹表示成一个路段的序列p1→p2→…→pn,pn∈S,S是路网路段集合;以所有的路段的标号作为字符集,对路段的索引进行格式转换;为了处理的便利,需用建立倒查表,从路段倒查经过这个路段的所有轨迹的标号;步骤4轨迹路段号的转换由于步骤3中路段号定义为一个整数,为了便于压缩处理,我们自定义一种方法将其转化为字符串,因为一个字符为8位,不够存储所有的字段号,需要将路段号转化成更高位数的“字符”即多位字符串;步骤5利用LZW算法进行压缩将经过步骤4转化后的轨迹数据集合通过LZW算法进行压缩,从而实现了对轨迹数据的压缩功能;解压缩同样可以通过LZW算法实现。

百度查询: 同济大学 基于LZW算法的GPS轨迹数据的压缩方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。