CN112054802B - 一种电力计量数据压缩、解压缩方法、装置及电子设备 - Google Patents
一种电力计量数据压缩、解压缩方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112054802B CN112054802B CN202010744882.8A CN202010744882A CN112054802B CN 112054802 B CN112054802 B CN 112054802B CN 202010744882 A CN202010744882 A CN 202010744882A CN 112054802 B CN112054802 B CN 112054802B
- Authority
- CN
- China
- Prior art keywords
- bit
- column
- byte
- coding
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Abstract
本发明公开了一种电力计量数据压缩、解压缩方法、装置及电子设备,所述压缩方法包括步骤:将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;根据字节列中的数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、用于表征各字节列所用压缩编码方式的列编码方式位图。通过采用上述技术方案,本发明大幅度提高了电力计量数据的压缩性能、实现更简单、占用资源更少、计算量更小、压缩速度更快。
Description
技术领域
本发明涉及电力计量数据通信领域,特别地,涉及一种电力计量数据压缩、解压缩方法、装置及电子设备。
背景技术
电力系统正在从自动化向智能化的方向发展,智能化需要以海量的电力数据作为支撑,这些数据需要从端侧的传感设备汇聚到边侧的计算设备和电力云。这部分应用于智能化的电力数据往往是连续计量的数据,特点是数据间相关性强,数据量巨大,这部分数据需要经过压缩后汇聚到边和云。目前的压缩算法并未充分考虑电力数据的这些特点,对电力数据的压缩效果并不理想。同时,在目前的电力数据汇聚通道中,数据首先从端汇聚到边,再从边汇聚到云。其中,从边到云的通道,以4G网络为主,未来会升级到5G网络,因而不存在带宽的瓶颈;而从端到边的通道,以宽带电力线载波(HPLC)为主,其带宽远低于4G网络,无法承载端到边的海量负荷数据,进而将成为电力系统智能化的瓶颈。
因此,如何实现一个针对电力数据的高效压缩算法,大幅减少HPLC通道的数据传输量,成为目前急需解决的问题。
发明内容
本发明提供了一种电力计量数据压缩、解压缩方法、装置及电子设备,针对电力数据的特点,实现对电力数据的高效压缩。
本发明采用的技术方案如下:
第一方面,本发明的实施例提供了一种电力计量数据压缩方法,应用于发送端,包括步骤:
将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
根据读取的各字节列中数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、用于表征各字节列所用压缩编码方式的列编码方式位图。
进一步地,所述根据各字节列中数值的重复度选择相应的压缩方式对字节列逐个进行编码压缩,具体包括步骤:
当字节列中各行数值具有高重复度时,采用纵向字节列LV二元组编码对当前字节列中各行数值进行编码压缩,编码形式为:
(L,V)…(L,V)
其中,V为字节的数据值,L为该值重复的次数;
当字节列中各行数值不具备高重复度时,采用纵向比特列编码,对构成该字节列的8个比特列,逐列进行编码压缩,生成字节列编码头和压缩后的比特流数据,所述字节列编码头用于表征各比特列采用的纵向比特列编码的类型。
进一步地,所述纵向比特列编码的类型包括:
可变长度LV比特列编码,当所述比特列中数据存在重复时,通过可变长度LV比特列编码对8个比特列逐列进行编码,得到由若干编码单元组成的比特流数据,其中,每个编码单元均包括value域和len域,所述value域包括比特列中某比特位或比特组合,len域包括value域中所示某比特位或比特组合的重复次数;
直接使用原文不编码,当对某比特列采用可变长度LV比特列编码后得到的比特流长度大于所述比特列的行数m时,通过直接使用该比特列的原始数据来组成编码后的比特流数据。
进一步地,所述编码单元根据长度分为4比特编码、8比特编码或者24比特编码,其中:
当采用4比特编码时,所述编码单元包括value域和len1域,value域和len1域的长度均为2比特,其所表征的原始码为value域的比特组合重复len1次;
当采用8比特编码时,所述编码单元包括value域、len1域和len2域,其中len1域为00,len2域的长度为4比特,此时编码单元所表征的原始码为value域的比特组合重复len2次;若len2域的4个比特均为0时转义为本编码单元只含1个比特,即value域中比特组合的第一个比特:
当采用24比特编码时,所述编码单元包括value域、len1域、len2域和len3域,其中len3域的长度为16比特,且value域、len1域、len2域的组合可以是10-00-0000或者01-00-0000,此时编码单元所表征的原始码为value域的第一个比特位重复len3次。
进一步地,在完成整个字节列的8个比特列的编码后,生成的比特流若不是8比特对齐时,还包括对编码后的比特流进行8比特补齐的步骤。
第二方面,本发明的实施例提供了一种电力计量数据压缩装置,包括:
字节列读取模块,用于将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
纵向编码压缩模块,用于根据读取的各字节列中的各行数值的重复度选择相应的压缩编码方式对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩的数据的行数m、列数n、各字节列对应的压缩编码方式。
第三方面,本发明的实施例提供了一种电力计量数据解压缩方法,应用于接收端,用于对采用如所述电力计量数据压缩方法得到的压缩数据进行解压缩,包括步骤:
读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据。
进一步地,所述根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的电力计量数据具体包括步骤:
对于采用纵向字节列LV二元组编码所得的压缩数据,读出每一组(L、V),并依此解码,直至本字节列解码出m个字节;
对于纵向比特列编码所得的压缩数据,首先读取字节列编码头,得到每一个比特列的编码方式;
对于采用直接使用原文不编码的比特列,直接恢复成相应的比特列;对于采用可变长度LV比特列编码的比特列,读出每一个编码单元的value域、len1域,并进一步判断是否存在len2域和len3域,得到当前编码单元的编码长度,并依此进行解码,当解码出m个比特后,即完成本比特列的解码;
当完成本字节列的所有8个比特列的解码后,跳过编码时8比特对齐所补入的比特数,再进入下一个字节列的解码。
第四方面,本发明的实施例提供了一种电力计量数据解压缩装置,包括:
编码参数获取模块,用于读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
字节列解码模块,用于根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据。
第五方面,本发明的实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面和第三方面所述的方法。
本发明具有以下有益效果:
本发明的压缩方法通过将待压缩的m行*n列电力计量数据以字节为单位划分为n个字节列,并以纵向的方式逐列读入各字节列;接着根据读取的各字节列中的各行数值的重复度选择相应的压缩编码方式对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据。本发明充分利用了电力计量数据的自身特性,基于各列数据的变化对数据进行纵向无损压缩,并大幅度提高了压缩性能、实现更简单、占用资源更少、计算量更小、压缩速度更快。
本发明的思路是基于连续计量的数据的特点,以纵向字节或者纵向比特组织待压缩数据,构建最大程度的数据重复度,从而达到最大的压缩比。事实上,本发明也适用于除电力行业外的其他行业的连续数据压缩。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明优选实施例的压缩方法流程示意图。
图2是本发明优选实施例的压缩头和压缩数据的组成示意图。
图3是本发明优选实施例的压缩头的组成示意图。
图4是本发明优选实施例的可变长度LV比特列编码的编码单元组成示意图。
图5是本发明优选实施例的压缩装置模块示意图。
图6是本发明优选实施例的解压缩方法流程示意图。
图7是本发明优选实施例的解压缩装置模块示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
参照图1,本发明的优选实施例提供了一种电力计量数据压缩方法,应用于发送端,包括步骤:
S1、将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
S2、根据读取的各字节列中数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、用于表征各字节列所用压缩编码方式的列编码方式位图。
目前的电力计量数据具有如下特点:
1)按数据块进行存储,数据按照可预见的方式排列,即一个单元的数据块是所包含的物理量固定的,例如,可能包括:电压(2字节)、电流(4字节)、功率(4字节)。
2)块内的数据,是具有时间延续性的,即前一个单元的数据和后一个单元的数据在时间上是连续的,因此对于秒级粒度的数据,在大多数时间里前后数据的值是相近的,甚至很多是相同的。
以下面的这个数据块为例:
每个单元的数据块,包含电压(高、低两字节)、电流(高高、高低、低高、低低四字节)、功率(高高、高低、低高、低低四字节)。
表1:电力计量数据的数据块构成:
从表1可以看到,数据块中的电压高字节、电流的高高字节、电流的高低字节、电流的低高字节、功率的高高字节、功率的高低字节几乎不变,如电压高字节的值均为08,电流的高高字节和电流的高低字节的值均为00,电流的低高字节均为01,功率的高高字节、功率的高低字节均为00。所以我们在进行压缩的时候,如果不按照每个数据单元进行压缩(即横向压缩,压缩完一组电压、电流、功率后再压缩下一组电压、电流、功率),而是按照每个物理量的每个字节进行压缩(纵向压缩,压缩完所有的电压高字节、再压缩所有的电压低字节,电流、功率以此类推),那么压缩时我们在会遇到两种情况,一种如电压的高字节,电流的高高字节,功率的高高字节,基本不变,可以得到极高的压缩比,另一种,如电压的低字节,电流的低低字节,功率的低低字节,原始值有一定变化,但由于这些值具有较强的时间延续性,利用这种时间延续性,选择相应的压缩编码方式,获得最好的压缩效果。
本实施例的待压缩数据为一个m(个字节)*n(个字节)的矩阵。m为数据的纵向深度(行数),n为数据的横向深度(列数)。
压缩的过程,会生成一个描述性的压缩头,置于压缩数据之前,如图2所示。压缩头描述本次压缩的使用到的参数,解压缩时使用相同的参数进行解压缩。压缩头包括m、n和列编码方式位图,其中m为压缩前的原始数据按字节计算的行数,n为原始数据按字节计算的列数,即原始数据为m行*n列个字节。列编码方式位图中的每一位都和一个字节列相对应,其值描述该列的编码方式。
压缩头为可变长度(字节数),压缩和解压双方定义好m和n所占用的字节数,余下字节是列编码方式位图,位图的每一位定义相应列的编码方式,如设置0为字节列的LV二元组编码,设置1为比特列编码,编码位图部分的长度可变,共(n+7)/8个字节,以保证每一字节列能够对应图中的一个比特。
m、n可以按照需求进行调整。只要压缩方和解压缩方事先定好m和n占用的比特个数即可。如果不做事先约定,可以缺省约定m占用2个字节,n占用1个字节,此时原始数据最大为65535行*255列个字节。
下面以m和n共占用2个字节为例进行说明。
如图3所示,如果m占用10比特位,则n占用6个比特位,此时m的最大值为1023,即待压缩数据最大的行数是1023,如果待压缩数据是秒周期数据,且每行包括一秒的数据,则待压缩数据最多为1023/60约17分钟数据;此时n占用6个比特位,最大值为63,即最大的列数是63列,如果每个物理量占用4字节,则一行可以记录约15个物理量。
列编码方式位图中的每一个比特对应一个字节列,如果该比特为0,则对应字节列采用字节列LV二元组编码,如果该比特为1,则该列采用比特列编码。
如针对表1中的电压高字节列,如果在列编码方式位图中对应比特位为0,则此字节列采用纵向字节列LV二元组编码方式进行编码,针对表1中的电压低字节列,如果在列编码方式位图中对应比特位为1,则此字节列采用按纵向比特列编码方式进行编码。
本实施例的压缩方法通过将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;接着根据读取的各字节列中数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据。本实施例充分利用了电力计量数据的自身特性,如部分字节列数值无变化重复率高、部分字节列虽有变化但具有时间延续性等特性,从而实现基于各列数据的变化对数据进行纵向无损压缩,计算量小、压缩速度快。相比现有的横向压缩方式大幅度提高了压缩性能、实现更简单、占用资源更少。
在本发明的优选实施例中,所述根据各字节列中数值的重复度选择相应的压缩方式对字节列逐个进行编码压缩,具体包括步骤:
当字节列中各行数值具有高重复度时,采用纵向字节列LV二元组编码对当前字节列中各行数值进行编码压缩,编码形式为:
(L,V)…(L,V)
其中,V为字节的数据值,L为该值重复的次数。
如果某一列由1000个字节的8构成,则使用LV二元组可以编码为(255,8,255,8,255,8,235,8)。如果某一列先后由200个7和500个8和200个9组成,则使用LV二元组编码为(200,7,255,8,245,8,200,9)。
特殊的,L为0时,转义为整个列的字节个数,即m,因此,如果整个字节列全部字节都是8,则可以直接编码为0,8。
本实施例对数据块中的电压高字节、电流的高高字节、电流的高低字节、电流的低高字节、功率的高高字节、功率的高低字节等几乎不变的字节列采用纵向字节列LV二元组编码,能对重复的字节列做最大程度的压缩,如对于电压来说,为了保留小数点后1位的精度(即电压十分之一位的精度),我们记录值的是电压值的10倍。对于电压记录值在0x0800和0x08ff之间的数据,即电压值在204.8V和230.3V之间的数据,他的高字节都是08,如果要压缩的电压数据在这个幅值区间内,使用纵向字节列LV二元组编码进行压缩,我们只用使用一个(0,8)二元组即可以完成压缩,幅度提高了压缩性能。而事实上,对于绝大部分连续的电力测量值,他们的高字节基本不变,具备很大的重复性,非常适用于纵向字节列LV二元组编码。
当字节列中各行数值不具备高重复度时,采用纵向比特列编码,对构成该字节列的8个比特列,逐列进行编码压缩,生成字节列编码头和压缩后的比特流数据,所述字节列编码头用于表征各比特列采用的纵向比特列编码的类型。
由于8个比特列构成一个字节列,本实施例在纵向比特列编码方式中,对构成这个字节列的8个比特列,逐列进行编码,如针对数值重复度较低的字节列,如电压的低字节,电流和功率的低低字节,再进一步将该字节列按照比特切成纵向比特列,利用数据的连续性在更细的粒度上构建数据重复度,然后再逐列进行编码压缩,生成字节列编码头和压缩后的比特流数据。对于一个字节列使用比特列编码,需要创建一个字节的字节列编码头,这个编码头,按位指示出这个字节列的每个比特列使用的编码方式,例如,0表示不编码,1表示可变长度LV比特列编码。
具体地,所述纵向比特列编码的类型包括可变长度LV比特列编码和直接使用原文不编码,其中:
所述可变长度LV比特列编码具体为:当所述比特列中数据重复度较高时,通过可变长度LV比特列编码对8个比特列逐列进行编码,得到由若干编码单元并组成的比特流数据,其中,每个编码单元均包括value域和len域,所述value域包括比特列中某比特位或比特组合,len域包括value域中所示某比特位或比特组合的重复次数;
所述直接使用原文不编码具体为:当对某比特列采用可变长度LV比特列编码后得到的比特流长度大于所述比特列的行数m时,通过直接使用该比特列的原始数据来组成编码后的比特流数据。
本实施例对这些纵向比特列可以进一步分成纵向重复度较高的比特列和重复度低的比特列,对于纵向重复度较高的比特列,优先使用可变长度LV比特列编码,对于重复度低的比特列,依据压缩效果,使用原文不编码或者使用可变长度LV比特列编码。当使用可变长度LV比特列编码时,如果编码结果超出了m个比特(即比不压缩的原始码还长),则切换为使用原始数据不编码的方式。
如图4所示,在本发明的优选实施例中,所述编码单元根据长度分为4比特编码、8比特编码或者24比特编码,其中:
当采用4比特编码时,所述编码单元包括value域和len1域,value域和len1域的长度均为2比特,其所表征的原始码为value域的比特组合重复len1次;
当采用8比特编码时,所述编码单元包括value域、len1域和len2域,其中len1域为00,len2域的长度为4比特,此时编码单元所表征的原始码为value域的比特组合重复len2次;若len2域的4个比特均为0时转义为本编码单元只含1个比特,即value域中比特组合的第一个比特:
当采用24比特编码时,所述编码单元包括value域、len1域、len2域和len3域,其中len3域的长度为16比特,且value域、len1域、len2域的组合可以是10-00-0000或者01-00-0000,此时编码单元所表征的原始码为value域的第一个比特位重复len3次。
也就是说,本实施例通过以下方式确定编码单元的长度:
1)value域、len1域、len2域为10-00-0000或者01-00-0000时,为24比特编码,此时原始码为value域的第一个比特位重复len3次。
2)除1)的情况外,当len1域为00时,为8比特编码,此时原始码为value域的比特组合重复len2次。
3)其他情况为4比特编码,此时原始码为value域的比特组合重复len1次。
本实施例中,value域包括两个比特,可以为00、01、10、11,其中:
00,表示本编码单元的原始码为以00或0开始。
11,表示本编码单元的原始码为以11或1开始。
01,表示本编码单元的原始码为以01或0开始。
10,表示本编码单元的原始码为以10或1开始。
len1域包含两个比特,其中00表示本编码单元扩展为8比特,其他值表示本编码单元为4比特,4比特编码单元中的len1域的值定义本编码单元包含value域比特组合的组数:
len1为01表示本编码单元的原始码包含1组value中的比特组合,如11-01对应的原始码为11
len1为10表示本编码单元的原始码包含2组value中的比特组合,如01-10对应的原始码为0101
len1为11表示本编码单元的原始码包含3组value中的比特组合,如00-11对应的原始码为000000。
len1为00表示本编码单元采用8比特编码,其后4个比特的len2域定义本编码单元的原始码包含value中的比特组合的组数,特殊的,len2域的4个比特为全0的情况转义为本编码单元的原始码只含1个比特,即value中比特组合的第一个比特:
如00-00-1111对应本编码单元的原始码包含15个00的组合,即连续30个比特的0
如01-00-0111对应本编码单元的原始码包含7个01的组合,即01010101010101
如11-00-0000对应本编码单元的原始码包含1个比特的1。
按此规则编码,可以发现11-00-0000和10-00-0000重复对应了1个比特的1,00-00-0000和01-00-0000重复对应了1个比特的0。因此将10-00-0000和01-00-0000做进一步扩展,本实施例将这两种情况扩展为24比特编码,其后的两个字节扩展为len3,即本编码表示value域的第一个比特为重复len3次。如10-00-0000 11111111 11111111表示连续65535个比特的1,如01-00-0000 00001111 11111111表示连续4095个比特的0。
完成整个字节列的8个比特列的编码后,生成的比特流,在完成整个字节列的8个比特列的编码后生成的比特流若不是8比特对齐时,还需要对编码压缩后的比特流进行8比特补齐,补齐的目的是可以方便的切换到后续的纵向字节列LV二元组编码,以便进行下一个字节列的编码。
上述实施例按纵向字节列进行编码压缩,可以将一段电力计量数据,按字节切成纵向重复为主的部分(如电压的高字节)和纵向连续为主的部分(如电压的低字节),对于纵向重复为主的字节列使用纵向字节列LV二元组编码,对于纵向连续为主的字节列,再进一步按照比特切成纵向比特列,这些纵向比特列可以进一步分成纵向重复度较高的比特列和纵向重复度低的比特列,对于纵向重复度较高的比特列,优先使用可变长度LV比特列编码,对于纵向重复度低的比特列,依据压缩效果,使用原文不编码或者使用可变长度LV比特列编码。当使用可变长度LV比特列编码时,如果编码结果超出了m个比特(即比不压缩的原始码还长),则切换为使用原始数据不编码的方式。
现实应用中的电力计量数据,尤其是秒级的计量数据,其分割后的各个纵向字节列,正是具备这种重复性或连续性的特征,使用上述实施例的按纵向字节列进行压缩的电力计量数据压缩方法,可以取得非常好的压缩效果。
如图5所示,在本发明的优选实施例还提供了一种电力计量数据压缩装置,包括:
字节列读取模块,用于将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
纵向编码压缩模块,用于根据读取的各字节列中的各行数值之间的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、各字节列对应的压缩编码方式。
本实施例的压缩装置通过字节列读取模块将待压缩的m行*n列电力计量数据以字节为单位,并采用纵向编码压缩模块以纵向的方式逐列读入,形成n个字节列;接着根据读取的各字节列中的各行数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据。本实施例充分利用了电力计量数据的自身特性,如部分字节列数值重复度高、部分字节列虽有变化但具有时间延续性等特性,从而实现基于各列数据的变化对数据进行纵向无损压缩,相比现有的横向压缩方式大幅度提高了压缩性能、实现更简单、占用资源更少。
本压缩装置可以实现上述实施例中任一压缩方法,具备上述压缩方法的功能和有益效果,未在本实施例中详细描述的细节,可参看上述实施例提供的压缩方法。
如图6所示,本发明的优选实施例还提供了一种电力计量数据解压缩方法,应用于接收端,用于对采用所述电力计量数据压缩方法得到的压缩数据进行解压缩,包括步骤:
S1、读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
S2、根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据。
本实施例提供的解压缩方法可将压缩数据恢复成原始数据且没有任何损失,计算量小,解压速度快。
在本发明的优选实施例中,所述根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的电力计量数据具体包括步骤:
S21、对于采用纵向字节列LV二元组编码所得的压缩数据,读出每一组(L、V),并依此解码,直至本字节列解码出m个字节;
S22、对于纵向比特列编码所得的压缩数据,首先读取字节列编码头,得到每一个比特列的编码方式;
S23、对于采用直接使用原文不编码的比特列,直接恢复成相应的比特列;对于采用可变长度LV比特列编码的比特列,读出每一个编码单元的value域、len1域,并进一步判断是否存在len2和len3域,得到当前编码单元的编码长度,并依此进行解码,当解码出m个比特后,即完成本比特列的解码;
S24、当完成本字节列的所有8个比特列的解码后,跳过编码时8比特对齐所补入的比特数,再进入下一个字节列的解码。
本实施例的解压缩方法可将压缩数据恢复成原始数据且没有任何损失,进一步确保解压后数据的准确性、完整性。
如图7所示,本发明的优选实施例还提供了一种电力计量数据解压缩装置,包括:
编码参数获取模块,用于读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
字节列解码模块,用于根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据。
本发明的优选实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的压缩方法和解压缩方法。
需要说明的是,本发明电力计量数据可以包括但不限于电流、电压、电量、功率等。其他如温度等工况数据也可以使用本发明进行压缩和解压缩。
需要说明的是,本发明的思路是基于连续计量的数据的特点,以纵向字节或者纵向比特组织待压缩数据,构建最大程度的数据重复度,从而达到最大的压缩比。本发明也可以适用于电力行业外的其他行业的连续数据压缩。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例方法所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个或者多个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory),磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种电力计量数据压缩方法,应用于发送端,其特征在于,包括步骤:
将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
根据读取的各字节列中数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、用于表征各字节列所用压缩编码方式的列编码方式位图,具体包括步骤:
当字节列中各行数值具有高重复度时,采用纵向字节列LV二元组编码对当前字节列中各行数值进行编码压缩,编码形式为:
(L1,V1)…(Lm,Vm)
其中,Vm为当前字节列中第m行字节的数据值,Lm为该数据值重复的次数;
当字节列中各行数值不具备高重复度时,采用纵向比特列编码,对构成该字节列的8个比特列,逐列进行编码压缩,生成字节列编码头和压缩后的比特流数据,所述字节列编码头用于表征各比特列采用的纵向比特列编码的类型。
2.根据权利要求1所述的电力计量数据压缩方法,其特征在于,所述纵向比特列编码的类型包括:
可变长度LV比特列编码,当所述比特列中数据存在重复时,通过可变长度LV比特列编码对8个比特列逐列进行编码,得到由若干编码单元组成的比特流数据,其中,每个编码单元均包括value域和len域,所述value域包括比特列中某比特位或比特组合,len域包括value域中所示某比特位或比特组合的重复次数;
直接使用原文不编码,当对某比特列采用可变长度LV比特列编码后得到的比特流长度大于所述比特列的行数m时,通过直接使用该比特列的原始数据来组成编码后的比特流数据。
3.根据权利要求2所述的电力计量数据压缩方法,其特征在于,所述编码单元根据长度分为4比特编码、8比特编码或者24比特编码,其中:
当采用4比特编码时,所述编码单元包括value域和len1域,value域和len1域的长度均为2比特,其所表征的原始码为value域的比特组合重复len1次;
当采用8比特编码时,所述编码单元包括value域、len1域和len2域,其中len1域为00,len2域的长度为4比特,此时编码单元所表征的原始码为value域的比特组合重复len2次;若len2域的4个比特均为0时转义为本编码单元只含1个比特,即value域中比特组合的第一个比特:
当采用24比特编码时,所述编码单元包括value域、len1域、len2域和len3域,其中len3域的长度为16比特,且value域、len1域、len2域的组合采用10-00-0000或者01-00-0000,此时编码单元所表征的原始码为value域的第一个比特位重复len3次。
4.根据权利要求3所述的电力计量数据压缩方法,其特征在于,在完成整个字节列的8个比特列的编码后,生成的比特流若不是8比特对齐时,还包括对编码后的比特流进行8比特补齐的步骤。
5.一种电力计量数据压缩装置,其特征在于,包括:
字节列读取模块,用于将待压缩的m行*n列电力计量数据以字节为单位以纵向的方式逐列读入,形成n个字节列;
纵向编码压缩模块,用于根据读取的各字节列中的各行数值的重复度选择相应的压缩编码方式,对各字节列逐列进行编码压缩,得到具有压缩头的压缩数据,所述压缩头包括待压缩数据的行数m、列数n、各字节列对应的压缩编码方式位图,具体包括步骤:
当字节列中各行数值具有高重复度时,采用纵向字节列LV二元组编码对当前字节列中各行数值进行编码压缩,编码形式为:
(L1,V1)…(Lm,Vm)
其中,Vm为当前字节列中第m行字节的数据值,Lm为该数据值重复的次数;
当字节列中各行数值不具备高重复度时,采用纵向比特列编码,对构成该字节列的8个比特列,逐列进行编码压缩,生成字节列编码头和压缩后的比特流数据,所述字节列编码头用于表征各比特列采用的纵向比特列编码的类型。
6.一种电力计量数据解压缩方法,应用于接收端,用于对采用如权利要求3-4中任一项所述电力计量数据压缩方法得到的压缩数据进行解压缩,其特征在于,包括步骤:
读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据,具体包括步骤:
对于采用纵向字节列LV二元组编码所得的压缩数据,读出每一组(L,V),并依此解码,直至本字节列解码出m个字节;
对于纵向比特列编码所得的压缩数据,首先读取字节列编码头,得到每一个比特列的编码方式;
对于采用直接使用原文不编码的比特列,直接恢复成相应的比特列;对于采用可变长度LV比特列编码的比特列,读出每一个编码单元的value域、len1域,并进一步判断是否存在len2域和len3域,得到当前编码单元的编码长度,并依此进行解码,当解码出m个比特后,即完成本比特列的解码;
当完成本字节列的所有8个比特列的解码后,跳过编码时8比特对齐所补入的比特数,再进入下一个字节列的解码。
7.一种电力计量数据解压缩装置,用于对采用如权利要求3-4中任一项所述电力计量数据压缩方法得到的压缩数据进行解压缩,其特征在于,包括:
编码参数获取模块,用于读取压缩头,得出数据的行数m和列数n,通过列数n计算出列编码方式位图的字节数,然后读出列编码方式位图,获得每个字节列对应的编码方式;
字节列解码模块,用于根据每一个字节列对应的编码方式,进行相应字节列的解码,得到解压后的原始电力计量数据,具体包括步骤:
对于采用纵向字节列LV二元组编码所得的压缩数据,读出每一组(L,V),并依此解码,直至本字节列解码出m个字节;
对于纵向比特列编码所得的压缩数据,首先读取字节列编码头,得到每一个比特列的编码方式;
对于采用直接使用原文不编码的比特列,直接恢复成相应的比特列;对于采用可变长度LV比特列编码的比特列,读出每一个编码单元的value域、len1域,并进一步判断是否存在len2域和len3域,得到当前编码单元的编码长度,并依此进行解码,当解码出m个比特后,即完成本比特列的解码;
当完成本字节列的所有8个比特列的解码后,跳过编码时8比特对齐所补入的比特数,再进入下一个字节列的解码。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4、6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010744882.8A CN112054802B (zh) | 2020-07-29 | 2020-07-29 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010744882.8A CN112054802B (zh) | 2020-07-29 | 2020-07-29 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112054802A CN112054802A (zh) | 2020-12-08 |
CN112054802B true CN112054802B (zh) | 2023-10-13 |
Family
ID=73602499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010744882.8A Active CN112054802B (zh) | 2020-07-29 | 2020-07-29 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112054802B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0865172A (ja) * | 1994-08-22 | 1996-03-08 | Fujitsu Ltd | データ圧縮装置 |
CN102521363A (zh) * | 2011-12-15 | 2012-06-27 | 武汉达梦数据库有限公司 | 基于列分解的列存储数据库数值数据压缩方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5826114B2 (ja) * | 2012-05-25 | 2015-12-02 | クラリオン株式会社 | データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム |
-
2020
- 2020-07-29 CN CN202010744882.8A patent/CN112054802B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0865172A (ja) * | 1994-08-22 | 1996-03-08 | Fujitsu Ltd | データ圧縮装置 |
CN102521363A (zh) * | 2011-12-15 | 2012-06-27 | 武汉达梦数据库有限公司 | 基于列分解的列存储数据库数值数据压缩方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112054802A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832837B (zh) | 一种基于压缩感知原理的卷积神经网络压缩方法及解压缩方法 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
CN107483059B (zh) | 一种基于动态霍夫曼树的多路数据编解码方法及装置 | |
US6567781B1 (en) | Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function | |
CN107565970B (zh) | 一种基于特征识别的混合无损压缩方法及装置 | |
CN102265336B (zh) | 自适应差分脉冲编码调制编码设备和解码设备 | |
CN112054802B (zh) | 一种电力计量数据压缩、解压缩方法、装置及电子设备 | |
CN101266795B (zh) | 一种格矢量量化编解码的实现方法及装置 | |
CN101534124A (zh) | 一种用于短小自然语言的压缩算法 | |
CN112290953B (zh) | 多道数据流的阵列编码装置和方法、阵列解码装置和方法 | |
CN103746701A (zh) | 一种用于Rice无损数据压缩的快速编码选项选择方法 | |
CN110518915B (zh) | 一种比特位计数编码以及解码方法 | |
Ibrahim et al. | Comparison between (rle and huffman) algorithmsfor lossless data compression | |
WO2001050769A1 (en) | Method and apparatus for video compression using multi-state dynamical predictive systems | |
Chaddha et al. | Constrained and recursive hierarchical table-lookup vector quantization | |
US10931303B1 (en) | Data processing system | |
Reddy et al. | Image compression using Shannon-Fano-Elias coding and run length encoding | |
CN110739974B (zh) | 数据压缩方法及装置和计算机可读存储介质 | |
JP3968276B2 (ja) | 時系列データ圧縮・解凍装置およびその方法 | |
CN104113394A (zh) | 通信调制信号的压缩及解压方法 | |
CN116505952B (zh) | 红外码压缩方法、装置、智能设备及存储介质 | |
Asolkar et al. | Review of data compression and different techniques of data compression | |
CN113256747B (zh) | 一种位图索引压缩方法、解压缩方法、设备及介质 | |
WO2024045216A1 (en) | Train-linking lossless compressor of numeric values | |
CN113765620B (zh) | 分块压缩编码方法、装置、计算机设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |