当前位置: 首页 > 专利查询>鲁东大学专利>正文

一种连续型栅格数据的存储及读取方法技术

技术编号:36208264 阅读:38 留言:0更新日期:2023-01-04 12:03
本发明专利技术公开了一种连续型栅格数据的存储及读取方法,存储方法包括:重新划分原始分类栅格数据Data的行和列:以筛选区域为最小粒度对K行L列像元组成的原始栅格数据Data的行和列重新划分,得到a行b列个筛选区块;对a行b列个筛选区块,采用误差控制方法逐个筛选区块进行像元动态筛选,并将存储候选像元标记数据和候选像元值到数据文件Xdata中;记录每行第一列的筛选区块在数据文件Xdata中存储起始位置;记录所述原始连续型栅格数据Data的元数据信息。本发明专利技术根据指定的特征点像元值进行多层次的行、列像素的插值筛选,具有更优的数据压缩效率。缩效率。缩效率。

【技术实现步骤摘要】
一种连续型栅格数据的存储及读取方法


[0001]本专利技术涉及栅格数据处理领域,具体涉及一种连续型栅格数据的存储及读取方法。

技术介绍

[0002]栅格数据模型将地理空间划分成若干行、列组成的像元阵列,其最小单元称为像元或像素,每个像元的位置由行列号确定,通过像元的值记录这一位置的某类地理属性值。像元值为整数类型的栅格数据通常用来存储各种离散型数据或分类型数据,例如土地利用类型栅格数据,其每个像元存储的是一个整数,代表着该像元对应的地理空间的土地利用类别,如整数1代表耕地,整数2代表林地,整数3代表草地,等等;离散型栅格数据的特点之一是不能对像元值直接进行算术计算,例如对像元值分别为1和2的两个像元进行均值计算得到像元值1.5是没有意义的;连续型栅格数据是每个像元值具有连续性特点,例如DEM栅格数据,在最大像元值和最小像元值之间任意数值都可以作为某像元值。
[0003]假设某连续型栅格数据是由K行L列个栅格像元组成,每个栅格像元对应的数值是double类型的浮点值,按目前栅格数据模型的通常做法,则需要K*L*8个字节,当该栅格数据的覆盖区域较大、分辨率较高(如每个像元对应1米长宽区域)时则栅格的行列数K*L较大,所需要的存储空间非常大,这对系统的存储设备成本、网络传输效率都是很大的挑战。

技术实现思路

[0004]本专利技术所要解决的技术问题是提供一种连续型栅格数据的存储及读取方法,可以有效的减少数据存储量,节约存储设备成本、提高网络传输效率。
[0005]一种连续型栅格数据的存储方法,对由K行L列像元组成的原始分类栅格数据Data进行存储,包括以下步骤:
[0006]S1.重新划分原始分类栅格数据Data的行和列:
[0007]以筛选区域为最小粒度对K行L列像元组成的原始栅格数据Data的行和列重新划分,得到a行b列个筛选区块;
[0008]当K/s1为整数时,a=K/s1;
[0009]当K/s1不为整数时,a=[K/s1]+1;
[0010]当L/s2为整数时,b=L/s2;
[0011]当L/s2不为整数时,b=[L/s2]+1;
[0012]其中,筛选区域为s1行s2列的栅格数据矩阵,s1、s2为常数,s1>=3,s2>=3;
[0013]S2.对a行b列个筛选区块,采用误差控制方法逐个筛选区块进行像元动态筛选,并将存储候选像元标记数据和候选像元值到数据文件Xdata中;
[0014]S3.记录每行第一列的筛选区块在数据文件Xdata中存储起始位置;
[0015]S4.记录所述原始连续型栅格数据Data的元数据信息。
[0016]进一步地,S2中对a行b列个筛选区块,采用误差控制逐个筛选区块进行像元动态
筛选,具体包括以下步骤:
[0017]在a行b列个筛选区块中选择多个特征点作为候选像元;
[0018]确定最大绝对误差阈值e参数值;
[0019]根据候选像元采用最大绝对误差阈值e参数值逐层插值计算,以此进行像元动态筛选。
[0020]进一步地,进行像元动态筛选具体包括以下步骤:
[0021]在两两候选像元选取中间像元,计算中间点像元的计算值,判断中间像元的计算值与其真实值的误差是否在最大误差阈值e内,若是则中间像元不作为筛选候选像元,否则中间像元作为候选像元;逐行逐列进行筛选直至所有像元筛选完毕。
[0022]进一步地,所述步骤2中将存储候选像元标记数据和候选像元值到数据文件Xdata中;以数值Ts记录当前筛选区块存储时所需要的字节大小,初始为0;
[0023]对筛选区块逐行逐列标记每个像素筛选情况,若该像元作为候选像元,则设置标记数据B[i][j]=1,否则设置标记数据B[i][j]=0;
[0024]若s1*s2是8的倍数Ts值为s1*s2/8;若s1*s2不是8的倍数,即标记数据B[][]不能完整的划分为整数个字节,则在末尾补充值为0的bit位至完整的一个字节,Ts值为[s1*s2/8]+1;
[0025]将候选像元标记数据B[][]以字节为单位写入Ts个字节到数据文件Xdata;将上述筛选的候选像元像素值按顺序写入数据文件Xdata。
[0026]进一步地,所述步骤3记录每行第一列的筛选区块在数据文件Xdata中存储起始位置,包括以下步骤:记录下每一行中各个列筛选区块的存储空间大小Ts的累计值sumTs,并写入数据文件rowSize中。
[0027]进一步地,所述步骤4中,元数据信息包括:原始连续型栅格数据Data的行数K、列数L;筛选区域s1、s2值,最大绝对误差阈值e参数值。
[0028]还提供了一种连续型栅格数据的读取方法,用于对按照上述的一种连续型栅格数据的存储方法存储的栅格数据进行读取,若要读取原始分类栅格数据Data的第r行第c列像元数值的栅格单元数据D(r,c),其中,1<=r<=K,1<=c<=L,包括以下步骤:
[0029]步骤1.读取数据文件meta,获得原始连续型栅格数据Data的元数据信息,得到原始连续型栅格数据Data的行数K、列数L;筛选区域s1、s2值,最大绝对误差阈值e参数值,计算出数据文件Xdata中共有a行b列个筛选区块;
[0030]步骤2.计算第r行第c列像元所在的筛选区块编号,假设该请求像元所在的筛选区块的行号为v、列号为z;
[0031]当r/s1为整数时,v=r/s1;
[0032]当r/s1不为整数时,v=[r/s1]+1;
[0033]当c/s2为整数时,z=c/s2;
[0034]当c/s2不为整数时,z=[c/s2]+1;
[0035]步骤3.读取数据文件rowSize,获得a个整数值,e1、e2、...、ea;
[0036]当v=1时,第1行的第一列筛选区块的数据起始于数据文件Xdata的0字节处,此时offset=0;
[0037]当v>1时,第v行的第一列筛选区块的数据起始于数据文件Xdata的e(v

1)字节处,
此时offset=e(v

1);
[0038]从第offset字节处开始读取数据文件Xdata,逐个解析筛选区块的信息,以此计算得到请求像元所在筛选区块中的像素值。
[0039]进一步地,对于步骤3逐个解析筛选区块的信息,所述解析筛选区块的信息包括读取候选像元标记数据、读取候选像元值数据。
[0040]进一步地,解析筛选区块的信息以此计算得到请求像元所在筛选区块中的像素值,具体包括以下步骤:
[0041]若当前读取的是第j列个筛选区块,1<=j<=z;
[0042]读取候选像元标记数据:
[0043]若s1*s2是8的倍数则从数据文件Xdata中读取s1*s本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种连续型栅格数据的存储方法,对由K行L列像元组成的原始分类栅格数据Data进行存储,其特征在于,包括以下步骤:S1.重新划分原始分类栅格数据Data的行和列:以筛选区域为最小粒度对K行L列像元组成的原始栅格数据Data的行和列重新划分,得到a行b列个筛选区块;当K/s1为整数时,a=K/s1;当K/s1不为整数时,a=[K/s1]+1;当L/s2为整数时,b=L/s2;当L/s2不为整数时,b=[L/s2]+1;其中,筛选区域为s1行s2列的栅格数据矩阵,s1、s2为常数,s1>=3,s2>=3;S2.对a行b列个筛选区块,采用误差控制方法逐个筛选区块进行像元动态筛选,并将存储候选像元标记数据和候选像元值到数据文件Xdata中;S3.记录每行第一列的筛选区块在数据文件Xdata中存储起始位置;S4.记录所述原始连续型栅格数据Data的元数据信息。2.根据权利要求1所述的一种连续型栅格数据的存储方法,其特征在于,S2中对a行b列个筛选区块,采用误差控制逐个筛选区块进行像元动态筛选,具体包括以下步骤:在a行b列个筛选区块中选择多个特征点作为候选像元;确定最大绝对误差阈值e参数值;根据候选像元采用最大绝对误差阈值e参数值逐层插值计算,以此进行像元动态筛选。3.根据权利要求2所述的一种连续型栅格数据的存储方法,其特征在于,进行像元动态筛选具体包括以下步骤:在两两候选像元选取中间像元,计算中间点像元的计算值,判断中间像元的计算值与其真实值的误差是否在最大误差阈值e内,若是则中间像元不作为筛选候选像元,否则中间像元作为候选像元;逐行逐列进行筛选直至所有像元筛选完毕。4.根据权利要求3所述的一种连续型栅格数据的存储方法,其特征在于,所述步骤2中将存储候选像元标记数据和候选像元值到数据文件Xdata中;以数值Ts记录当前筛选区块存储时所需要的字节大小,初始为0;对筛选区块逐行逐列标记每个像素筛选情况,若该像元作为候选像元,则设置标记数据B[i][j]=1,否则设置标记数据B[i][j]=0;若s1*s2是8的倍数Ts值为s1*s2/8;若s1*s2不是8的倍数,即标记数据B[][]不能完整的划分为整数个字节,则在末尾补充值为0的bit位至完整的一个字节,Ts值为[s1*s2/8]+1;将候选像元标记数据B[][]以字节为单位写入Ts个字节到数据文件Xdata;将上述筛选的候选像元像素值按顺序写入数据文件Xdata。5.根据权利要求4所述的一种连续型栅格数据的存储方法,其特征在于,所述步骤3记录每行第一列的筛选区块在数据文件Xdata中存储起始位置,包括以下步骤:记录下每一行中各个列筛选区块的存储空间大小Ts的累计值sumTs,并写入数据文件rowSize中。6.根据权利要求4所述的一种连续型栅格数据的存储方法,其特征在于,所述步骤4中,元数据信息包括:原始连续型栅格数据Data的行数K、列数L;筛选区域s1、s2值,最大绝对误差阈值e参数值。
7.一种连续型栅格数据的读取方法,用于对按照权利要求5至6任一项所述的一种连续型栅格数据的存储方法存储的栅格数据进行...

【专利技术属性】
技术研发人员:闫富松刘雪峰
申请(专利权)人:鲁东大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1