栅格数据聚合方法和装置、栅格数据解耦方法和装置及系统与流程

文档序号:13282185阅读:496来源:国知局
栅格数据聚合方法和装置、栅格数据解耦方法和装置及系统与流程

本发明涉及栅格数据处理领域,尤其是涉及多层栅格数据的聚合和解耦。



背景技术:

栅格数据是按网格单元的行与列排列、具有不同灰度或颜色的阵列数据。每一个单元(例如,网格、像素)的位置由它的行列号定义。栅格数据具有规则性好、相对于矢量数据容易获取、图释表现力好、数据范围大、数据通用、存储格式相对较小等特点,广泛应用于gis(地理信息系统)、图像处理系统等中。

然而,在上述应用场景中,有时为了表示不同的属性等,具有多层(多套)栅格数据。例如,在gis系统中,存在分别表示预定区域的坡度、坡向、植被等不同属性的多层栅格数据。此时,所需的栅格数据的数据量大,占用较多的存储空间,数据通信的通信量也很大。



技术实现要素:

本发明提供一种将多层栅格数据聚合为一层栅格数据从而减少数据量的栅格数据聚合方法和装置、以及栅格数据解耦方法和装置。

本发明的实施方式所提供的第一方式涉及一种栅格数据聚合方法,包括:从多层栅格数据中分别提取相同行列号的多个栅格数据;对所述多个栅格数据进行聚合来生成单个栅格聚合值;以及根据与每个行列号对应的单个栅格聚合值,生成一层栅格数据。

在上述的栅格数据聚合方法中,

所述对所述多个栅格数据进行聚合来生成单个栅格聚合值包括:

将所述多个栅格数据在高低位上排列配置为所述单个栅格聚合值。

在上述的栅格数据聚合方法中,

所述对所述多个栅格数据进行聚合来生成单个栅格聚合值包括:

由2n-1值来表示所述多个栅格数据,并将2n-1值的相加值作为单个栅格聚合值,其中,n为自然数。

在上述的栅格数据聚合方法中,

所述对所述多个栅格数据进行聚合来生成单个栅格聚合值包括:

根据所述多个栅格数据的排列组合查找字典,确定与该排列组合对应的索引,并将该索引作为所述单个栅格聚合值。

在上述的栅格数据聚合方法中,

所述多个栅格数据包括2个以上的整形数据,

所述将所述多个栅格数据在高低位上排列配置为所述单个栅格聚合值包括:

根据存储数据类型,获得最大有效长度,

根据整形数据长度和整形数据个数,计算整形数据总长度,

判断所述整形数据总长度是否大于所述最大有效长度,

当所述整形数据总长度小于或等于所述最大有效长度时,根据所述整形数据长度、所述整形数据总长度及所述整形数据个数,将所述多个整形数据在高低位上排列配置,获得整形数据聚合值,将所述整形数据聚合值作为所述单个栅格聚合值。

在上述的栅格数据聚合方法中,

所述多个栅格数据还包括浮点数据,

在获得整形数据聚合值之后,所述将所述多个栅格数据在高低位上排列配置为所述单个栅格聚合值还包括:

根据所述最大有效长度和所述整形数据总长度,获得浮点数据的允许长度;

根据所述允许长度和整数部分长度,获得小数位长度;

根据浮点数据值和所述小数位长度,对浮点数据进行修正,获得修正值;

根据所述修正值、所述整形数据聚合值、所述整形数据总长度、所述小数位长度,将所述浮点数据值和所述整形数据聚合值在高低位上排列配置,获得浮点数据聚合值,将所述浮点数据聚合值作为所述单个栅格聚合值。

在上述的栅格数据聚合方法中,

当所述整形数据为权重数据组时,所述整形数据个数为从实际的整形数据个数减一的值,

当所述整形数据不是权重数据组时,所述整形数据个数为实际的整形数据个数。

本发明的实施方式所提供的第二方式涉及一种栅格数据解耦方法,从一层栅格数据中提取与每个行列号对应的单个栅格聚合值;对所述单个栅格聚合值进行解耦来生成多个栅格数据;以及根据每个行列号处的所述多个栅格数据,分别整合位于同一层的不同行列号的栅格数据来生成多层栅格数据。

在上述的数据解耦方法中,

所述对所述单个栅格聚合值进行解耦来生成多个栅格数据包括:

将所述单个栅格聚合值在高低位上拆分成所述多个栅格数据。

在上述的数据解耦方法中,

所述对所述单个栅格聚合值进行解耦来生成多个栅格数据包括:

将单个栅格聚合值作为相加值,根据该相加值,分别获得多个2n-1值,分别作为多个栅格数据,其中,n为自然数。

在上述的数据解耦方法中,

所述对所述单个栅格聚合值进行解耦来生成多个栅格数据包括:

通过索引查找字典,确定与该索引对应的多个栅格数据的排列组合,从而获得多个栅格数据中的每一个。

在上述的数据解耦方法中,

所述多个栅格数据包括2个以上的整形数据,

所述单个栅格聚合值为整形数据聚合值,

所述将所述单个栅格聚合值在高低位上拆分成所述多个栅格数据包括:

根据整形数据长度和整形数据个数,计算整形数据总长度;以及

根据所述整形数据总长度、所述整形数据长度、所述整形数据个数,将所述整形数据聚合值在高低位上拆分成所述多个栅格数据。

在上述的数据解耦方法中,

所述多个栅格数据还包括浮点数据,

所述单个栅格聚合值不是整形数据聚合值,而是浮点数据聚合值,

将所述单个栅格聚合值在高低位上拆分成所述多个栅格数据的过程在计算整形数据总长度之后、在拆分所述整形数据聚合值之前,还包括:

根据所述整形数据总长度、浮点数据的小数位长度,对所述浮点数据聚合值进行拆分,获得浮点数据值,

根据所述浮点数据聚合值、所述整形数据总长度、所述浮点数据值、所述小数位长度,获得所述整形数据聚合值。

在上述的数据解耦方法中,

当所述整形数据为权重数据组时,所述整形数据个数为从实际的整形数据个数减一的值,并且,在拆分所述整形数据聚合值之后,还根据整形数据长度和已经获得的多个栅格数据,再获得一个栅格数据,

当所述整形数据不是权重数据组时,所述整形数据个数为实际的整形数据个数。

本发明的实施方式所提供的第三方式涉及一种数据聚合解耦方法,包括:

利用上述的数据聚合方法将多层栅格数据聚合为一层栅格数据;以及

利用上述的数据解耦方法将一层栅格数据解耦为多层栅格数据。

本发明的实施方式所提供的第四方式涉及一种栅格数据聚合装置,包括:多栅格提取单元,被配置为从多层栅格数据中分别提取相同行列号的多个栅格数据;聚合单元,被配置为对所述多个栅格数据进行聚合来生成单个栅格聚合值;以及聚合数据生成单元,被配置为根据与每个行列号对应的单个栅格聚合值来生成一层栅格数据。

在上述的栅格数据聚合装置中,

所述聚合单元被配置为将所述多个栅格数据在高低位上排列配置为所述单个栅格聚合值。

在上述的栅格数据聚合装置中,

所述多个栅格数据包括2个以上的整形数据,

所述聚合单元包括:

总长度计算模块,被配置为根据整形数据长度和整形数据个数,计算整形数据总长度;以及

整形数据聚合模块,被配置为根据所述整形数据长度、所述整形数据总长度、所述整形数据个数,将所述多个整形数据在高低位上排列配置,获得整形数据聚合值,将所述整形数据聚合值作为所述单个栅格聚合值。

在上述的栅格数据聚合装置中,

所述多个栅格数据还包括浮点数据,

所述聚合单元还包括:

允许长度计算模块,被配置为根据所述最大有效长度和所述整形数据总长度,获得浮点数据的允许长度;

小数位长度计算模块,被配置为根据所述允许长度和整数部分长度,获得小数位长度;

浮点数据修正模块,被配置为根据浮点数据值和所述小数位长度,对浮点数据进行修正,获得修正值;以及

浮点数据聚合模块,被配置为根据所述修正值、所述整形数据聚合值、所述整形数据总长度及所述小数位长度,将所述浮点数据和所述整形数据聚合值在高低位上排列配置,获得浮点数据聚合值,不是将所述整形数据聚合值作为所述单个栅格聚合值,而是将所述浮点数据聚合值所述作为单个栅格聚合值。

在上述的栅格数据聚合装置中,

所述聚合单元还包括:

数据判断模块,被配置为判断所述整形数据是否为权重数据组;以及

个数修正模块,被配置为当所述整形数据为权重数据组时,输出的所述整形数据个数为从实际的整形数据个数减一的值,当所述整形数据不是权重数据组时,输出的所述整形数据个数为实际的整形数据个数。

本发明的实施方式所提供的第五方式涉及一种栅格数据解耦装置,包括:单栅格提取单元,被配置为从一层栅格数据中提取与每个行列号对应的单个栅格聚合值;解耦单元,被配置为对所述单个栅格聚合值进行解耦来生成多个栅格数据;以及解耦数据生成单元,被配置为根据每个行列号对应处的所述多个栅格数据,分别整合位于同一层的不同行列号的栅格数据来生成多层栅格数据。

在上述的数据解耦装置中,

所述解耦单元被配置为将单个栅格聚合值在高低位上拆分成所述多个栅格数据。

在上述的数据解耦装置中,

所述多个栅格数据包括2个以上的整形数据,

所述单个栅格聚合值为整形数据聚合值,

所述解耦单元包括:

总长度计算模块,被配置为总长度计算模块被配置为根据所述整形数据长度和整形数据个数,计算整形数据总长度;以及

整形数据解耦模块,被配置为根据所述整形数据总长度、所述整形数据长度及所述整形数据个数,将所述整形数据聚合值在高低位上拆分,获得所述多个栅格数据。

在上述的数据解耦装置中,

所述多个栅格数据还包括浮点数据,

所述单个栅格聚合值不是整形数据聚合值,而是浮点数据聚合值,

所述解耦单元还包括:

浮点数据解耦模块,被配置为根据所述整形数据总长度、浮点数据的小数位长度,对所述浮点数据聚合值进行拆分,获得浮点数据值;以及

整形数据聚合值获取模块,被配置为根据所述浮点数据聚合值、所述整形数据总长度、所述浮点数据值、所述小数位长度,获得所述整形数据聚合值,

所述整形数据聚合值获取模块将所获得的所述整形数据聚合值输入给所述整形数据解耦模块。

在上述的数据解耦装置中,

所述解耦单元还包括:

数据判断模块,被配置为判断所述整形数据是否为权重数据组;以及

数据个数修正模块,被配置为当所述整形数据为权重数据组时,输出的所述整形数据个数为从实际的整形数据个数减一的值,

当所述整形数据不是权重数据组时,输出的所述整形数据个数为实际的整形数据个数,

当所述整形数据为权重数据组时,所述整形数据解耦模块在拆分所述整形数据聚合值之后,还根据整形数据长度和已经获得的多个栅格数据,再获得一个栅格数据。

本发明的实施方式所提供的第六方式涉及一种数据处理系统,包括:上述的数据聚合装置;数据传输装置;以及上述的数据解耦装置,所述数据聚合装置将聚合后的一层栅格数据经由所述数据传输装置发送给所述数据解耦装置,所述数据解耦装置对接收到的一层栅格数据进行解耦,获得多层栅格数据。

本发明的实施方式所提供的第七方式涉及一种数据聚合装置,包括:

处理器;以及

用于存储所述处理器可执行的指令的存储器,

其中,所述处理器被配置为:通过执行所述存储器所存储的指令,

从多层栅格数据中分别提取相同行列号的多个栅格数据;

对所述多个栅格数据进行聚合来生成单个栅格聚合值;

根据与每个行列号对应的单个栅格聚合值,生成一层栅格数据。

本发明的实施方式所提供的第八方式涉及一种数据解耦装置,包括:

处理器;以及

用于存储所述处理器可执行的指令的存储器,

其中,所述处理器被配置为:通过执行所述存储器所存储的指令,

从一层栅格数据中提取与每个行列号对应的单个栅格聚合值;

对所述单个栅格聚合值进行解耦来生成多个栅格数据;以及

根据分别与每个行列号对应的所述多个栅格数据,生成多层栅格数据。

根据本发明的实施方式所涉及的栅格数据聚合方法和装置、栅格数据解耦方法和装置及系统,能够有效地减少栅格数据的数据量。

附图说明

通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:

图1是示出本发明的第一实施方式所涉及的栅格数据聚合方法的流程图;

图2是示出本发明的第一实施方式所涉及的聚合方式的实施例1的流程图;

图3是示出本发明的第一实施方式所涉及的聚合方式的实施例2的流程图;

图4是示出针对预定区域采用本发明的第一实施方式的实施例2中的栅格数据聚合方式的示意图;

图5是示出本发明的第二实施方式所涉及的栅格数据解耦方法的流程图;

图6是示出本发明的第二实施方式所涉及的解耦方式的实施例1的流程图;

图7是示出本发明的第二实施方式所涉及的解耦方式的实施例2的流程;

图8是示出针对预定区域采用本发明的第二实施方式的实施例2中的栅格数据解耦方式的示意图;

图9是示出本发明的第三实施方式所涉及的栅格数据聚合装置的结构示意图;

图10是示出本发明的第三实施方式的实施例1所涉及的聚合单元的结构示意图;

图11是示出本发明的第三实施方式的实施例2所涉及的聚合单元的结构示意图;

图12是示出本发明的第四实施方式所涉及的栅格数据解耦装置的结构示意图;

图13是示出本发明的第四实施方式的实施例1所涉及的解耦单元的结构示意图;

图14是示出本发明的第四实施方式的实施例2所涉及的解耦单元的结构示意图;

图15是示出本发明的第五实施方式所涉及的数据处理系统的结构示意图。

具体实施方式

本发明的发明人经过研究发现,在应用栅格数据时,需要提前将栅格数据对应到行列位置,此时,涉及i/o操作,因为频繁的i/o操作效率相对低下,所以一般对预定区域的数据进行一次读取,即将原栅格区域内的一个巨型区域数据一次缓存到内存,以提高效率,但如果提取的缓存数据区域过大,则导致数据量过多,内存占用较多,可能导致系统内存不足,发生内存溢出,容易导致程序崩溃。当在应用多层栅格数据时,这种风险将成倍增长。此外,在存在多层栅格数据的情况下,有时也需要对各层的栅格数据进行跨层操作,对系统的压力也大。

为了解决这个问题,一种方案是减少一次缓存的区域大小,提高i/o操作次数,但是,其代价就是降低效率。另一种方案是减少数据量。i/o操作受到计算机系统的限制,不易进行优化。

对此,在现有技术中,存在对于单层栅格数据,对不同行列号的栅格的数据进行聚合的技术。但是,这样的数据聚合会损失数据精度。

从而,本发明的发明人提出了将多层栅格数据聚合为一层栅格数据的数据聚合方法。即,将相同行列号的多个栅格数据聚合为一个栅格数据。在进行这样的数据聚合之后,进行数据传输,并在应用时,将聚合的一层栅格数据再解耦成多层栅格数据。

在本发明的实施方式中,多层栅格数据是指包含相同行列号范围(例如,地理位置)且其值不同的栅格数据。例如,在地理信息系统(gis)中的多层栅格数据,这些多层栅格数据表示相同地理区域,且分别表示该区域的不同属性。本发明对多层栅格数据的层叠方式、地理位置等不作特别限定。

在以相同行列号的栅格为对象的情况下,多个栅格数据分别表示该行列号的位置处的不同的属性。例如,当本发明的实施方式应用于gis中时,上述的多个栅格数据可以分别表示该位置处的建筑类型、楼层数、建筑用途、建造年限等不同属性。另外,例如,当本发明的实施方式应用于图像处理领域时,上述的多个栅格数据可以分别表示相同像素点的灰度、亮度、饱和度等不同属性。本发明中对栅格数据的应用场景不作特别限定。

多层栅格数据中的每一层的栅格数据可以是整形数据,也可以是浮点数据。整形数据是指不包含小数部分的数值型数据,浮点数据是指包含小数部分的数据,包括整数部分和小数部分。

在本发明的实施方式中,整形数据也可以是权重数据组。权重数据组是指:数据组中的各数据的原始值分别为0-1范围内的权重比值,各原始值的总和为1,将比值数据放大10的n次方倍之后,以整数形式表示出,从而形成的用整形数据表示的数据组。例如,当权重数据组为[20,30,50]时,所表示的三个原始值分别为0.2∶0.3∶0.5。即,可以通过在由浮点数据示出的比值上乘以10的几(例如,2)次方的方式改为整形的权重数据组。例如,在gis中,若存在3类建筑类型,可以用权重数据组(23,32,45)来表示,此时,权重比值为(23%,32%,45%),其总和为1。当整形数据为权重数据组时,由于比值的总和为1,因此,即便省略其中的一个比值,也可以通过其他比值的总和来算出该省略的比值。也就是说,权重数据组中的一个数据可以缺省。

在本发明实施方式中,数据长度是指数据转换为字符串时的长度,而非实际存储长度。

下面参照附图,详细说明本发明的实施方式的栅格数据聚合方法和装置、以及栅格数据解耦方法和装置。

然而,对于本领域技术人员来说显而易见的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更清楚的理解。本发明不限于下面所提出的任何具体配置和方法,而是在不脱离本发明的精神的前提下覆盖了相关部件和步骤的任何修改、替换和改进。

<第一实施方式>

图1是示出本发明的第一实施方式所涉及的栅格数据聚合方法的流程图。

以下,为了便于说明,将i行j列记为行列号(i,j)。

在本发明的第一实施方式中,在步骤s10中,从多层栅格数据中,分别提取行列号(i,j)的多个栅格数据。其中,i表示行号、j表示列号。在栅格数据中,若行号和列号均相同,则表示是处于相同的位置,因此,此时提取的多个栅格数据是针对相同位置的数据。其中,每层的栅格数据对应该层的预定区域的数据。

在步骤s20中,针对行列号(i,j)的多个栅格数据进行聚合,生成该行列号(i,j)处的单个栅格聚合值。在本发明的第一实施方式中,可以通过将多个栅格数据在高低位上排列配置成单个栅格聚合值。即,可以将多个栅格数据在数据长度的高低位上排列配置成单个栅格聚合值。例如,在gis中,假定建筑类型为1(0-3),楼层数15(0-99),建筑用途8(0-16),建造年限20(0-99),浮点数为0,则聚合算法结果为1150820。具体聚合方式后面再详细叙述。但是,本发明的聚合方式不限于后述的方式,也可以利用本领域技术人员已知的其他聚合方式,只要是对多层栅格数据中的相同行列号的多个栅格进行聚合即可。

在步骤s30中,判断是否对预定区域的所有行列号进行了操作,如果是,则前进到步骤s40。如果否,则前进到步骤s50。其中,所述预定区域是作为数据聚合对象的区域。

在步骤s40中,根据每个行列号的单个栅格聚合值,生成一层栅格数据。具体来说,将已获得的与每个行列号对应的单个栅格聚合值,整合为一层栅格数据。

在步骤s50中,改变行列号(i,j),返回到步骤s10。

上述的步骤s30~s50可以理解为:获取每个行列号处的单个栅格聚合值,并根据每个行列号处的单个栅格聚合值,生成一层栅格数据。

在本发明的第一实施方式中,通过将多层栅格数据聚合为一层栅格数据,从而减少了数据量,使用内存实现聚合解耦,大幅减少了i/o操作次数,有利于提高处理效率。

在本发明的第一实施方式中,相同行列号的多个栅格数据可以包括整形数据,也可以包括浮点数据。本发明对多个栅格数据中所包含的整形数据个数和浮点数据个数不作特别限定。

<实施例1>

图2是示出本发明的第一实施方式所涉及的聚合方式的实施例1的流程图。实施例1是多个栅格数据仅包括整形数据,并且整形数据个数为2个以上的情况的例子。由于针对每个行列号的聚合方式均相同,因此,在实施例1中,以行号i、列号为j的栅格为例,对步骤s20中的将多个栅格数据聚合为单个栅格聚合值的过程进行详细说明。

在步骤s201中,根据栅格数据的存储数据类型,获得最大有效长度。

具体来说,假设存储数据类型为datatype、该数据类型的存储最大数据长度为ldatatype,则最大有效长度lmax可以如下计算:

lmax=ldatatype-1(1)

其中,存储数据类型通常为32位的短整形int(其存储最大数据长度ldatatype为10)、64位的长整形long等。也可以是浮点形的单精度、双精度等。可以根据具体数据类型而进行选择。

具体来说,各类栅格数据存储时通常受到格式限制。即,不同的栅格数据的实际存储有效位数不同。例如,如文件型的grid栅格数据,只支持32位的整数(短整形),对应数据大小为-2,147,483,648到+2,147,483,647,存储最大数据长度ldatatype为10个有效数字,因最高位的最大值只能到2,无法有效使用,故真实有效位数为9,即最大有效长度lmax为9。即,根据存储的数据类型,能够存储的最大有效长度lmax不同。

在步骤s202中,根据整形数据长度lint和整形数据个数n,计算整形数据的总长度lintsum。

其中,整形数据长度lint是指整形数据被转换为字符串时的长度。如果每层中的各整形数据的长度不同,则lint表示各层的整形数据中的最大长度。整形数据个数n是要存储的有效的整形数据的个数。在通常情况下,整形数据个数n表示要聚合的多层栅格数据的层数。整形数据的总长度lintsum是所有整形数据长度之和。

在本实施例中,对于整形数据长度和整形数据个数没有特别限定。然而,整形数据长度越长、则能够聚合的整形数据个数减少。因此,结合上述的分析以及通常的栅格数据存储类型和整形数据长度等考虑,整形数据的值优选的是1000以内,更为优选的是10以内。

例如,假设每层的整形数据的最大长度相同均为lint,则整形数据的总长度为:

lintsum=n*lint(2)

也可以设定各层的整形数据的长度(或最大长度)不同。此时,如果将k层的整形数据长度设为lint(k)(k=0,...,n-1),则整形数据的总长度为:

lintsum=sum(lint(k))(3)

上述的步骤s202还可以包括步骤s202a,在该步骤s202a中,当多个栅格数据中的整形数据为权重数据组时,如上所述,可以缺省一位,因此,可以将整形数据个数减一,即n=n-1。并且,利用减一后的整形数据个数来计算整形数据的总长度。

具体来说,步骤s202a在进行上述的根据整形数据长度lint和整形数据个数n来计算整形数据的总长度lintsum的操作之前,可以进一步包括步骤s2021和s2022,在步骤s2021中判断多个栅格数据中的整形数据是否为权重数据组,而在步骤s2022中,当多个栅格数据中的整形数据为权重数据组时,将整形数据个数减一,当多个栅格数据中的整形数据不是权重数据组时,保持整形数据个数不变。

由于通常多个栅格数据中的整形数据为权重数据组的情况较少,因此该步骤s202a是可以省略的。

在步骤s203中,判断整形数据总长度lintsum是否大于最大有效长度lmax。即,lintsum>lmax。如果整形数据总长度lintsum大于最大有效长度lmax,则表示整形数据聚合后的长度会超出能够存储的最大有效长度,因此,结束处理。如果整形数据总长度lintsum小于或等于最大有效长度lmax,则前进到步骤s204。

具体来说,如果多个栅格数据的整形数据个数超过预定值,使得整形数据总长度lintsum大于最大有效长度lmax,则难以将多个栅格数据中的所有整形数据聚合为单个栅格聚合值。因此,在整形数据总长度lintsum小于或等于最大有效长度lmax的情况下,才能够将多个整形数据聚合为整形数据聚合值。

在步骤s204中,根据整形数据总长度lintsum、整形数据长度lint、整形数据个数n,将多个栅格数据在高低位上排列配置,获得整形数据聚合值dataint(i,j)。

具体可用下列式子表示:

其中,xk(i,j)是指第k层栅格数据中行列号(i,j)处的整形数据值,lintsum指整形数据总长度,lint指整形数据长度,n指整形数据个数。

在实施例1中,将在步骤s204中获取的整形数据聚合值dataint(i,j)作为该行列号(i,j)处的单个栅格聚合值。

根据实施例1,通过将2个以上的整形数据聚合为单个栅格聚合值,能够有效地减少数据量。

<实施例2>

图3是示出本发明的第一实施方式所涉及的聚合方式的实施例2的流程图。实施例2是多个栅格数据除了2个以上的整形数据之外,还包括一个浮点数据的情况的例子。

在实施例2中也同样以行号为i、列号为j的栅格为例,对步骤s20中的将多个栅格数据聚合为单个栅格聚合值的过程进行详细说明。

在实施例2中,在如实施例1那样获得整形数据聚合值之后,不是将该整形数据聚合值直接作为该行列号(i,j)处的单个栅格数据值,而是在该整形数据聚合值的基础上再聚合浮点数据,获得浮点数据聚合值,将所获得的浮点数据聚合值作为该行列号(i,j)处的单个栅格聚合值。

具体来说,如图3所示,实施例2中的将多个栅格数据聚合为单个栅格聚合值的过程在图2的步骤s205之后,还包括如下步骤s211~s215。

在步骤s211中,根据最大有效长度lmax和整形数据总长度lintsum,计算浮点数据允许长度lfloat。

具体可用下列式子表示:

lfloat=lmax-lintsum(5)

在步骤s212中,判断浮点数据允许长度lfloat是否大于浮点数据的整数部分长度lfloat_int。如果浮点数据允许长度lfloat大于浮点数据的整数部分长度lfloat_int、即lfloat>lfloat_int,则进行步骤s213。如果浮点数据允许长度lfloat小于或等于浮点数据的整数部分长度lfloat_int、即lfloat≤lfloat_int,则表示将浮点数据的整数部分聚合到整形数据聚合值就会超出能够存储的最大有效长度,因此,结束处理。

在步骤s213中,根据浮点数据允许长度lfloat和整数部分长度lfloat_int,计算浮点数据的小数位长度lfloat_delta。其中,该小数位长度lfloat_delta表示浮点数据能够保留的小数位的长度,整数部分长度lfloat_int实际是指预定区域的所有栅格的浮点数据之中最大的浮点数据的整数部分长度。

具体可用下列式子表示:

lfloat_delta=lfloat-lfloat_int(6)

在步骤s214中,根据小数位长度lfloat_delta和第i行j列的浮点数据值f(i,j),获得浮点数据修正值datafloat(i,j)。该浮点数据修正值datafloat(i,j)是仅保留了满足小数位长度lfloat_delta的小数位的浮点数据值。

具体可用下列式子表示:

datafloat(i,j)=round(f(i,j),lfloat_delta)(7)

其中,round()是四舍五入函数。

在步骤s215中,根据整形数据聚合值dataint(i,j)、浮点数据修正值datafloat(i,j)、整形数据总长度lintsum、浮点数据的小数位长度lfloat_delta,获得浮点数据聚合值data(i,j)。

具体可用下列式子表示:

其中,浮点数据的小数位长度lfloat_delta也可以与整形数据长度lint相同。此时,浮点数据聚合值data(i,j)为:

在实施例2中,将在步骤s215中获得的浮点数据聚合值data(i,j)作为单个栅格聚合值。

在上述的式(8)、式(9)中,将浮点数据值f(i,j)聚合到了整形数据聚合值dataint(i,j)的高位,但是,也可以将浮点数据值聚合到整形数据聚合值的低位。

图4是示出对预定区域采用本发明的第一实施方式的实施例2中的栅格数据聚合方式的示意图。其中,需要说明的是,由于每个行列号处的聚合方式都是相同的,上面都是以行列号(i,j)处为例说明了聚合过程,而图4示出了针对预定区域、例如3×3的栅格区域进行数据聚合的过程。在图4中,可以对相同行列号的栅格分别采用实施例2的聚合方式进行聚合。

在实施例2中,多个栅格数据不仅包括整形数据,还包括浮点数据,对包含浮点数据的多个栅格数据也能够进行聚合,因此,除了具有实施例1所具有的优点之外,应用范围更为广泛。

<第二实施方式>

图5是示出本发明的第二实施方式所涉及的栅格数据解耦方法的流程图。第二实施方式中的栅格数据解耦方法和第一实施方式中的栅格数据聚合方法相对应。也就是说,通过第一实施方式的栅格数据聚合方法被聚合的一层栅格数据,可以通过第二实施方式的栅格数据解耦方法被解耦成多层栅格数据。

在步骤s60中,从一层栅格数据中,分别提取与行列号(i,j)对应的单个栅格聚合值。

在步骤s70中,针对行列号(i,j)处的单个栅格聚合值进行解耦,生成该行列号(i,j)处的多个栅格数据。在本发明的第二实施方式中,可以将单个栅格聚合值在高低位上拆分成多个栅格数据。具体解耦方式后面再详细叙述。但是,本发明的解耦方式不限于后述的方式,也可以利用本领域技术人员已知的其他聚合方式,只要是对一层栅格数据中的相同行列号的多个栅格进行解耦即可。

在步骤s80中,判断是否对预定区域的所有行列号进行了操作,如果是,则进行步骤s90。如果否,则进行步骤s100。

在步骤s90中,根据每个行列号处的多个栅格数据,分别整合位于同一层的不同行列号的栅格数据来生成多层栅格数据。

在步骤s100中,改变行列号(i,j),返回到步骤s60。

上述的步骤s80~s100可以理解为:获取每个行列号处的多个栅格数据,并根据预定区域的所有行列号处的多个栅格数据,生成多层栅格数据。

在本发明的第二实施方式中,通过将一层栅格数据解耦成多层栅格数据,能够在数据通信传输、i/o存取时只使用一层栅格数据,大幅减少数据量,而在应用时快速解耦成原始的多层栅格数据,不损失原始数据的精度。由此,效率比以往的数据通信传输或i/o存取快的多,不损失数据精度,且不容易受到内存大小等限制。

<实施例1>

图6是示出本发明的第二实施方式所涉及的解耦过程的实施例1的流程图。实施例1是多个栅格数据仅包括整形数据,并且整形数据个数为2个以上的情况下的例子。由于针对每个单个栅格聚合值的解耦方式均相同,因此,在实施例1中,以行号i、列号为j的栅格为例,对步骤s70中的将单个栅格聚合值解耦为多个栅格数据的过程进行具体说明。

在多个栅格数据仅包括整形数据的情况下,单个栅格聚合值即为整形数据聚合值。

在步骤s701中,根据整形数据长度lint和整形数据个数n,计算整形数据的总长度lintsum。例如,可以使用第一实施方式中的(2)、(3)式的方式。

步骤s701还可以包括步骤s701a,该步骤s701a的操作与第一实施方式中的步骤s202a的操作相同,因此,在此省略其说明。

在步骤s702中,根据整形数据总长度lintsum、整形数据长度lint、整形数据个数n,将整形数据聚合值dataint(i,j)在高低位上拆分,获得多个栅格数据xk(i,j)。

具体可用下列式子表示:

其中,int()是指取整函数,n是非负整数集。

步骤s702在获得上述的多个栅格数据之后,还可以包括步骤s702a和步骤s702b。

在步骤s702a中,判断多个整形数据是否为权重数据组。如果是,则前进到步骤s702b,如果否,则结束操作。

在s702b步骤中,根据已获得的多个栅格数据和整数数据长度lint,获得最后一个栅格数据xn(i,j)。

具体来说,可如下式:

也就是说,此时的最后一个栅格数据xn(i,j)是在多个栅格数据中的整形数据为权重数据组的情况下,当进行栅格数据聚合时,在步骤s202a中缺省的那一个整形数据。

根据实施例1,通过将单个栅格聚合值解耦成2个以上的整形数据,能够有效地恢复数据,保证数据精度。

<实施例2>

图7是示出本发明的第二实施方式所涉及的解耦过程的实施例2的流程图。实施例2是多个栅格数据除了2个以上的整形数据之外,还包括一个浮点数据的情况的例子。

在实施例2中也同样以行号为i、列号为j的栅格为例,对步骤s70中的将单个栅格聚合值解耦为多个栅格数据的过程进行具体说明。

在多个栅格数据还包括一个浮点数据的情况下,先将单个栅格聚合值拆分为浮点数据值和整形数据聚合值,然后再将整形数据聚合值在高低位上拆分,获得多个整形数据。

具体来说,如图7所示,在图6的步骤s701之后、步骤s702之前还包括步骤s711和步骤s712。

在步骤s711中,根据整形数据总长度lintsum、小数位长度lfloat_delta,对行列号(i,j)处的单个栅格聚合值data(i,j)进行拆分,获得浮点数据值f(i,j)。此时的单个栅格聚合值data(i,j)为浮点数据聚合值。

具体可用下列式子表示:

其中,小数位长度lfloat_delta表示浮点数据能够保留的小数位的长度。可以如上述步骤s213那样、例如通过如上所示的(6)式等求出。在此不再重复描述。

另外,由于在第一实施方式中说明了将浮点数据值聚合到整形数据聚合值的高位的情况,因此,在上述的(12)式中,对浮点栅格聚合值的高位进行拆分,获得了浮点数据值。但是,在将浮点数据值聚合到整形数据聚合值的低位的情况下,也可以对对浮点栅格聚合值的低位进行拆分,获得了浮点数据值。

接着,在步骤s712中,根据单个栅格聚合值data(i,j)、浮点数据值f(i,j)、整形数据总长度lintsum、小数位长度lfloat_delta,获得整形数据聚合值dataint(i,j)。

具体可用下列式子表示:

图8是示出对预定区域采用本发明的第二实施方式的实施例2中的栅格数据解耦方式的示意图。需要说明的是,由于每个行列号处的解耦方式都是相同的,上面的实施例中都是以行列号(i,j)处为例说明了解耦过程,而图8示出了针对预定区域、例如3×3的栅格区域进行数据解耦的过程。在图8中,可以对相同行列号的栅格分别采用实施例2的解耦方式进行解耦。

在实施例2中,多个栅格数据不仅包括整形数据,还包括浮点数据,对聚合了浮点数据的栅格数据也能够进行解耦,因此,除了具有实施例1所具有的优点之外,应用范围更为广泛。

<第三实施方式>

图9是示出本发明的第三实施方式所涉及的栅格数据聚合装置的结构示意图。

如图9所示,栅格数据聚合装置1包括:多栅格提取单元10、聚合单元20、聚合数据生成单元30。其中,多栅格提取单元10被配置为从多层栅格数据中分别提取行列号(i,j)的多个栅格数据。聚合单元20被配置为针对行列号(i,j)的多个栅格数据进行聚合,生成该行列号(i,j)处的单个栅格聚合值。该聚合单元20可以被配置为将多个栅格数据在高低位上排列配置为单个栅格聚合值。聚合数据生成单元30被配置为根据每个行列号的单个栅格聚合值,生成一层栅格数据。聚合数据生成单元30可以先判断是否对预定区域的所有行列号进行了操作,如果还没有完成对所有行列号的聚合操作,则改变行列号直至完成对预定区域的所有行列号的聚合操作。

<实施例1>

当多个栅格数据包括2个以上的整形数据时,如图10所示,聚合单元20可以包括:总长度计算模块210和整形数据聚合模块220。此时,该聚合单元20可以执行第一实施方式的实施例1的聚合过程。

其中,总长度计算模块210被配置为根据整形数据长度和整形数据个数,计算整形数据总长度。整形数据聚合模块220被配置为根据整形数据长度、整形数据总长度、整形数据个数,将多个整形数据在高低位上排列配置,获得整形数据聚合值,并将该整形数据聚合值作为单个栅格聚合值输出。

可选地,聚合单元20还可以包括整形长度判断模块230,所述整形长度判断模块被配置为根据存储数据类型,获得最大有效长度,判断整形数据总长度是否大于最大有效长度,当所述整形数据总长度小于或等于所述最大有效长度时,由整形数据聚合模块220进行将多个整形数据在高低位上排列配置的操作。

可选地,总长度计算模块210还可以包括数据判断模块210a和个数修正模块210b,所述数据判断模块210a被配置为判断整形数据是否为权重数据组,个数修正模块210b被配置为当整形数据为权重数据组时,输出的整形数据个数为从实际的整形数据个数减一的值,当整形数据不是权重数据组时,输出的整形数据个数为实际的整形数据个数。

<实施例2>

当多个栅格数据除了2个以上的整形数据之外、还包括一个浮点数据时,如图11所示,聚合单元20’除了与实施例1中的聚合单元20相同的构成之外,还可以包括:允许长度计算模块240、小数位长度计算模块250、浮点数据修正模块260、浮点数据聚合模块270。此时,该聚合单元20’可以执行第一实施方式的实施例2的聚合过程。

其中,允许长度计算模块240被配置为根据最大有效长度和整形数据总长度,获得浮点数据的允许长度。小数位长度计算模块250被配置为根据允许长度和整数部分长度,获得小数位长度。浮点数据修正模块260被配置为根据浮点数据值和小数位长度,对浮点数据进行修正,获得修正值。浮点数据聚合模块270被配置为根据所述修正值、整形数据聚合值、整形数据总长度、小数位长度,将浮点数据和整形数据聚合值在高低位上排列配置,获得浮点数据聚合值,并将浮点数据聚合值作为单个栅格聚合值。

可选地,聚合单元20’还可以包括允许长度判断模块280,该允许长度判断模块280被配置为判断浮点数据允许长度是否大于浮点数据的整数部分长度,若浮点数据允许长度大于整数部分长度,则由小数位长度计算模块250获得小数位长度,若浮点数据允许长度小于或等于整数部分长度,则结束处理。

根据第三实施方式也能够获得与第一实施方式相同的效果。

<第四实施方式>

图12是示出本发明的第四实施方式所涉及的栅格数据解耦装置的结构示意图。

如图12所示,栅格数据解耦装置2包括:单栅格提取单元40、解耦单元50、解耦数据生成单元60。其中,单栅格提取单元40被配置为从一层栅格数据中,分别提取与行列号(i,j)对应的单个栅格聚合值。解耦单元50被配置为针对行列号(i,j)处的单个栅格聚合值进行解耦,生成该行列号(i,j)处的多个栅格数据。解耦数据生成单元60被配置为根据每个行列号处的多个栅格数据,分别整合位于同一层的不同行列号的栅格数据来生成多层栅格数据。解耦数据生成单元60可以先判断是否对预定区域的所有行列号进行了操作,如果还没有完成对所有行列号的解耦操作,则改变行列号直至完成对预定区域的所有行列号的解耦操作。

<实施例1>

当多个栅格数据包括2个以上的整形数据时,如图13所示,解耦单元50包括:总长度计算模块510和整形数据解耦模块520。此时,该解耦单元50可以执行第二实施方式的实施例1的数据解耦过程。

其中,总长度计算模块510与图11中的总长度计算模块210相同,因此省略说明。整形数据解耦模块520被配置为根据整形数据总长度、整形数据长度、整形数据个数,将整形数据聚合值在高低位上拆分,获得多个栅格数据。

可选地,当所述整形数据为权重数据组时,整形数据解耦模块520在拆分整形数据聚合值之后,还根据整形数据长度和已经获得的多个栅格数据,再获得一个栅格数据。

<实施例2>

当多个栅格数据除了2个以上的整形数据之外、还包括一个浮点数据时,如图14所示,所述解耦单元50’除了总长度计算模块510和整形数据解耦模块520之外,还包括:浮点数据解耦模块530和整形数据解耦值获取模块540。此时,该解耦单元50’可以执行第二实施方式的实施例2的数据解耦过程。

其中,浮点数据解耦模块530被配置为根据整形数据总长度、小数位长度,对浮点数据聚合值进行拆分,获得浮点数据值。整形数据聚合值获取模块540根据浮点数据聚合值、浮点数据值、整形数据总长度、小数位长度,获得整形数据聚合值。

整形数据聚合值获取模块540将所获得的整形数据聚合值输入给整形数据解耦模块520。整形数据解耦模块520将整形数据聚合值获取模块540输入的整形数据聚合值在高低位上拆分,获得多个栅格数据。

根据第四实施方式的数据解耦装置能够获得与第二实施方式相同的技术效果。

<变形例>

上述的第一~第四实施方式中的实施例1和实施例2都是以将多个栅格数据在数据长度的高低位上排列配置为单个栅格聚合值、或者将单个栅格聚合值在数据长度的高低位上拆分为多个栅格数据的实施例。然而,将相同行列号处的多个栅格数据聚合为单个栅格聚合值、或者将单个栅格聚合值解耦为多个栅格数据的方式不限于此,也可以使用用于数据的加密解密操作中的其他方式来代替。

变形例1

2n-1值(例如,1,3,7,15,31,63,...)具有如下特殊性:其中任意个值的相加值都可以唯一确定是由哪些值相加得到的。其中,n为自然数。

比如,1+3=4,1+7+15=23,15+31+63=109,…,这些相加值与所相加的值的组合之间的对应关系是唯一确定的。因此,4可以代表1、3(只有1+3的值会等于4),23代表1、7、15(只有这三个值的和会等于23),109可以代表15、31、63。

在聚合时,可以由多个2n-1值(例如,2n1-1,2n2-1,......,2nk-1)来分别表示多个栅格数据,得到他们的相加值a,将相加值a作为单个栅格聚合值。也可以给这样的相加值设定索引index(a),将该索引index(a)作为单个栅格聚合值。由于这样的相加值或索引的数据量小,容易传输和存取。

在解耦时,根据该相加值a来唯一确定是哪些2n-1值的和,即,分别获得2n1-1,2n2-1,......,2nk-1的值。也可以根据索引index(a)查找与其对应的相加值a,再根据相加值a来获得2n1-1,2n2-1,......,2nk-1的值。由此,可以避免损失数据精度。

变形例2

根据多个栅格数据的排列组合生成索引字典,并通过查找该字典的方式确定多个栅格数据和索引之间的对应关系。

在聚合时,根据多个栅格数据的排列组合查找字典来确定索引,并将该索引作为单个栅格聚合值。

在解耦时,通过索引查找字典确定对应的多个栅格数据的排列组合,从而获得多个栅格数据中的每一个。

上述的变形例1和变形例2也可以与本发明的第一~第四实施方式中的实施例组合使用。

例如,在聚合时,可以先将多个栅格数据分为多组,对每组使用变形例1的聚合方式进行聚合,获得多个中间聚合值,再对这些中间聚合值使用第一实施方式中的聚合方式,获得单个数据聚合值。在解耦时,先对单个数据聚合值使用第二实施方式中的解耦方式,获得多个中间聚合值,再对每个中间聚合值使用变形例1的解耦方式,获得多个栅格数据。

<第五实施方式>

图15是示出本发明的第五实施方式所涉及的数据处理系统的结构示意图。数据处理系统包括如第三实施方式所述的数据聚合装置1、如第四实施方式所述的数据解耦装置2、以及数据传输装置3。

数据聚合装置1将聚合后的一层栅格数据经由数据传输装置3发送给数据解耦装置2,而数据解耦装置2对接收到的一层栅格数据进行解耦,获得多层栅格数据。

数据聚合装置1和数据解耦装置2可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。

数据聚合装置1和数据解耦装置2可以包括处理器,该处理器可以是集成电路,也可以是cpu等运算核心或控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

数据聚合装置1和数据解耦装置2可以包括存储器,存储器按用途可分为主存储器(内存),例如,rom(readonlymemoryimage,只读存储器)、ram(randomaccessmemory,随机存取存储器)和辅助存储器(外存)。存储器具有用于执行上述方法中的任何方法步骤的程序代码的存储空间。例如,用于程序代码的存储空间可以包括分别用于实现上面的方法中的各种步骤的各个程序代码。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,光盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以具有与前面所述的终端中的存储器类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码,即可以由诸如之类的处理器读取的代码,这些代码当由服务器上运行搜索引擎程序时,导致该服务器执行上面所描述的方法中的各个步骤。

数据聚合装置1和数据解耦装置2还可以包括输入装置用于用户与装置之间的相互作用,输入装置可以为键盘、鼠标、图像捕捉元件,触摸屏等。

数据聚合装置1和数据解耦装置2还可以包括输出装置,输出装置可以是屏幕、图像投影单元、立体显示装置等。

数据聚合装置1和数据解耦装置2还可以包括一个以有线或无线方式进行数据通信的通信接口。

数据传输装置3是用于进行数据聚合装置1和数据解耦装置2之间的数据传输的装置,可以是数据总线、i/o接口、电缆、光缆等。

权利要求书中的单词“包括”不排除存在未列在权利要求中的元件或步骤。在包含了若干元件的权利要求中,其中多个元件可以是通过同一个硬件来具体实现。

术领域的技术人员能够了解本发明的内容并据以实施,并不能以此来限制本发明的保护范围。凡根据本发明精神实质所作出的等同变换或修饰,都应涵盖在本发明的保护范围之内。

虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变形,这样的修改和变形均落入由所述权利要求所限定的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1