一种手机网络导航中导航数据的压缩方法

文档序号:6130200阅读:214来源:国知局

专利名称::一种手机网络导航中导航数据的压缩方法
技术领域
:本发明涉及一种地图矢量数据的无损数据压缩方法,尤其涉及一种应用于手机网络导航中导航数据的压缩方法。
背景技术
:手机GPS导航系统现在基本上分为手机自主导航系统和手机网络导航系统两种。在手机网络导航系统中,用户向网络导航中心发送目的地数据查询请求后,由网络导航中心获得的可导航POI兴趣点数据(PointofInterest"的缩写,可以翻译成"兴趣点",每个POI包含四方面信息,名称、类别、经度、绵度)、导航路线地图数据均通过GPRS或者CDMA无线网络发送到手机终端。由于无线网络传输的速率较低,且目前手机运营商的收费是与传输的数据流量相关联的。这就要求在数据传输中只能传输最必要的数据。即使如此,随着导航距离的加大,导航过程中所需的无线网络数据流量依然很大,产生的费用也较大。信息论是数学的一个分支,数据压缩是信息论的基本表现。数据压缩进入信息论领域是因为它涉及了冗余问题,一条消息中的冗余信息要占用额外的位来编码,如果去除这些额外信息,将减少消息的量。数据压缩分为无损数据压缩和有损数据压缩两种方式。有损数据压缩允许以一定的精度损失以换取大大增强的压缩,有损数据压缩主要用于数字图形图像和数字化语音。目前有损数据压缩主要还是使用专门的硬件实现。无损数据压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同,无损数据压缩用于要求重构的信号与原始信号完全一致的场合。对于手机网络导航系统而言,所需的原始POI兴趣点数据和导航地图数据都是经过精简处理,均为导航时所必须的数据,任何一个单独数据位的损失都将导致手机终端用户无法使用导航数据。因此手机网络导航系统中要采用无损数据压缩技术对所需传输的原始导航数据进行压缩。
发明内容本发明旨在提供一种在手机网络导航中导航数据的压缩方法,使得网络导航中心在发送相关导航数据时,能够高效、快速地进行数据压缩;手机端在收到压缩导航数据包后能快速进行解压缩,获取所需导航数据。为了达成以上目的,一种手机网络导航中导航数据的压缩方法,主要分为两个步骤步骤l:用一个滑动窗口在导航数据包中滑动,在前向缓冲区中查找在滑动窗口中匹配的最长字符串,根据查找的匹配字符串的长度情况,生成指针二元组或者单个字符;指针二元组的表示形式由两个分量组成,分别为匹配字符串在滑动窗口的偏移位置和匹配字符串的长度;单个字符则为原始数据中的字符,表示形式不变;步骤2:对步骤1输出的指针二元组或者单个字符进行重新编码,对指4h二元组的第一个分量off采用定长编码,对第二个分量采用Huffman变长编码,对单个字符的编码方式同原始导4元数据中的字符,不发生变化。该步骤1的具体压缩算法为1).把编码位置置于输入数据流的开始位置;2).考察未编码的字符,在前向緩冲存储器中查找在滑动窗口中最长的匹配串,并试图在滑动窗口中找出最长的匹配字符串;3).若匹配字符串的长度len不小于最小匹配串长度,把标志位ID置l,然后输出指针二元组(off,len),其中off为滑动窗口中的匹配字符串相对窗口边界的偏移,len为匹配字符串的长度,然后将滑动窗口向后滑动len个字符,若前向緩冲存储器不是空的,继续步骤1;若匹配串长度len小于最小匹配串长度,执行步骤4;4).把标志位ID置O,输出前向緩冲存储器中的第1个字符,然后将窗口位置向后移动一个字符;若前向緩冲存储器不是空的,继续步骤1;解压缩时,只要象压缩时那样维护好滑动的窗口,随着二元组或者单个字符的不断输入,在滑动窗口中找到相应的匹配字符串或者单个字符,即可还原出原始lt据。步骤2中对输出指针二元组中的第二个分量进行匹配字符串长度len进行Huffman变长编码,该编码方法是根据字符串长度出现概率的不同进行变长变码,出现概率大的长度用较短的码位编码,出现概率较小的用较长的码位编码。所述的编码过程如下①将信源符号4姿概率递减顺序排列;②把两个最小的概率加起来,作为新符号的概率;③重复前两步,直到和克率和达到1为止;④在每次合并消息时,将被合并的消息赋予1和0或0和1;(D寻找从每一信源符号到概率为1的路径,记录下路径上的1和0;对每一符号写出/人码树的根到中节点1、0序列。在滑动窗口中查找最长的匹配串时,限制可匹配字符串的最大长度,将窗口中每一个最大长度的字节串抽取出来,按照大小顺序组织成二叉有序树。所述的可匹配字符串的最大长度为20个字节,将窗口中每一个20字节长的串抽取出来,按照大小顺序组织成二叉有序树,树中每一个节点大小是20(key)+4(off)+4(leftchiId)+4(rightchild)=32,树中共有MAX—WND—SIZE-19个节点。与不进行压缩及解压缩处理数据传输相比,采用本发明的该种压缩方法,减少了无线数据传输的流量,使得网络导航中心对用户导航请求的响应速度快,用户使用系统的费用也大为降低。单纯从压缩效率考察,该方法并不是最佳的压缩方法,但从系统总体需求考虑,该压缩方法能够在压缩效率和执行速度这两个方面取得一个较好的折中,因此是一种较为合适的压缩方法。图1为本发明涉及的压缩算法的基本实现流程图2为本发明在手机网络导航中应用数据压缩的操作流程图3为本发明中导航数据压缩流程图。具体实施例方式如图2所示,本发明一种手机网络导航中导航数据的压缩方法,主要应用在如下场合(1)手机终端用户输入所需到达的目的地名称,把目的地名称发送到网络导航中心,网络导航中心的搜索服务器经过检索,搜索出所有可能的匹配可导航兴趣点数据,对兴趣点数据压缩后发送给手机终端用户进行选择;(2)手机终端用户接收网络导航中心发送的兴趣点数据压缩包,对其进行解压缩,兴趣点数据显示在手机终端上供用户进行选择,用户选择后把选中的兴趣点及路线导航请求发送给导航中心;(3)网络导航中心根据用户选择的兴趣点,计算并生成导航路径数据,把导航路径数据进行压缩,发送给手机终端用户;(4)手机终端用户接收导航路线压缩数据包,对其进行解压缩,把导航路线显示在手机终端上,为用户提供导航服务。由于手机网络导航系统面向的是几十万以至更多的手机用户,在同一时刻,可能会出现大量的手机用户终端同时向网络导航中心申请导航请求,系统在大量手机终端用户请求的条件下,也要求在很短的时间内对导航请求做出响应;虽然压缩算法能够减少数据传输流量,但压缩过程中要耗费一定的时间,因此,特别需要考虑压缩执行速度上的要求。压缩算法在压缩效率和执行速度上存在一定的制约关系,压缩效率越高,其算法的复杂度一般也较大,执行速度较慢。若压缩效率较低,其算法复杂度降低,执行速度也较快。因此根据手机网络导航系统要求,需要在压缩算法的压缩效率和执行速度上取得一定的折中。本发明从减少无线网络数据传输流量,以提高传输数据效率考虑,在原始导航数据传输前先对其进行一定程度的压缩,从而减少无线传输的数据流量。该发明不仅可以利用网络导航中心平台的性能进一步减轻无线传输的压力,使手机用户和网络导航中心交互更加迅捷,同时使手机用户使用网络导航系统的费用有所降低。本发明在手机网络导航系统中采用的压缩算法是词典编码和统计编码的综合应用。词典编码(dictionaryencoding)的才艮据是凄t据本身包含有重复代码这个特性。词典法的想法是查找正在压缩的字符序列中是否在以前输入的数据中出现过,然后用已经出现过的字符串替代重复的部分,它的输出仅仅是指向早期出现过的字符串的"指针"。本发明采用的压缩算法也可以称为"滑动窗口压缩",这是由于该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为术语字典,要压缩的字符串如果在该滑动窗口中出现,则输出其出现位置和长度。使用固定大小窗口进行术语匹配,而不是在所有已经编码的信息中匹配,是因为匹配算法的时间消耗往往很多,必须限制字典的大小才能保证算法的效率;随着压缩的进程滑动字典窗口,使其中总包含最近编码过的信息,是因为对大多数信息而言,要编码的字符串往往在最近的上下文中更容易找到匹配串。如图l所示,本发明所采用的压缩算法实现的具体方法如下(一)压缩算法中所用到的基本术语1、输入数据流(inputstream):未被压缩的字符序列2、字符(character):输入数据流中的基本单元3、编码位置(codingposition):输入数据流中当前要编码的字符位置,指前向緩冲存储器中的开始字符4、前向緩冲存储器(Lookaheadbuffer):存放从编码位置到输入数据流结束的字符序列的存储器5、滑动窗口(window):指包含W个字符的窗口,字符范围是从编码位置开始向前数的W个字符,也就是最后处理过的W个字符6、指针(pointer):指向滑动窗口中的匹配字符串且含长度的指针(二)压缩算法的主要实现方法如果匹配字符串的长度比指针本身的长度长就输出指针二元组,否则就输出单个真实字符。由于输出的压缩数据流中包含有指针二元组和字符本身,为了区分它们就需要有额外的标志位,即ID位。(三)压缩算法的具体执行步骤1.把编码位置置于输入数据流的开始位置;2.考察未编码的字符,在前向緩冲存储器中查找在滑动窗口中最长的匹配串,并试图在滑动窗口中找出最长的匹配字符串;3.若匹配字符串的长度len不小于最小匹配串长度(len>=MIN-LENGTH),4巴标志位ID置1,然后输出指4十二元组(off,len)。其中off为滑动窗口中的匹配字符串相对窗口边界的偏移,len为匹配字符串的长度,然后将滑动窗口向后滑动len个字符,继续步骤1(若前向緩冲存储器不是空的);若匹配串长度len小于最小匹配串长度(len<MIN-LENGTH),执行步骤4;4.把标志位ID置O,输出前向緩冲存储器中的第1个字符,然后将窗口位置向后移动一个字符;继续步骤l(若前向緩冲存储器不是空的)。解压缩的过程十分简单,只要象压缩时那样维护好滑动的窗口,随着二元组或者单个字符的不断输入,在滑动窗口中找到相应的匹配字符串或者单个字符,即可还原出原始数据。以下为具体编码例子。设待编码字符串如表1所示,编码过程如表2所示。现说明如下表l未编码的字符串位置1234567891011字符AABBCBBAABC表2对字符串编码后的结果(MIN—LENGTH=2)步骤位置匹配串输出11---A22AA33---B44BB<table>tableseeoriginaldocumentpage9</column></row><table>所述的"位置"栏表示编码位置,输入数据流中的第l个字符为编码位置1;"匹配串,,栏表示在滑动窗口中找到的最长的匹配串;"字符"栏表示匹配之后在前向緩冲存储器中的第l个字符;"输出"栏表示输出内容,其输出规则如下1、如果匹配串本身的长度len〉=MIN-LENGTH,输出指向匹配串的指针,格式为(off,len)。该指针的含义是"在这个滑动窗口中向后退off个字符,然后拷贝len个字符到输出";2、如果匹配串本身的长度Length<=MIN—LENGTH,则输出真实的匹配串。如表2所示,操作步骤如下步骤1无匹配,输出A;步骤2有匹配,但匹配长度len<2,输出A;步骤3无匹配,输出B;步骤4有匹配,但匹配长度len<2,输出B;步骤5无匹配,输出C;步骤6有匹配,匹配长度len=2,输出(倒3,长2)步骤7有匹配,匹配长度len=3,输出(倒7,长3)步骤8有匹配,但匹配长度len<2,输出C。本发明具体实现时需要解决的问题有如下几点1.对输出各分量进行编码的方法必须设计输出每个分量的表示方法,才能达到较好的压缩效果,编码的设计要根据待编码的数值的分布情况而定。(1)对于指针二元组的第一个分量一一滑动窗口内的偏移,通常的经验是,偏移接近滑动窗口尾部的情况要多于接近滑动窗口头部的情况,这是因为字符串在与其接近的位置较容易找到匹配串,但对于普通的滑动窗口大小(例如4096字节)来说,偏移值基本还是均匀分布的,这里可以用固定的位数来表示它。编码off需要的位凄tbitnum=u卯er—bound(log2(腹-醫—SIZE)),由此,如果窗口大小为4096,用12位就可以对偏移编码。如果窗口大小为2048,用11位就可以了。复杂一点的程序考虑到在压缩开始时,窗口大小并没有达到MAX_WND—SIZE,而是随着压缩的进行增长,因此可以根据窗口的当前大小动态计算所需要的位数,这样可以略孩t节省一点空间。其实,如果对Off值考虑其倾向于窗口后部的规律,也可以采用变长的编码方法。^f旦这种方式对窗口较小的情况改善并不明显,有时压缩效果还不如固定长编码。(2)对于指针二元组的第二个分量一一匹配字符串长度len,考虑到它在大多数时候不会太大,少数情况下才会发生大字符串的匹配。可以使用一种变长的编码方式来表示该长度值。要输出变长的编码,该编码必须满足前缀编码(编码时必须使得任一字符的编码都不是另外任意字符编码的前缀,这种编码称为前缀编码)的条件。这里采用Huffman编码对字符串长度进4亍编码。Huffman编码是对统计独立信源达到最小平均码长的编码方法,其基本原理是按信源符号出现的概率大d、进行排序,出现概率大的分配短码,出现概率小的则分配长码。编码过程如下①将信源符号按概率递减顺序排列;②把两个最小的概率加起来,作为新符号的概率;③重复前两步,直到概率和达到1为止;④在每次合并消息时,将被合并的消息赋予1和0或0和1;⑤寻找从每一信源符号到概率为1的路径,记录下路径上的1和0;⑥对每一符号写出从码树的根到中节点1、0序列。(3)当输出字符本身c时,因为其分布无规律可循,只能用8个二进制位对其编码。2.匹配字符串的查找方法在滑动窗口中查找最长的匹配串,是算法中的重要问题。算法中空间和时间的消耗集中于对匹配串的查找算法。每次滑动窗口之后,都要进行下一个匹配串的查找,如果查找算法的时间效率在0(n2)或者更高,总的算法时间效率就将达到0(n3),正常的顺序匹配算法显然无法满足要求。本发明采用的方法是限制可匹配字符串的最大长度(例如20个字节),将窗口中每一个20字节长的串抽取出来,按照大小顺序组织成二叉有序树,树中每一个节点大小是20(key)+4(off)+4(leftchild)+4(rightchild)=32,树中共有MAX_WND_SIZE-19个节点。在这样的二叉有序树中进行字符串的查找,其效率是很高的,假如窗口大小为4096字节,则树的大小大约是130k字节,空间消耗也不算多。这种方法对匹配串长度的限制虽然影响了压缩程序对一些特殊数据(又很长的匹配串)的压缩效果,但就平均性能而言,压缩效果还是不错的。与不进行压缩及解压缩处理数据传输相比,采用本发明的压缩方法,减少了无线数据传输的流量,使得网络导航中心对用户导航请求的响应速度快,用户使用系统的费用也大为降低。本发明能够在压缩效率和执行速度这两个方面取得一个较好的折中,因此是一种较为合适的压缩方法。本发明的手机网络导航中导航数据的压缩处理由两个步骤完成步骤l:在前向緩冲区查找在滑动窗口中最长的匹配字符串,根据在滑动窗口中找到的匹配字符串的长度,输出指针二元组或者单个字符。输出的内容有两种形式,一种为指针二元组,另一种形式为单个字符。①当匹配字符串的长度不小于最小匹配串长度(len>=MIN—LENGTH)时,把标志位ID置1,输出指针二元组(off,len),其中off为滑动窗口中匹配字符串相对于滑动窗口边界的偏移len为匹配字符串的长度然后将滑动窗口向后滑动len个字符②当匹配字符串的长度小于最小匹配串长度(len<MIN_LENGTH)时,把标志位ID置0,输出前向緩冲存储器中的第1个字符,然后将滑动窗口位置向后滑动一个字符。步骤2:对步骤l中输出的指针二元组或者单个字符进行编码。对输出量进行编码的基本原则是考虑其数值分布的特点。(1)对指针二元组中的元素进行编码。对于指针二元组的第一个分量一一窗口内的偏移off,对于普通的滑动窗口大小(例如4096字节)来说,偏移值基本还是均匀分布的,完全可以用固定的位数来表示它。对于指针二元组中的第二个分量一一匹配字符串长度len,考虑到大部分匹配字符串的长度不会很长,长度较小的匹配字符串出现的概率较大,大长度的匹配字符串出现的概率较小,采用Huffman编码对该分量进行变长编码。(2)对单独字符进行编码。对于输出的单个字符,由于其分布是无规律、随机性的,对其只有采用原有的8个二进制位的编码方式。本发明提供一种手机网络导航中导航数据压缩方法,手机终端在与导航中心进行导航请求信息的交互后,解压缩导航中心发来的导航数据,把导航路线用图片的方式显示在手机终端上。网络导航中心由搜索服务器、导航服务器等组成,导航中心实现搜索可导航兴趣点,根据用户导航请求计算路径,压缩导航数据包等功能。如图2所示,当手机用户需要导航时,用户通过与网络导航中心交互,导航中心明确用户导航请求后,计算出导航路线,并把导航路线地图数据压缩,通过无线网络发送给手机用户,手机用户解压缩导航路线地图数据,显示在手机屏幕上供导航使用。假定导航中心要发送给用户的导航数据包为"AABBCBBAABDBACBBA....,,,对其进行压缩的过程分为两个步骤A.用滑动窗口在前向緩沖区中滑动,输出该数据包新的表示形式指针二元组或者单个字符。输出的形式为0,A,0,A,0,B,0,B,0,C,1,(3,2),1,(7,3),0,D,1,(5,2),1,(9,4)…(其中0,1表示标志位ID)。B.对指针二元组中的分量进行重新编码,单个字符编码形式不变。对二元组中第一个分量off,主要采用定长编码,假设滑动窗口大小为256个字节,则采用8位对其进行编码,(3,2)、(7,3)、(5,2)、(9,4)中的第一个分量3、7、5、9,分别被编码为00000011、00000111、00000101、00001001。对二元组中的第二个分量len,则采用Huffman变长编码,出现概率大的用较短码,出现概率大的用较长码。对本例来说,len中2出现概率为50%,3和4出现概率为25°/。,贝'j2可编码为1,3可编码为00,4可编码为01。权利要求1、一种手机网络导航中导航数据的压缩方法,主要分为两个步骤步骤1用一个滑动窗口在导航数据包中滑动,在前向缓冲区中查找在滑动窗口中匹配的最长字符串,根据查找的匹配字符串的长度情况,生成指针二元组或者单个字符;指针二元组的表示形式由两个分量组成,分别为匹配字符串在滑动窗口的偏移位置和匹配字符串的长度;单个字符则为原始数据中的字符,表示形式不变;步骤2对步骤1输出的指针二元组或者单个字符进行重新编码,对指针二元组的第一个分量off采用定长编码,对第二个分量采用Huffman变长编码,对单个字符的编码方式同原始导航数据中的字符,不发生变化。2、根据权利要求1所述的一种手机网络导航中导航数据的压缩方法,其特征在于该步骤1的具体压缩算法为1).把编码位置置于输入数据流的开始位置;2).考察未编码的字符,在前向緩冲存储器中查找在滑动窗口中最长的匹配串,并试图在滑动窗口中找出最长的匹配字符串;3).若匹配字符串的长度len不小于最小匹配串长度,把标志位ID置1,然后输出指针二元組(off,len),其中off为滑动窗口中的匹配字符串相对窗口边界的偏移,len为匹配字符串的长度,然后将滑动窗口向后滑动len个字符,若前向緩冲存储器不是空的,继续步骤1;若匹配串长度len小于最小匹配串长度,执行步骤4;4).把标志位ID置O,输出前向緩沖存储器中的第1个字符,然后将窗口位置向后移动一个字符;若前向緩冲存储器不是空的,继续步骤h解压缩时,只要象压缩时那样维护好滑动的窗口,随着二元组或者单个字符的不断输入,在滑动窗口中找到相应的匹配字符串或者单个字符,即可还原出原始数据。3、根据权利要求1所述的一种手机网络导航中导航数据的压缩方法,其特征在于步骤2中对输出指针二元组中的第二个分量匹配字符串长度len进行Huffman变长编码,该编码方法是才艮据字符串长度出现概率的不同进行变长变码,出现概率大的长度用较短的码位编码,出现概率较小的用较长的码位编码。4、根据权利要求3所述的一种手机网络导航中导航数据的压缩方法,其特征在于所述的编码过程如下①将信源符号4姿概率递减顺序排列;②把两个最小的概率加起来,作为新符号的概率;③重复前两步,直到概率和达到1为止;④在每次合并消息时,将被合并的消息赋予1和0或G和1;⑤寻找从每一信源符号到概率为1的路径,记录下路径上的1和0;⑥对每一符号写出从码树的根到中节点l、o序列。5、根据权利要求1所述的一种手机网络导航中导航数据的压缩方法,其特征在于在滑动窗口中查找最长的匹配串时,限制可匹配字符串的最大长度,将窗口中每一个最大长度的字节串抽取出来,按照大小顺序组织成二叉有序树。6、根据权利要求5所述的一种手机网络导航中导航数据的压缩方法,其特征在于所述的可匹配字符串的最大长度为20个字节,将窗口中每一个20字节长的串抽取出来,按照大小顺序组织成二叉有序树,树中每一个节点大小是20(key)+4(off)+4(leftchild)+4(rightchild)=32,树中共有MAX—WND—SIZE-19个节点。全文摘要本发明公开一种在手机网络导航中导航数据的压缩方法,使得网络导航中心在发送相关导航数据时,能够高效、快速地进行数据压缩;手机端在收到压缩导航数据包后能快速进行解压缩,获取所需导航数据;采用这种压缩方法,减少了无线数据传输的流量,使得网络导航中心对用户导航请求的响应速度快,用户使用系统的费用也大为降低。文档编号G01C21/00GK101469989SQ20071014416公开日2009年7月1日申请日期2007年12月29日优先权日2007年12月29日发明者刚季,宜时,宁许,陈从华,陈青溪申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1