GPS定位数据压缩算法的设计与实现 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
北京清华大学自动化系(100084) 杨宏业 张跃 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
摘要:为了解决嵌入式GPS车载系统中存储空间小、GPS定位数据量大的矛盾,根据GPS定位数据的特点,提现了专用于GPS定位数据压缩的改进型半字节压缩算法。该算法是一种在原半字压缩算法的基础上改进的算法,经过实际测试,压缩比可达50%。若将压缩预处理也折算在内,总压缩比可达80%以上,为车载系统节省了大量的存储资源。除此之外,也缩短了GSM信道的占用时间,大大地缓解了向控制调度中心上传数据的压力。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
嵌入式GPS车载系统一般体积较小,无存储量大的硬盘等设备,系统程序、应用程序一般装在FLASH或ROM中。由于FLASH 或 ROM等存储介质的价格相对台式机上广泛使用的硬盘、光盘等来说是非常昂贵的,因此,在开发嵌入式系统的软件产品时必须将软件所占的存储空间限制在一定的范围内。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 GPS数据格式
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 压缩预处理 仔细观察以上各段数据记录,可以发现语句之间的数据段还存在很多冗余。除此之外,这些记录中所含的信息既有英文字符又有数字,为了后续的压缩,对语句中的各个记录应做如下的预处理: ①语句标识头(ID):因为每个语句的标识头都一样,所以该记录段属于冗余信息,完全可以去除,在解压缩时再在每个语句前加上该标识头即可。 ②世界时间(UTC):该信息段以时、分、秒、毫秒的格式指示出当时的世界时间。转换为北京时间还需要再加上8小时。由于车载系统的定位数据的采集是以秒为单位的,所以毫秒量级的数据对本系统根本无用,是冗余信息,将其去除后,世界时间完全可以用6个字节表示。然而,由于世界时间是按秒增1,定位数据也是每秒更新一次,所以世界时间可以在程序的一开始采集记录一下,在解压缩时根据语句的指针值再加上起始时间便可以复原,因此该记录段在第一次存储后,以后的语句中的该信息全都是冗余信息。 ③定位状态(A/V):占用1个字节,不进行预处理。由于车载系统处于的地方有可能收不到卫星信号(如隧道中),致使定位信息无效,因此尽管该字段发生变化的概率较小,又与其它信息段不相关,在此仍不能做预处理。 ④纬度:占用9个字节,不进行预处理。 ⑤经度:占用10个字节,不进行预处理。 ⑥经度指示器(E/W):占一个字节,它指示出经度是东经,还是西经。由于各个$GPRMC语句中的该段信息在中国都是东经,它是冗余信息,因此也采取程序一开始存储一次的方法。 ⑦纬度指示器(N/S):占一个字节,各个$GPRMC语句中的该段信息完全一样,是冗余信息,处理方法与上相同。 ⑧地面速度:占用4个字节,不进行预处理。 ⑨日期:占用6个字节,以日、月、年的格式显示,各个$GPRMC语句中的该段信息在24小时内完全一样,是冗余信息,采取程序一开始存储一次的方法,以后语句中的该段信息全部废除。 ⑩校验和:占用3个字节,该数据完成校验后便弃之,不保留和进行压缩。 结束符占用2个字节,只用来判断语句的有效数据范围,其它记录段与本系统的设计无关都不保留和进行压缩。 通过以上压缩预处理后,保留了四个数据记录,共占用24个字节,如图1所示。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 改进型半字节压缩算法 文本数据的压缩所使用的都是无损压缩技术,即还原后的文件应该与源文件完全相同。文本文件压缩的方法有很多种,如HUFFMAN编码、算术编码和字典压缩方法等。它们均是无损压缩方法,都适用于文本数据的压缩。半字节压缩方法是针对文本数据的特点所设计的,主要是去除文本中的字节中的冗余位,从而达到减少数据文件所占用的存储空间的目的。在数据压缩技术中,除压缩重复字符外,还可以根据数据本身的特点进行压缩。在计算机中,任何数据都是以某种代码的方式存储的。在一些文件中,或许有一些代码具有某些相似之处,我们可以根据代码的特点进行特定的操作,压缩掉这些数据的相似部分,或者说压缩掉这些数据的特征部分,半字节压缩就是这样一种方法。半字节方法主要用于纯数字的文本文件的压缩,因为数字0~9的ASCII码的高四位都一样,是冗余的,因此每一个数字完全可以用低四位描述,即每个字符的八位编码可压缩为四位编码,压缩比理论上可趋近50%。 从图1中可以看出,经过预处理后的数据中,包含的文本字符有:"0~9"十个数字符号,"A"、"V"两个英文大写字母和一个小数点"."符号,共13个符号。"A、"V"、"."的ASCII码的高四位显然与数字字符的不一样,半字节压缩方法不能简单套用。然而,我们知道四位二进制编码可区分16种状态,用来表示13种不同的字符是足够的。 压缩数据编码表如表1所示,为了充分利用编码表中的状态,在原来13个字符的基础上又新增添了两个字符"B"和"W″,其四位编码分别为1101和1110。这两个字符是在压缩预处理过程中,用来记录那些因语句校验和出错而舍弃的语句。因为每条语句的时间信息全部在预处理阶段被舍弃,在解压缩时要恢复时间值。该值在正常情况下是根据时间的基数再加上语句的计数值(由于每秒接受到一条语句,所以语句计数值就是以秒为单位的时间增量)确定的。当发生语句校验和出错时,若处于定位有效状态,则在定位状态记录上不填写"A"字符,而填写"B"字符;若处在定位无效状态,则不填写"V"字符,而填写"W"字符。在以后解压缩时,若检测到"A"、"V"字符,时间的还原按正常的算法进行;若检测到"B"、"W"字符时,时间的还原除了按正常的算法进行以外还要加上一秒钟,这样才能确保时间能够正确的恢复,这是因为"B"、"W"字符表示上一条语句发生错误已经被丢弃,语句的压缩是非连续的,有断句现象发生。 通过此编码表进行转换后,原来经过压缩预处理后的固定24个字节长的文本数据就可以减小一半(压缩后为固定的12个字节长),压缩比为50%,若从未经过预处理的文本数据算起,则压缩比可达到80%。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
表1 压缩数据编码表 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
由图2可知,实现半字节压缩算法需要解决两个问题:首先是压缩对象的计数;其次是如何把两个数字的低位合并到一个字节中。后一个问题只要规定好压缩后的字节中奇数号字符的四位编码与偶数号字符的四位编码的存放次序即可,程序的实现非常简单,在此我们规定编号是奇数的字符放在高四位,编号为偶数的字符的编码放在低四位。假设压缩前的数据流中的前四个字符分别为"1、2、3、4",则压缩后的数据格式如图3所示。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
半字节压缩中需要解决的首要问题是压缩对象的计数问题,解决此问题的方法有两种:一种是半字节计数器(Half-Byte Counter),另一种是全字节计数器(Full-Byte Counter)。不管那一种方法,它们都要占用字节,再加上压缩标识也要占用字节,所以要影响数据的压缩比。改进后的半字节压缩算法完全解决了此问题,因为GPS定位数据经过压缩预处理后的数据长度是固定的24个字节长,不是动态可变的,所以不需要解决压缩对象的计数问题。一般来说,任何一种压缩算法都需要用压缩指示字符作为压缩数据的标识,压缩标识符越短越好,因为过长会影响压缩效果。然而,由于GPS定位数据中的所有字符都进行了编码处理,不存在原样字符(不进行压缩的字符,在解压缩时原样输出),因此压缩标识完全可以省略,可进一步提高数据的压缩比。压缩预处理程序框图和改进后的半字节压缩算法框图如图4所示。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
压缩文件包括解压缩所需的重要信息,由释放参照信息和依次压缩了的定长数据块组成。释放参照信息包含有解压缩所要使用的时间基数信息,它通过语句计数器以及错误代码号可以将时间还原。除此之外,释放参照信息还包括各个定长数据块在解压缩时所需的共同信息,如E/W、N/S、日期,压缩文件的格式如图5所示。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
嵌入式系统的压缩是不需要人为干涉、而自动实时完成的,具体的实现方法是通过驻留内存(单任务操作系统中,如DOS)或作为一个后台任务(在多任务操作系统中,如Windows中)对数据完成实时压缩或解压缩。 GPS定位数据的压缩算法经过实际的验证,压缩比随着压缩数据的减小而略有减少,这是因为参照信息随着压缩数据的减小其所占的比例在逐渐增加的原故。但总的压缩比不低于82%,达到了预期的效果,如表2所示。该压缩方法在车载系统中使用不仅能节省存储空间,而且能减少信道的占有时间及提高数据的安全性。由于压缩程序是针对GPS数据格式编写的,因此其压缩比大但通用性不强。尽管如此,该程序略做修改可移植到其它系统中,因为各个GPS厂家所执行的规范标准都是NMEA-0183,其数据的输出格式略有差别。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
参考文献 1 杨宏业,张 跃,吕 芳.一种新的GPS出租车调度系统的设计与实现.电子技术应用, 2002;28(6). 2 袁 玫,袁 文.数据压缩技术及其应用.北京:电子工业出版社,1995.12 3 黄 超, 周绮丽.智能遥测终端中压缩数据的方法.测控技术,1998(1) 4 邵方武张金标张丽萍.GPS定位信息的计算机显示.天津理工学院学报, 1996(9) |
文章评论(0条评论)
登录后参与讨论