专利名称:用于批量发送通用航空器经纬位置数据的压缩方法
技术领域:
本发明涉及一种压缩方法,特别是涉及一种用于批量发送通用航空器经纬位置数据的压缩方法。
背景技术:
伴随着国家对航空工业大力支持,国家、民用对通用航空应用的迫切需求,通用航空市场蓬勃发展。然而对于通用航空器的用户和管理来说的定位和跟踪通用航空器是极其重要的,而我国自主研发的北斗系统非常适合进行通用航空器的定位和跟踪。但第一代民用北斗设备发送信息的间隔较长,且每次送数据的数量有限,因此使用民用北斗设备发送通用航空器经纬度信息急需相应的压缩算法,这是实现实时连续跟踪的必要条件。北斗系统是我国自主研发的定位和通信系统,它不但可以进行定位,同时其通信功能可以允许用户发送数据。对于普通民用用户来说,每次发送信息的间隔至少为一分钟,且每次至多发送约两百个字节的数据。使用北斗的数据传输功能传输通用航空器的经纬度位置信息,可以实现对通用航空器的跟踪家监控,若用浮点数格式发送经纬度信息,每个浮点数由四个字节构成,一个经度或纬度或高度信息可由一个浮点数表示,因此一组位置和高度信息由12个字节构成,民用北斗一次发送的数据量为210字节,因此只能发送约17组数据,航空器经纬度位置的时间分辨率约为3秒,基本能满足监控的需求。但是,通用航空器在使用北斗发送经纬位置和高度的同时也会发送文字短消息与地面通信,通常每次50个汉字(100个字节)左右的短消息基本能满足用户的需求,若能够在发送经纬度的同时也发送短消息,那么,每次只能发送9组经纬位置和高度数据,则经纬位置和高度数据的时间分辨率为7秒,这个间隔对于监控高速飞行的通用航空器来说,是不能满足需求的,而且文字信息是很难压缩的。
发明内容
本发明所要解决的技术问题是提供一种用于批量发送通用航空器经纬位置数据的压缩方法,其对北斗设备批量发送通用航空器的经纬位置和高度数据进行压缩,以保证每次发送经纬度位置和高度的同时仍能够正常发送50个汉字的信息。本发明是通过下述技术方案来解决上述技术问题的一种用于批量发送通用航空器经纬位置数据的压缩方法,其特征在于,其包括以下步骤步骤一,根据实际情况确定经纬度和高度数据的精度,并根据确定的精度要求对数据进行截断处理;步骤二,对步骤一中经过截断处理的数据进行预测编码;步骤三,对步骤二中的数据进行霍夫曼编码;步骤四,霍夫曼编码结果生成压缩数据的数据头和压缩数据体;步骤五,数据的解压缩。优选地,所述步骤一中的截断处理是一个截尾操作。
优选地,所述步骤二中的预测编码是一种编码技术,它基于离散信号间相关性,利用前面一个或多个信号预测下一个信号,然后对实际值和预测值的差进行编码。
本发明的积极进步效果在于本发明根据通用航空飞行器的性能特点和其发送的经纬度和高度信息的特点进行压缩,无需人工干预,完全自动完成,压缩效率高。本发明可以保证在批量传输高时间分辨率的经纬、高度数据的同时还能够发送文字信息。或者在不发送文字信息时,传送更高时间分辨率的若传输相同数量的数据经纬、高度数据,以便实现对航空器的精确的监控。
图I为图I某型号直升机飞行时记录的一组经纬度和高度数据示意图。其中经纬度单位为度,高度单位为米,数据采样间隔为8秒。图2对图I中的数据进行步骤一中的截断操作后的示意图,再进行步骤二中所述的预测编码后得到的结果。图3对图2中的数据进行出现频率统计得到的结果示意图。图4本实施例中霍夫曼编码的初始叶子节点示意图。图5本实施例中霍夫曼编码第一次和第二次合并的情况示意图。图6本实施例中得到的霍夫曼树示意图。图7数据头、数据体和文字信息间的排列关系示意图。
具体实施例方式下面结合附图对本发明的实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。本发明用于批量发送通用航空器经纬位置数据的压缩方法包括以下步骤步骤一,根据实际情况确定经纬度和高度数据的精度,并根据确定的精度要求对数据进行截断处理;步骤一中的截断处理是一个截尾操作。例如,若要求经纬度精度为小数点后5位,那么第6位和第6位以后的数据全部舍弃,高度的精度若为米,那么米级以后的数据全部舍弃。设数据为浮点数,精度为小数点后M位,则从小数点后第M+1位(包括M+1位)全部舍去,截断后对数据放大IOm倍后转换成整数。设本例中使用的数据如图I所示,本实施例中经纬度精度为小数点后5位,高度精度为米级,那么对于经纬、高度数据中小数点后第6位(包括第6位)以后的数据可以认为是不需要的或者不准确的,进行舍弃。截断后将经度、纬度和高度数据扩大IO5倍后将数据转换为四字节表示的整数。步骤二,对步骤一中经过截断处理的数据进行预测编码。步骤二中的预测编码是一种编码技术,它基于离散信号间相关性,利用前面一个或多个信号预测下一个信号,然后对实际值和预测值的差(误差)进行编码。若信号间的相关性较强,且采取的预测方法得当,那么预测误差会比较小,就可以用比较少的比特进行编码,进而达到数据压缩的目的。设步骤一中经过截断处理的经度数据序列、纬度序列和高度序列分别为Jk,Wk,Hk(k = 1,2,3,…,N,其中N为序列长度)。记Jk,Wk,Hk的一阶差分如式⑴
Γ I = Ji-Ji-I I = Wi-WH I = Hi-Hi^1........................式(I)其中1 = 1,2,...,N_l,i = 2,3,...,N。记Jk,Wk, Hk的二阶差分如式⑵J" m = J' i-J' H;w" m = r「r h;H" m = H' i-H' H,.........式(2)其中m=l,2,...,N_2,i = 2,3,...,N_1。
保存的值,然后计算并保存J'1;Η' i的值和J" m,W" m,H" m(m=1,2,…,N-2),其中 J" m,W" m,H" m(m = 1,2,…,N_2)分别为 Jk,Wk,Hk 的预测编码,这里使用的是二阶预测编码。对图I中的数据进行步骤一中的截断操作后,再进行步骤二中所述的预测编码后得到的结果如图2所示。步骤三,对步骤二中的数据进行霍夫曼编码,根据压缩结果生成压缩数据的数据头。步骤三中的霍夫曼编码是一种编码技术,它是由Huffman于1952年提出的,它的基本原理是基于定理“在变长编码中,如果码字长度严格按照出现概率由大到小的顺序排列,则平均码字长度最小”。步骤三中的数据头是用于记录压缩编码关键信息的数据块,这些信息包括霍夫曼编码的码字,初始经纬、高度和其他一些状态信息等,这些是解码时所必须的。将序列J" m,Ψ' m, H" m(m = 1,2,…,N-2)组合成一个序列 dk(k = 1,2,…,3N-6),具体如式(3)dk = J" k(k = 1,2, ...,N_2) ;dk = W" k(k = N_1,N,…,2N—4) ;dk = H" k(k =2N-3,2N-2,…,3N-6).....................式(3)然后对序列dk(k = 1,2,…,3N-6)进行霍夫曼编码。具体方法步骤如下I.统计序列dk中每个数值出现的频率(即出现的次数)。记dk中共有M个不同的值,这M个值按其值由小到大的顺序排列得到的序列为Rs(s = 1,2,…,Μ),Rs是一个二维序列包括数值和对应数值出现的频率,记Rs(I)为数值,Rs(2)为数值出现的频率。本实施例中对图2中的数据进行处理得到的序列按值由小到大排列的得到的序列Rs如图3所示。记这M个值按出现频率由小到大排列的序列为Ds(s = 1,2, ···, Μ), Ds也是一个二维序列包括数值和对应数值出现的频率每个数值和该数值对应的频率,Ds的每一个单元作为一个叶子节点,这些叶子节点为霍夫曼编码的初始叶子节点,本实施例中霍夫曼编码的初始叶子节点如图4所示。2.叶子节点中两个最小频率的节点合并为一个新节点,并将频率相加作为新节点的频率,并将该节点和其他节点一起新按照出现频率由大到小的顺序进行排列。合并时频率较高的节点作为右节点,频率较低的节点为左节点。图5给出了第一次和第二次合并的情况。3.重复步骤2直到只剩下一个节点,作为根节点。最终获得的霍夫曼树如图6所示。经过上述步骤后得到一个霍夫曼树,记录叶子节点到根节点的路径,该路径上的左子树赋值“0”,右子树赋值“1”,按照由低位到高位的顺序排列,就是叶子节点所对应数值的霍夫曼编码的码字。例如,值-3的码字为0101 ;值-2的码字为00 ;值-1的码字为100 ;值O的码字为11 ;值I的码字为101 ;值2的码字为011 ;值3的码字为01001 ;值6的码字为01000 ;步骤四,霍夫曼编码结果生成压缩数据的数据头和压缩数据体;使用生成的码字对序列dk(k = 1,2,…,3N-6)进行编码,即将dk(k = 1,2,…,3N-6)的值兑换成对应的码字,记对序列dk(k = 1,2,…,3N-6)编码后得到的序列为Tk(k=1,2,…,3N-6)。下面介绍如何生成数据头。数据头的前10位二进制位记为Iitl用于存储一个整数,该整数表示文字信息的起始位置。正常飞行时通用航空器的在经度、维度和高度上的加速度不会超过O. 8g(lg为一个重力加速度),因此若位置采样间隔时间为m秒时,在一个采样周期内航空器的加速度的变化范围为O到m*0. 8g。在本实施例中采样间隔为8秒,因此,加速度变化范围为-64到64。数据头的前2m*0.8\ 为向上取整)二进制位(bit)初始时每一位均为0,这2w*o.8<位记为V将匕的第(Rjl)+64)位置1,(s = 1,2,…,M)。例如,若R1(I) = _3则Ii1的第(-3+64)位为I ;若R2(I) = -2则Ill的第(-2+64)位为I。Ii1中I的个数等于霍夫曼编码码字的个数。紧接着Ill的是霍夫曼编码的码字信息,这一段数据头记为h2。一条码字信息包括码字长度和码字的二进制编码。码字信息的条数等于h中I的个数。在本实施例中一条码字信息中的码字长度用6位二进制整数表示,在实际应用中应根据实际情况选择合适的二进制位数来表示码字长度,即选择在预测编码中最大可能出现的值的个数作为确定码字长度位数。紧接着码字长度的是码字的二进制编码。码字信息的排列的顺序与序列Rs(I)的顺序相对应。例如,若Rs(I) = {_3 ;-2 ;-1 ;0 ;1 ;2 ;3 ;6}则,h2中码字彳目息的顺序是:值_3的码字信息、值-2的码字信息、值-I的码字信息、值O的码字信息、值为I的码字信息、值2的码字信息、值3的码字信息、值6的码字信息。接着h2 的是 h3,h3 存储 mr P r W 10接着h3的是数据体,数据体存储序列Tk(k= 1,2,…,3N-6)。数据体后是文字消息。数据头和数据体的排列关系如图7所示。步骤五,数据的解压缩。从接收的数据读取Iv根据Iltl的数值在读取文字信息,从而完成解码文字信息。然后解码经纬、高度数据。读取hi,记录hi中二进制位I的数目K,则K为霍夫曼编码的个数。初始化变量S = 0,扫描据头中的hi,若发现hi第i位为1,则S = S+1,然后从h2中读出第S个码字信息的码字长度,根据码字长度读出码字,该码字对应的数值为(S-64) X10—5,重复该步骤直到扫描结束,此时就得到了霍夫曼编码的码字和码字对应的数值。使用得到的码字对数据体进行解码,即将数据体中的编码序列转换为数值序列,此时得到的数值即为序列dk(k= 1,2,…,3N-6),根据(3)式将dk分别转换为序列J" m,W" m,H" m(m=l,2,…,N-2)。读取 h3,还原 J1, W1, H1, J' ” W' 1; H' ι 的数值(注意、在压缩时由于将数据截断后放大了 IO5倍,因此,JnWpH1, J' i,W' 1;Η' i在解压时数据也要相应缩小IO5倍)。然后根据式(I)和(2)就可以得到经度数据序列、纬度序列和高度序列 Jk,Wk,Hk。本实施例中对图I给出的数据进行压缩,数据头中Ii1长度为128个二进制位(bit),h2的长度(即8个霍夫曼码字和8个6位二进制整数)共计75个二进制位(bit),h3 存储 J1, W1, H1, H' 1;Γ:,其中 J1, W1, H1, H' 1;Γ pW' ι 为四字节整数,共 192位(bit)。本实施例中压缩后的数据体长度为222位(bit),所以加上数据头总共需要617位(bit),约合78个字节(byte)就可以表示图I中的数据。而北斗一次传输数据可达210个字节,还剩余132个字节,除去需要传送的50个汉字(约100字节)的文字信息外,还剩余32个字节可供进行校验或者其它用途。而若采用四字节浮点数发送图I中的数据则需要360个字节,这远远超出了北斗一次数据发送的最大限度,无法在发送经纬、高度数据的同时发送文字信息,更不用说进行校验了。这说明本发明具有良好的压缩效果并具有较强的实用性。上述实施例不作为对本发明的限定,凡在本发明的范围内所作的任何修改、等同替换、改进等,均属于本发明的保护范围。
权利要求
1.一种用于批量发送通用航空器经纬位置数据的压缩方法,其特征在于,其包括以下步骤 步骤一,根据实际情况确定经纬度和高度数据的精度,并根据确定的精度要求对数据进行截断处理; 步骤二,对步骤一中经过截断处理的数据进行预测编码; 步骤三,对步骤二中的数据进行霍夫曼编码; 步骤四,霍夫曼编码结果生成压缩数据的数据头和压缩数据体; 步骤五,数据的解压缩。
2.如权利要求I所述的用于批量发送通用航空器经纬位置数据的压缩方法,其特征在于,所述步骤一中的截断处理是一个截尾操作。
3.如权利要求I所述的用于批量发送通用航空器经纬位置数据的压缩方法,其特征在于,所述步骤二中的预测编码是一种编码技术,它基于离散信号间相关性,利用前面一个或多个信号预测下一个信号,然后对实际值和预测值的差进行编码。
全文摘要
本发明公开了一种用于批量发送通用航空器经纬位置数据的压缩方法,其特征在于,其包括以下步骤步骤一,根据实际情况确定经纬度和高度数据的精度,并根据确定的精度要求对数据进行截断处理;步骤二,对步骤一中经过截断处理的数据进行预测编码;步骤三,对步骤二中的数据进行霍夫曼编码;步骤四,霍夫曼编码结果生成压缩数据的数据头和压缩数据体;步骤五,数据的解压缩。本发明对北斗设备批量发送通用航空器的经纬位置和高度数据进行压缩,以保证每次发送经纬度位置和高度的同时仍能够正常发送50个汉字的信息。
文档编号G01S19/05GK102628948SQ20121010242
公开日2012年8月8日 申请日期2012年4月10日 优先权日2012年4月10日
发明者刘伯文, 吴建民, 翟鸣 申请人:中国航空无线电电子研究所