一种消防救援装备用数据智能管理系统转让专利

申请号 : CN202310309298.3

文献号 : CN116073838B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 童斌王佳奇王小宁羊月华

申请人 : 江苏桐方消防科技集团股份有限公司

摘要 :

本发明涉及数据压缩存储领域,具体涉及一种消防救援装备用数据智能管理系统,该系统包括:获取消防数据,根据消防数据得到重排序列,根据重排序列构建范式二叉树,获取每种十进制数的序号序列以及游程序列,进一步得到每种十进制数的分布位置,根据分布位置、游程序列得到分布序列以及更新位置序列,将分布序列中每种十进制数分配给范式二叉树的叶子节点,得到每种十进制数的编码,根据编码对重排序列进行编码,在编码过程中,根据更新位置序列对分布序列进行更新,使得每种十进制数的编码不断更新,获得压缩结果。本发明的压缩效率较霍夫曼编码、算术编码等现有的压缩方法高。

权利要求 :

1.一种消防救援装备用数据智能管理系统,其特征在于,所述系统包括:消防数据获取模块,获取消防数据;

消防数据预处理模块,将消防数据转换为原始序列,对原始序列利用BWT算法进行编码,得到重排序列;

消防数据压缩模块,根据重排序列构建范式二叉树;获取重排序列中每种十进制数出现的序号,分别构成每种十进制数的序号序列;统计重排序列中每种十进制数每次出现时的游程,分别构成每种十进制数的游程序列;根据序号序列以及游程序列获取每种十进制数的分布位置;按照分布位置从小到大的顺序对所有种十进制数进行排序,得到分布序列;

根据每种十进制数的分布位置以及游程序列获取更新位置序列;

根据分布序列、更新位置序列以及范式二叉树对重排序列进行编码,包括:S1:设置初始值为1的计数器;

S2:根据范式二叉树获取分布序列中每种十进制数的编码;

S3:根据每种十进制数对应的编码对重排序列中每个十进制数依次进行编码,每编码一个十进制数,将计数器加一,并将已编码的十进制数从重排序列中删除;当计数器的值等于更新位置序列中元素的值时,对分布序列进行更新;

S4:重复S2、S3,直到重排序列为空时停止迭代;将已编码的十进制数的编码结果构成压缩数据;

消防数据存储模块,对压缩数据进行存储;

消防数据解压模块,对压缩数据进行解压;

消防数据管理模块,根据消防数据对消防救援装备进行管理。

2.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述将消防数据转换为原始序列,包括的步骤为:将消防数据编码成二进制形式,得到二进制序列,将二进制序列划分为长度相等的多组二进制数,将每组二进制数转换为十进制数,将所有十进制数构成的序列作为原始序列。

3.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述根据重排序列构建范式二叉树,包括的步骤为:统计重排序列中十进制数的种类数n,构建n层的范式二叉树,范式二叉树中每个左节点均为叶子节点,除最后一层的右节点之外,每个右节点均为父节点。

4.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述根据序号序列以及游程序列获取每种十进制数的分布位置,包括的步骤为:其中 为第i种十进制数在重排序列中的分布位置; 为第i种十进制数在重排序列中第j次出现时的序号; 为第i种十进制数在重排序列中第j次出现时的游程; 为第i种十进制数在重排序列中第k次出现时的游程; 为第i种十进制数在重排序列中出现的次数。

5.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述根据每种十进制数的分布位置以及游程序列获取更新位置序列,包括的步骤为:将每种十进制数的游程序列中游程的最大值作为每种十进制数的最长游程,将分布序列中每种十进制数对应的分布位置加上每种十进制数的最长游程的一半,将所得结果再四舍五入取整,得到更新位置,将所有更新位置构成更新位置序列。

6.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述根据范式二叉树获取分布序列中每种十进制数的编码,包括的步骤为:将分布序列中的每种十进制数按照从浅层到深层的顺序依次分配给范式二叉树的每个叶子节点,对于范式二叉树中每个分支,将左分支编码为0,右分支编码为1,将根节点到每个叶子节点的所有分支的编码构成每个叶子节点对应的十进制数的编码。

7.根据权利要求1所述的一种消防救援装备用数据智能管理系统,其特征在于,所述对分布序列进行更新,包括的步骤为:将分布序列中第一个元素挪到分布序列的末尾。

说明书 :

一种消防救援装备用数据智能管理系统

技术领域

[0001] 本发明涉及数据压缩存储领域,具体涉及一种消防救援装备用数据智能管理系统。

背景技术

[0002] 为了建立快速响应的消防救援机制,消防救援装备数据平台对消防救援装备进行电子化管理,对消防救援装备的类别、型号、使用情况、出入库记录等进行登记保存,使得消防救援时,消防救援装备可快速调配,确保消防救援的及时性以及有效性。
[0003] 由于消防救援装备相关数据的数据量大,需要进行压缩存储。现有的压缩算法如霍夫曼编码、算术编码等对于的压缩效率依赖于数据中每种字符的频率,当每种字符的频率差异较大时,利用霍夫曼编码、算术编码等可以取到较好的压缩效果,当每种字符的频率较为相近时,利用霍夫曼编码、算术编码难以取得较好的压缩效果。
[0004] 消防救援装备相关数据中每种字符的频率不一定相差较大,利用霍夫曼编码、算术编码等现有的压缩算法对消防救援装备相关数据进行压缩的压缩效率难以保证。

发明内容

[0005] 为了解决上述问题,本发明提供一种消防救援装备用数据智能管理系统,所述系统包括:
[0006] 消防数据获取模块,获取消防数据;
[0007] 消防数据预处理模块,将消防数据转换为原始序列,对原始数据利用BWT算法进行编码,得到重排序列;
[0008] 消防数据压缩模块,根据重排序列构建范式二叉树;获取重排序列中每种十进制数出现的序号,分别构成每种十进制数的序号序列;统计重排序列中每种十进制数每次出现时的游程,分别构成每种十进制数的游程序列;根据序号序列以及游程序列获取每种十进制数的分布位置;按照分布位置从小到大的顺序对所有种十进制数进行排序,得到分布序列;根据每种十进制数的分布位置以及游程序列获取更新位置序列;
[0009] 根据分布序列、更新位置序列以及范式二叉树对重排序列进行编码,包括:
[0010] S1:设置初始值为1的计数器;
[0011] S2:根据范式二叉树获取分布序列中每种十进制数的编码;
[0012] S3:根据每种十进制数对应的编码对重排序列中每个十进制数依次进行编码,每编码一个十进制数,将计数器加一,并将已编码的十进制数从重排序列中删除;当计数器的值等于更新位置序列中元素的值时,对分布序列进行更新;
[0013] S4:重复S2、S3,直到重排序列为空时停止迭代;将已编码的十进制数的编码结果构成压缩数据;
[0014] 消防数据存储模块,对压缩数据进行存储;
[0015] 消防数据解压模块,对压缩数据进行解压;
[0016] 消防数据管理模块,根据消防数据对消防救援装备进行管理。
[0017] 优选的,所述将消防数据转换为原始序列,包括的步骤为:
[0018] 将消防数据编码成二进制形式,得到二进制序列,将二进制序列划分为长度相等的多组二进制数,将每组二进制数转换为十进制数,将所有十进制数构成的序列作为原始序列。
[0019] 优选的,所述根据重排序列构建范式二叉树,包括的步骤为:
[0020] 统计重排序列中十进制数的种类数n,构建n层的范式二叉树,范式二叉树中每个左节点均为叶子节点,除最后一层的右节点之外,每个右节点均为父节点。
[0021] 优选的,所述根据序号序列以及游程序列获取每种十进制数的分布位置,包括的步骤为:
[0022]
[0023] 其中 为第i种十进制数在重排序列中的分布位置; 为第i种十进制数在重排序列中第j次出现时的序号; 为第i种十进制数在重排序列中第j次出现时的游程; 为第i种十进制数在重排序列中第k次出现时的游程; 为第i种十进制数在重排序列中出现的次数。
[0024] 优选的,所述根据每种十进制数的分布位置以及游程序列获取更新位置序列,包括的步骤为:
[0025] 将每种十进制数的游程序列中游程的最大值作为每种十进制数的最长游程,将分布序列中每种十进制数对应的分布位置加上每种十进制数的最长游程的一半,将所得结果再四舍五入取整,得到更新位置,将所有更新位置构成更新位置序列。
[0026] 优选的,所述根据范式二叉树获取分布序列中每种十进制数的编码,包括的步骤为:
[0027] 将分布序列中的每种十进制数按照从浅层到深层的顺序依次分配给范式二叉树的每个叶子节点,对于范式二叉树中每个分支,将左分支编码为0,右分支编码为1,将根节点到每个叶子节点的所有分支的编码构成每个叶子节点对应的十进制数的编码。
[0028] 优选的,所述对分布序列进行更新,包括的步骤为:
[0029] 将分布序列中第一个元素挪到分布序列的末尾。
[0030] 本发明实施例至少具有如下有益效果:本发明对消防数据进行编码获得原始序列,对原始序列进行重排使得原始序列中相同的十进制数在重排序列中尽可能集中分布,根据重排序列中每种十进制数出现的序号以及游程获取每种十进制数在重排序列中集中分布的位置,根据所有种十进制数在重排序列中集中分布的位置对所有种十进制数进行排序,得到分布序列,将分布序列中的每个元素分配给范式二叉树的每个叶子节点,得到每个十进制数的编码,使得重排序列中分布较为靠前的十进制数的编码长度越短。本发明根据重排序列中每种十进制数集中分布的位置以及最长游程获取更新位置序列,更新位置序列表示了分布序列中每种十进制数在重排序列中集中分布结束的位置,在根据范式二叉树对重排序列进行编码的过程中,每当达到更新位置序列中的位置时,对范式二叉树进行更新,使得当前正在编码的十进制数总能保持较短的编码,从而使得重排序列中每个十进制数的编码都尽可能短,进一步使得最终的压缩数据的数据量,压缩率大。传统的霍夫曼编码、算术编码等对于频率分布差异较大的数据可实现较好的压缩效果,对于频率分布差异较小的数据难以达到较好的压缩效果,本发明相较于现有的霍夫曼编码、算术编码等压缩方法,不但能够对频率分布差异较大的数据实现较好的压缩效果,也能够对频率分布差异较小的数据实现较好的压缩效果,且压缩效率较现有的霍夫曼编码、算术编码等压缩方法高。

附图说明

[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
[0032] 图1为本发明一个实施例提供的一种消防救援装备用数据智能管理系统的系统框图;
[0033] 图2为本发明的完全二叉树;
[0034] 图3为本发明的范式霍夫曼树;
[0035] 图4为本发明的范式二叉树;
[0036] 图5为本发明的范式二叉树叶子节点分配结果;
[0037] 图6为霍夫曼树。

具体实施方式

[0038] 为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种消防救援装备用数据智能管理系统,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
[0039] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
[0040] 下面结合附图具体的说明本发明所提供的一种消防救援装备用数据智能管理系统的具体方案。
[0041] 请参阅图1,其示出了本发明一个实施例提供的一种消防救援装备用数据智能管理系统,该系统包括以下模块:
[0042] 消防数据获取模块S001,获取消防救援装备数据平台的消防数据。
[0043] 需要说明的是,为了建立快速响应的消防救援机制,消防救援装备数据平台对消防救援装备进行电子化管理,对消防救援装备的类别、型号、使用情况、出入库记录等进行登记保存,使得消防救援时,消防救援装备可快速调配。
[0044] 在本发明实施例中,获取消防救援装备数据平台需要存储的消防救援装备相关的数据,称作消防数据。
[0045] 至此,获取了消防数据。
[0046] 消防数据预处理模块S002,将消防数据转换为原始序列,对原始序列进行数据重排,得到重排序列。
[0047] 需要说明的是,消防数据包括消防救援装备的类别、型号、使用情况、出入库记录等,包含了多种数据类型。为了便于后续压缩,需要对消防数据进行编码,将消防数据转换为统一的数据类型。
[0048] 在本发明实施例中,预设一个数值k,记作预设长度,在本发明实施例中,k=5,在其他实施例中,实施人员可根据实际实施情况设置k的值。
[0049] 对消防数据进行编码,将消防数据编码成二进制形式,得到二进制序列,在二进制序列之后补0,使得二进制序列的长度为k的倍数,记录补0的个数s。将二进制序列每k位划分为一组,将每组二进制数据转换为十进制数,将所有十进制数构成的序列作为原始序列。在本发明实施例中,将消防数据编码成二进制形式采用的编码方式为GB2312,在其他实施例中,实施人员可根据实际实施情况选择编码方式。
[0050] 需要说明的是,现有的压缩算法如霍夫曼编码、算术编码等的压缩效率依赖于数据中每种字符的频率,当每种字符的频率差异较大时,利用霍夫曼编码、算术编码等可以取到较好的压缩效果,当每种字符的频率较为相近时,利用霍夫曼编码、算术编码难以取得较好的压缩效果。原始序列为对消防数据进行编码得到,原始序列中十进制数字出现无规律,每种十进制数据的频率不一定相差较大,此时利用霍夫曼编码、算术编码等难以实现较好的压缩效果。例如,利用GB2312编码对消防数据“耐火救生绳”进行编码的结果为11000100110011011011101111110000101111101100100011001001111110101100100111111110,对应的原始序列为[24,19,6,27,23,28,5,30,25,3,4,31,21,18,15,30],该原始序列中每种十进制数分布的频率基本一致,利用霍夫曼编码、算术编码等压缩方法难以实现压缩。
[0051] 需要进一步说明的是,范式霍夫曼树中每个左节点均为叶子节点,除最后一层的右节点之外,每个右节点均为父节点。在霍夫曼编码中,当根据数据的频率构建的霍夫曼树越接近于完全二叉树时,压缩效率越低,当根据数据频率构建的霍夫曼树越接近于范式霍夫曼树时,压缩效率越高。因此本发明实施例不结合原始序列中数据的频率,直接构建与范式霍夫曼树形状相同的二叉树,称为范式二叉树。完全二叉树参见图2,范式霍夫曼树参见图3。但若直接为范式二叉树的每个叶子节点分配原始序列中一种十进制数,对原始序列进行压缩,达不到压缩的效果,甚至得到的压缩结果可能比原始序列的数据量更大。因此,本发明实施例对原始序列进行重排,使得相同的十进制数尽可能排列在一起,后续根据重排后的序列中每种十进制数出现的顺序为每种十进制数分配叶子节点进行编码,在编码过程中,动态调整每种十进制数对应的叶子节点,尽可能使得当前正在被编码的十进制数对应较浅层的叶子节点,从而使得所有十进制数的编码长度都较短,达到较好的压缩效果。BWT算法是一种数据重排算法,可以实现尽可能将相同的字符排列在相邻的位置。
[0052] 在本发明实施例中,对原始数据利用BWT算法进行编码,将编码结果作为重排序列。BWT算法为公知技术,在此不再详细赘述。
[0053] 至此,获取了重排序列。
[0054] 消防数据压缩模块S003,对重排序列进行压缩,得到压缩数据。
[0055] 需要说明的是,本发明实施例的目的是根据重排序列中每种十进制数出现的顺序为每种十进制数动态分配范式二叉树中的叶子节点进行编码,尽可能使得当前正在被编码的十进制数对应较浅层的叶子节点,从而使得所有十进制数的编码长度都较短,达到较好的压缩效果。
[0056] 在本发明实施例中,构建范式二叉树的方法如下:
[0057] 将相同的十进制数视作同一种十进制数,统计重排序列中十进制数的种类数,记为n,构建n层的范式二叉树,范式二叉树中每个左节点均为叶子节点,除最后一层的右节点之外,每个右节点均为父节点。当n=5时对应的范式二叉树如图4所示。
[0058] 获取重排序列中每种十进制数出现的序号,用 表示,如第i种十进制数在重排序列中第一次出现时的序号为 ,第二次出现时的序号为 。将每种十进制数在重排序列中出现时的所有序号构成每种十进制数的序号序列,如第i种十进制数的序号序列为,其中 表示第i种十进制数在重排序列中出现的次数。例如,重排序列为{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}时,重排序列中十进制数1出现的序号构成的序号序列为{1,9,10,11},2出现的序号构成的序号序列为{2,3,4,12}。
[0059] 统计重排序列中每种十进制数每次出现时的游程,用b表示,如第i种十进制数在重排序列中第一次出现时的游程为 ,第二次出现时的游程为 。将每种十进制数在重排序列中每次出现时的游程构成每种十进制数的游程序列,如第i种十进制数的游程序列为 ,其中 表示第i种十进制数在重排序列中出现的次数。例如,重排序列为{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}时,重排序列中十进制数1每次出现时的游程构成的游程序列为{1,3,3,3},2出现的序号构成的序号序列为{3,3,3,1}。
[0060] 根据重排序列中每种十进制数的序号序列以及游程序列获取每种十进制数在重排序列中的分布位置,如第i种十进制数在重排序列中的分布位置 为:
[0061]
[0062] 其中 为第i种十进制数在重排序列中的分布位置; 为第i种十进制数在重排序列中第j次出现时的序号; 为第i种十进制数在重排序列中第j次出现时的游程; 为第i种十进制数在重排序列中第k次出现时的游程; 为第i种十进制数在重排序列中出现的次数; 为对 进行归一化的结果,将 作为序号的权重,当游程越长时,第i种十进制数在该序号对应的位置周围分布的越多,此时权重越大,当游程越短时,第i种十进制数在该序号对应的位置周围分布的越少,此时权重越小。
[0063] 例如重排序列中{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}中十进制数1的序号序列为{1,9,10,11},游程序列为{1,3,3,3},则对应的分布位置为9.1。2的序号序列为{2,3,4,12},游程序列为{3,3,3,1},则对应的分布位置为3.9。同理3、4、5对应的分布位置分别为17.5、15、6.5。
[0064] 按照分布位置从小到大的顺序对所有种十进制数进行排序,得到分布序列。例如,1、2、3、4、5对应的分布位置分别为9.1、3.9、17.5、15、6.5,则根据分布位置对十进制数排列得到的分布序列为{2,5,1,4,3}。
[0065] 将每种十进制数的游程序列中游程的最大值作为每种十进制数的最长游程,将分布序列中每种十进制数对应的分布位置加上每种十进制数的最长游程的一半,将所得结果再四舍五入取整,得到更新位置,将所有更新位置构成更新位置序列。例如,分布序列{2,5,1,4,3}中每种十进制数对应的分布位置分别为3.9、6.5、9.1、15、17.5,最长游程分别为3、
4、3、3、3,则2对应的更新位置为 ,其中 为四舍五入符号。同理,5、1、4、3对应的更新位置分别为9、11、17、19,则更新位置序列为{5,9,11,17,19}。
[0066] 需要说明的是,更新位置序列表示了分布序列中每种十进制数在重排序列中集中分布结束的位置,后续依据更新位置序列在重排序列编码过程中更新分布序列以及范式二叉树,可使得当前正在被编码的十进制数的编码长度大概率较短,从而达到较好的压缩效果。
[0067] 根据分布序列、更新位置序列以及范式二叉树对重排序列进行编码,具体过程如下:
[0068] 1、设置初始值为1的计数器;
[0069] 2、根据范式二叉树获取分布序列中每种十进制数的编码,具体为:
[0070] 将分布序列中的每种十进制数按照从浅层到深层的顺序依次分配给范式二叉树的每个叶子节点,对于范式二叉树中每个分支,将左分支编码为0,右分支编码为1,将根节点到每个叶子节点的所有分支的编码构成每个叶子节点对应的十进制数的编码。例如,将分布序列{2,5,1,4,3}分配给图4中的范式二叉树得到的结果参见图5,根据图5得到2的编码为0,5的编码为10、1的编码为110、4的编码为1110、3的编码为1111。
[0071] 3、根据每种十进制数对应的编码对重排序列中每个十进制数依次进行编码,每编码一个十进制数,将计数器加一,并将已编码的十进制数从重排序列中删除。当计数器的值等于更新位置序列中元素的值时,对分布序列进行更新,将分布序列中第一个元素挪到分布序列的末尾;
[0072] 4、重复步骤2‑3,直到重排序列为空时停止迭代。将已编码的十进制数的编码结果构成一个二值序列,该二值序列即为最终的压缩数据。
[0073] 例如,分布序列为{2,5,1,4,3}、更新位置序列为{5,9,11,17,19}时,对重排序列{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}进行编码的过程如下:
[0074] 计数器的初始值为1,将分布序列{2,5,1,4,3}分配给范式二叉树得到2、5、1、4、3的编码分别为0、10、110、1110、1111。则对重排序列{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}中1,2,2,2依次进行编码得到110000,此时计数器值为5,重排序列为{5,5,5,5,1,1,
1,2,3,4,4,4,3,3,3},将分布序列更新为{5,1,4,3,2}。
[0075] 将分布序列{5,1,4,3,2}分配给范式二叉树得到5、1、4、3、2的编码分别为0、10、110、1110、1111,则对重排序列{5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}中5,5,5,5依次进行编码得到0000,此时计数器值为9,重排序列为{1,1,1,2,3,4,4,4,3,3,3},将分布序列更新为{1,4,3,2,5}。
[0076] 将分布序列{1,4,3,2,5}分配给范式二叉树得到1、4、3、2、5的编码分别为0、10、110、1110、1111,则对重排序列{1,1,1,2,3,4,4,4,3,3,3}中11依次进行编码得到00,此时计数器值为11,重排序列为{1,2,3,4,4,4,3,3,3},将分布序列更新为{4,3,2,5,1}。
[0077] 将分布序列{4,3,2,5,1}分配给范式二叉树得到4、3、2、5、1的编码分别为0、10、110、1110、1111,则对重排序列{1,2,3,4,4,4,3,3,3}中1,2,3,4,4,4依次进行编码得到
111111010000,此时计数器值为17,重排序列为{3,3,3},将分布序列更新为{3,2,5,1,4}。
[0078] 将分布序列{3,2,5,1,4}分配给范式二叉树得到3、2、5、1、4的编码分别为0、10、110、1110、1111,则对重排序列{3,3,3}中3,3,3依次进行编码得到000,此时计数器值为19,重排序列为空,将分布序列更新为{2,5,1,4,3}。停止迭代。
[0079] 则最终的压缩数据为110000000000111111010000000,而利用普通的霍夫曼编码对重排序列{1,2,2,2,5,5,5,5,1,1,1,2,3,4,4,4,3,3,3}进行压缩构建的霍夫曼树如图6所示,得到的压缩数据为011010101111111101010110000001001001000000000,本发明实施例中压缩数据的长度为27,霍夫曼编码中压缩数据的长度为45,本发明实施例相较于霍夫曼编码明显提高了压缩效率。
[0080] 至此,获取了压缩数据。
[0081] 需要说明的是,本发明实施例根据重排序列中每种十进制数出现的序号以及游程获取每种十进制数在重排序列中集中分布的位置,根据所有种十进制数在重排序列中集中分布的位置对所有种十进制数进行排序,得到分布序列,将分布序列中的每个元素分配给范式二叉树的每个叶子节点,得到每个十进制数的编码,使得重排序列中分布较为靠前的十进制数的编码长度越短。本发明实施例根据重排序列中每种十进制数集中分布的位置以及最长游程获取更新位置序列,更新位置序列表示了分布序列中每种十进制数在重排序列中集中分布结束的位置,在根据范式二叉树对重排序列进行编码的过程中,每当达到更新位置序列中的位置时,对范式二叉树进行更新,使得当前正在编码的十进制数总能保持较短的编码,从而使得重排序列中每个十进制数的编码都尽可能短,进一步使得最终的压缩数据的数据量,压缩率大。传统的霍夫曼编码、算术编码等对于频率分布差异较大的数据可实现较好的压缩效果,对于频率分布差异较小的数据难以达到较好的压缩效果,本发明实施例相较于现有的霍夫曼编码、算术编码等压缩方法,不但能够对频率分布差异较大的数据实现较好的压缩效果,也能够对频率分布差异较小的数据实现较好的压缩效果,且压缩效率较现有的霍夫曼编码、算术编码等压缩方法高。
[0082] 消防数据存储模块S004,对压缩数据进行存储。
[0083] 将压缩数据、最初始的分布序列(即更新前的分布序列)、更新位置序列以及消防数据预处理模块中记录的补0的个数s存储至消防救援装备服务器。
[0084] 消防数据解压模块S005,对压缩数据进行解压。
[0085] 当需要查看或使用消防数据时,需要对存储在消防救援装备服务器的压缩数据进行解压,具体过程为:
[0086] 1、构建范式二叉树,设置初始值为1的计数器;
[0087] 2、根据范式二叉树获取分布序列中每个元素的编码;
[0088] 3、根据每种十进制数对应的编码依次对压缩数据中的数值进行解压,每解压得到一个十进制数,将计数器加一,当计数器的值等于更新位置序列中元素的值时,对分布序列进行更新,将分布序列中第一个元素挪到分布序列的末尾;
[0089] 4、重复步骤2‑3,直到压缩数据中的所有数值已完成解压时停止迭代。解压得到的所有十进制数构成的序列即为重排序列。
[0090] 5、利用BWT算法对重排序列进行解码,得到原始数据。将原始数据中的每个十进制数转换为二进制数,将所有二进制数拼接在一起,得到二进制序列。消防救援装备服务器中还存储了消防数据预处理模块中记录的补0的个数s,将二进制序列中末尾s个0去掉,对去掉s个0之后的二进制序列利用消防数据预处理中的编码方法进行解码,得到消防数据。
[0091] 至此,完成了压缩数据的解压,得到了消防数据。
[0092] 消防数据管理模块S006,根据消防数据对消防救援装备进行管理。
[0093] 消防数据为消防救援装备相关的数据,包含了消防救援装备的类别、型号、使用情况、出入库记录等,消防救援装备数据平台根据消防救援装备的使用情况,及时提醒相关工作人员采购更新消防救援装备。在进行消防救援时,消防救援装备数据平台进行消防救援装备的快速调配,确保消防救援的及时性以及有效性。
[0094] 综上所述,本发明的系统包括消防数据获取模块、消防数据预处理模块、消防数据压缩模块、消防数据存储模块、消防数据解压模块、消防数据管理模块,本发明实施例对消防数据进行编码获得原始序列,对原始序列进行重排使得原始序列中相同的十进制数在重排序列中尽可能集中分布,根据重排序列中每种十进制数出现的序号以及游程获取每种十进制数在重排序列中集中分布的位置,根据所有种十进制数在重排序列中集中分布的位置对所有种十进制数进行排序,得到分布序列,将分布序列中的每个元素分配给范式二叉树的每个叶子节点,得到每个十进制数的编码,使得重排序列中分布较为靠前的十进制数的编码长度越短。本发明实施例根据重排序列中每种十进制数集中分布的位置以及最长游程获取更新位置序列,更新位置序列表示了分布序列中每种十进制数在重排序列中集中分布结束的位置,在根据范式二叉树对重排序列进行编码的过程中,每当达到更新位置序列中的位置时,对范式二叉树进行更新,使得当前正在编码的十进制数总能保持较短的编码,从而使得重排序列中每个十进制数的编码都尽可能短,进一步使得最终的压缩数据的数据量,压缩率大。传统的霍夫曼编码、算术编码等对于频率分布差异较大的数据可实现较好的压缩效果,对于频率分布差异较小的数据难以达到较好的压缩效果,本发明实施例相较于现有的霍夫曼编码、算术编码等压缩方法,不但能够对频率分布差异较大的数据实现较好的压缩效果,也能够对频率分布差异较小的数据实现较好的压缩效果,且压缩效率较现有的霍夫曼编码、算术编码等压缩方法高。
[0095] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。