CN107992555B - 一种栅格数据的存储及读取方法 - Google Patents
一种栅格数据的存储及读取方法 Download PDFInfo
- Publication number
- CN107992555B CN107992555B CN201711217013.4A CN201711217013A CN107992555B CN 107992555 B CN107992555 B CN 107992555B CN 201711217013 A CN201711217013 A CN 201711217013A CN 107992555 B CN107992555 B CN 107992555B
- Authority
- CN
- China
- Prior art keywords
- data
- raster
- grid
- unit
- grid cell
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种栅格数据的存储及读取方法,其存储方法包括以下步骤,重新划分原始栅格数据Data的行和列:对由K×L个栅格单元数据D组成的K行L列的原始栅格数据Data的行和列重新划分,得到由M×N个栅格单元T组成的M行N列的栅格数据Tiles,存储栅格数据Tiles:以原始栅格数据Data的栅格单元数据D的数据类型为基准,将每一个栅格单元T中标定的一个栅格单元数据D,以及该栅格单元T中与标定的一个栅格单元数据D不相似的其他栅格单元数据D存储在x.data数据文件中。本发明充分考虑到栅格数据的局部小范围内的数值连续性,以及不同应用系统的数据精度要求不同,提出的存储方法大大减少了存储空间的同时读取栅格像素数据的效率得到很大的提高。
Description
技术领域
本发明涉及数据存储及读取的方法,具体涉及一种栅格数据的存储及读取方法。
背景技术
栅格数据是以二维矩阵的形式来表示空间地物或现象的数据组织方式,每个矩阵单元称为一个栅格单元,栅格单元的每个数据表示地物或现象的属性数据。随着地理信息系统的广泛应用及卫星遥感技术的快速发展,生产了多种行业的海量栅格数据,同时大量的应用系统使用了海量的栅格数据作为分析决策的基础数据。在实际项目中,使用海量栅格数据经常伴随着应用系统的存储空间不足、网络传输时间过长等性能技术难点。尤其在一些GIS软件中,海量栅格数据的存储管理以及网络传输速率往往是关键的性能瓶颈。
假设某栅格数据是由K行L列个栅格单元组成,每个栅格单元存储的数据是double型数值,例如DEM栅格数据每个栅格单元存储的是地面高程数值。若采用普通方法,每个栅格单元用8字节进行存储,则需要KxLx8个字节,当栅格的行列数KxL较大时所需要的存储空间非常大,这对系统的存储、网络传输效率都是很大的挑战。
因此,本领域技术人员迫切需要解决的一个技术问题在于,如何节省栅格数据的存储空间、提高栅格数据的网络传输效率。
目前虽然也有文献提出利用栅格数据的连续性特点来进行数据的存储与读取的方法,如发明专利授权公告号CN102902491B的文献里提出一种利用遥感数据的空间上数值连续性来存储栅格数据的方法,但是这个方法有两处较大的缺陷或不足,其一是要求栅格数据在小范围内如3x3单元格内所有的9个单元格具有相同或相近的数值才能减少存储空间,这个条件对于很多的栅格数据是不具备的,例如对于30米分辨率的全国DEM数据为例,经分析得知在所有的3x3单元格中只有7.2%的比例其数值完全相同,因此该文方法对DEM数据的存储不适用;其二是在读取所存储的栅格数据时效率较低,因为该方法从头开始逐步分析每个微单元格进而得到原始栅格数据,例如,应用中若需要读取原始栅格的最后一行的最后一列的单元数值,按该文方法就需要读取整个栅格数据才能分析还原得到数值,这样数据的读取不够灵活与高效。
发明内容
本发明所要解决的技术问题是提供一种栅格数据的存储及读取方法,可以实现更大的应用范围和更高的数据读取效率。
本发明解决上述技术问题的技术方案如下:一种栅格数据的存储方法,包括以下步骤,
重新划分原始栅格数据Data的行和列:对由K×L个栅格单元数据D组成的K行L列的原始栅格数据Data的行和列重新划分,得到由M×N个栅格单元T组成的M行N列的栅格数据Tiles,且
其中,E和F均为常数,栅格单元T为由E×F个栅格单元数据D组成的E行F列的栅格数据矩阵;
存储栅格数据Tiles:以原始栅格数据Data的栅格单元数据D的数据类型为基准,将每一个栅格单元T中标定的一个栅格单元数据D,以及该栅格单元T中与标定的一个栅格单元数据D不相似的其他栅格单元数据D存储在x.data数据文件中。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,还包括存储每一个栅格单元T的标记信息:以字节为单位,将每一个栅格单元T中除标定的一个栅格单元数据D之外剩余的每一栅格单元数据D分别与标定的一个栅格单元数据D进行相似性对比后用于表征对比结果的标记信息存储在x.tag数据文件中。
进一步,还包括存储预设栅格单元T中预设栅格单元数据D的位置信息:以原始栅格数据Data的栅格单元数据D的数据类型为基准,将在预设位置上的栅格单元T中的且已存储的预设栅格单元数据D在整个栅格数据Tiles存储空间中占据的位置信息存储在x.pos数据文件中。
进一步,每一个栅格单元T中标定的一个栅格单元数据D具体指位于该栅格单元T的中心位置上的栅格单元数据D,记为中心栅格单元数据D(a,b),在该栅格单元T中,将位于中心栅格单元数据D(a,b)周围剩余的栅格单元数据D记为周围栅格单元数据D(x,y);
存储栅格数据Tiles的具体步骤为:按照第一预设顺序对栅格数据Tiles中的每一个栅格单元T进行逐个存储,其中存储一个栅格单元T的具体步骤为,
以原始栅格数据Data的栅格单元数据D的数据类型为基准,对中心栅格单元数据D(a,b)进行存储;
以原始栅格数据Data的栅格单元数据D的数据类型为基准,按照第二预设的顺序对在容许误差范围外的周围栅格单元数据D(x,y)进行存储;其中,误差是指在一个栅格单元T中,周围栅格单元数据D(x,y)与中心栅格单元数据D(a,b)之间的相似度的差率。
进一步,存储每一个栅格单元T的标记信息的具体步骤为:按照第一预设顺序对每一个栅格单元T的标记信息进行逐个存储,其中存储一个栅格单元T的标记信息的具体步骤为,
将栅格单元数据T中的每一个周围栅格单元数据D(x,y)分别与中心栅格单元数据D(a,b)进行相似性对比;
若周围栅格单元数据D(x,y)在中心栅格单元数据D(a,b)容许误差范围外,则将此周围栅格单元数据D(x,y)的标记信息标记为二进制中的0;若周围栅格单元数据D(x,y)在中心栅格单元数据D(a,b)容许误差范围内,则将此周围栅格单元数据D(x,y)的标记信息标记为二进制中的1;
按照第二预设的顺序对所有二进制的标记进行排列,形成栅格单元T的二进制编码的标记信息,以字节为单位,并将栅格单元T的二进制编码的标记信息存储在x.tag数据文件中。
进一步,存储预设栅格单元T中预设栅格单元数据D的位置信息的具体步骤为:
根据第一预设顺序选定栅格数据Tiles中的每一行或每一列中的第一个栅格单元T;
分别计算栅格数据Tiles中的每一行或每一列中的第一个栅格单元T中已存储的第一个栅格单元数据D在x.data数据文件中的位置数据;
以原始栅格单元Data的栅格单元数据D的数据类型为基准,将栅格数据Tiles中的每一行或每一列中的第一个栅格单元T中已存储的第一个栅格单元数据D的位置数据按照第三预设顺序存储在x.pos数据文件中。
进一步,当K为E的非整数倍时,对栅格单元T中第M行中缺少的行中的栅格单元以固定数值d填充;
当L为F的非整数倍时,对栅格单元T中第N列中缺少的列中的栅格单元以固定数值d填充。
进一步,E=F=3。
本发明的有益效果是:本方法一种栅格数据的存储方法充分考虑到栅格数据的局部小范围内的数值连续性,以及不同应用系统的数据精度要求不同,提出的存储方法大大减少了存储空间,并且本发明栅格数据的存储方法不要求在局部范围内的所有栅格单元的数值相同或相近,只要有部分相同或相近就可有较好的效果,另外,由于本方法同时存储了预设栅格单元T中预设栅格单元数据D的位置信息,因此在读取栅格像素时效率得到较大的提高,不需要从头开始逐个解析栅格像素值,尤其对海量数据,效率提高更为明显。
基于上述一种栅格数据的存储方法,本发明还提供一种栅格数据的读取方法。
一种栅格数据的读取方法,用于对按照上述所述的一种栅格数据的存储方法存储的栅格数据进行读取,若要读取原始栅格数据Data中第r行第c列的栅格单元数据D(r,c),则包括以下步骤:
S1,计算栅格单元数据D(r,c)所属的栅格单元T(s,t)在栅格数据Tiles中的行数s和列数t,则有
S2,以原始栅格单元Data的栅格单元数据D的数据类型为基准,按照第三预设顺序在x.pos数据文件中读取第s个或第t个数据,且设读出的第s个或第t个数据为v,则v为栅格单元T(s,1)或栅格单元T(1,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储位置;
S3,计算栅格单元T(s,t)中已存储的第一个栅格单元数据D与栅格单元T(s,1)或栅格单元T(1,t)中已存储的第一个栅格单元数据D在x.data数据文件中存储位置的间隔距离q;
S4,根据间隔距离q和存储位置数值v计算得到栅格单元T(s,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储空间位置;
S5,根据栅格单元T(s,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储空间位置,并结合栅格单元T(s,t)在x.tag数据文件中的标记信息,读取位于栅格单元T(s,t)中的原始栅格单元数据D(r,c)。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述S3具体为:
S31,以字节为单位,读取数据文件x.tag中第(s-1)*N+i个字节值,得到存储的栅格单元T(s,i)的标记信息,得到栅格单元T(s,i)在x.pos数据文件中所需要的存储空间的大小,其中i=1,2……t-1;
或以字节为单位,读取数据文件x.tag中第(t-1)*M+i个字节值,得到存储的栅格单元T(i,t)的标记信息,得到栅格单元T(i,t)在x.pos数据文件中所需要的存储空间的大小,其中i=1,2……s-1;
S32,将栅格单元T(s,1)~T(s,t-1)的存储空间进行叠加计算,得出间隔距离q;
或将栅格单元T(1,t)~T(s-1,t)的存储空间进行叠加计算,得出间隔距离q;
其中,栅格单元T(s,i)所需要的存储空间的大小为,栅格单元T(s,i)在x.tag数据文件中的标记信息的二进制编码中0的个数再加1;
栅格单元T(i,t)所需要的存储空间的大小为,栅格单元T(i,t)在x.tag数据文件中的标记信息的二进制编码中0的个数再加1。
本发明的有益效果是:对于本方法存储的栅格数据,在应用中需要读取任意一原始的栅格单数据元时,不需要对整个栅格数据Data进行读取分析还原处理就能快速的得到数值结果,大大地提高应用效率。
具体实施方式
以下本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
当前每天都有海量的栅格数据生产出来,这些栅格数据又被大量的企业存储到各自的数据服务器,同时很多数据服务器还做若干数据备份,因此需要大量的物理存储设备。大量的栅格数据往往具有一些空间相似性,例如对DEM栅格数据来说,某一栅格单元的周围多个单元,往往总能从中找到一个或多个单元的数值非常接近甚至相等于中心单元。而且,很多的实际项目对栅格数据的数据精度要求不相同,有些应用系统为了达到更快的处理速度可以使用在某一误差范围内的栅格数据。因此,本文发明解决的问题是:利用到栅格数据的空间相似性,同时考虑到不同应用对数据精度的不同要求,提出一种栅格数据的存储及读取方法,来节省栅格数据的存储空间,提高栅格数据的网络传输效率,减少应用系统的存储设备成本。
具体技术方案如下:
①,假设某原始栅格数据Data为由K×L个栅格单元数据D组成的K行L列的栅格数据,每个栅格单元数据D需要a字节的存储空间(原始栅格数据Data的栅格单元数据D的数据类型的基准为,该类型需要a字节空间),例如,栅格单元存储的是int型整数,则a为4,若是double类型,则a为8。下文所述的行列号均指从1开始。首先需要将这个原始栅格数据Data的基本信息存储起来,基本信息包括:原始栅格数据Data的行数K、列数L,每个栅格单元数据D所需存储空间a(以字节为单位)。存储的具体方法不限,例如可以写到x.info数据文件里。
原始栅格数据Data如下表1所示:
表1
D(1,1) | D(1,2) | D(1,3) | D(1,4) | D(1,5) | ...... | D(1,L-1) | D(1,L) |
D(2,1) | D(2,2) | D(2,3) | D(2,4) | D(2,5) | D(2,L-1) | D(2,L) | |
D(3,1) | D(3,2) | D(3,3) | D(3,4) | D(3,5) | ...... | D(3,L-1) | D(3,L) |
D(K,1) | D(K,2) | D(K,3) | D(K,4) | D(K,5) | ...... | D(K,L-1) | D(K,L) |
其中,D(1,1)表示原始栅格数据Data中第1行第1列的栅格单元数据D,D(K,L-1)表示原始栅格数据Data中第K行第L-1列的栅格单元数据D,其余类推。
②,对原始栅格数据Data进行划分,得到划分后的栅格数据Tiles,其行数为M,列数为N。划分原则:以3x3栅格单元为基本单元对原始栅格数据Data从上到下、从左到右进行划分;如果K是3的倍数,则划分后共有M=K/3行;否则M=[K/3]+1行,符号[]含义是K除以3取整;对原始栅格数据Data进行划分到最后3行时,如不够3行,则补齐到3行,补充的栅格单元数值均设置为0(当然,也可以设置其它值,没有严格要求,其实只要设置成统一的一个值就可以)。同样的,如果L是3的倍数,则划分后共有N=L/3列;否则N=[L/3]+1列,符号[]含义是L除3取整;对原始栅格数据Data进行划分到最后3列时,如不够3列,则补齐到3列,补充的栅格单元数值均设置为0。注意,这里所说的划分,只是逻辑上的划分,并没有涉及到存储。划分后,得到由多个栅格单元T组成的栅格数据Tiles共M行,N列,其中每个栅格单元T为由9个栅格单元数据D组成的3行3列的栅格数据矩阵。
对应表1划分后得到的栅格数据Tiles如下表2所示:
表2
注意,下文说到栅格数据Tiles的栅格单元T,是指具有如下表3所示的数据结构:
表3
D(1,1) | D(1,2) | D(1,3) |
D(2,1) | D(2,2) | D(2,3) |
D(3,1) | D(3,2) | D(3,3) |
原始栅格数据Data的栅格单元数据D,则是指一个具体的数值,如D(1,1),D(2,3)等。
③,对栅格数据Tiles进行数据存储,包括栅格数据Tiles的数值存储、栅格单元T的标记信息存储以及栅格单元数据D的位置信息存储三部分。对栅格数据Tiles,从上到下、从左到右(第一预设顺序,当然,第一预设顺序还可以为其他的顺序,例如从左到右,从上到下,本具体实施例以从上到下、从左到右为例)进行每一个栅格单元T存储处理。
例如,对其第1行第1列的栅格单元T(1,1)进行存储,从②中我们知道栅格单元T(1,1)中共有9个来自于原始栅格数据Data中的栅格单元数据D,其分别为:D(1,1)、D(1,2)、D(1,3)、D(2,1)、D(2,2)、D(2,3)、D(3,1)、D(3,2)和D(3,3)。对这个3x3的栅格单元T,首先存储位于中心位置(中心格子)上的D(2,2)(其定义为中心栅格单元数据D(a,b)),然后对其周围的其他8个栅格单元数据D(其定义为周围栅格单元数据D(x,y))按顺时针方向存储(即第二预设的顺序,当然这也不是必须只能顺时针方式,也可以按逆时针方向,也可以按行,只要对所有的栅格单元按统一方式处理就行)。于是,存储的数据结构为:D(2,2)、D(1,1)、D(1,2)、D(1,3)、D(2,3)、D(3,3)、D(3,2)、D(3,1)和D(2,1)。这样,仍然是需要9个栅格单元的存储空间,并没有减少。
在对大量的栅格数据进行应用分析的基础上,我们得到一个结论:很多栅格数据具有一定的空间相似性。例如,DEM栅格数据,存储的是不同空间范围的地面高度数据,通过对该数据的分析得知在该栅格数据中,小范围内的若干个栅格单元中往往有几个栅格数据值非常接近或相等,这与实际的情况也是符合的,例如,某一小块范围如30米x30米(对应一个栅格单元)的地面高度与其周围的8个栅格单元中往往能找到一个或多个单元它们的地面高度相同或非常接近,极限情况之一是该中心栅格单元位于一块平原地区,它周围的8个栅格单元高度数值与其相等;极限情况之二是该中心栅格单元位于山区,它周围的8个栅格单元高度数值与其均差异较大,然而,通过对DEM数据的分析得知,极限情况之一,二出现的频率均较少,大部分情况是能有部分栅格单元与中心栅格单元值相等或接近。因此,就意味着D(2,2)分别与D(1,1)、D(1,2)、D(1,3)、D(2,3)、D(3,3)、D(3,2)、D(3,1)和D(2,1)中存在着较大可能的重复,因此,在实际存储时,我们需要对这周边的8个栅格单元数据D逐个进行判断:如果与中心栅格单元数据D(a,b)相等或近似,则不需要进行存储,否则,才需要进行存储。
另外,考虑到不同应用对栅格数据的精度要求不尽相同,因此,设置一个栅格数据精度要求的应用级阀值参数:容许误差率P,如果某应用系统要求其栅格数据精度与原始栅格数据完全一致,则可将该容许误差率P设置为0,含义为不允许出现数据误差;假如某应用系统为了处理效率对栅格数据的数据精度可以容许5%的数据误差,则将该容许误差率P设置为5%.该参数值是在进行数据存储时,由用户根据实际情况进行设置,当然,容许误差率越大,需要的存储空间越小。
总结上述分析,在本发明的存储方法中,栅格单元T(1,1)的具体存储方法为:对存储的数据结构为D(2,2)、D(1,1)、D(1,2)、D(1,3)、D(2,3)、D(3,3)、D(3,2)、D(3,1)和D(2,1)的序列,从第2项开始(因为第1项是中心栅格单元数据,必须要存储),分别计算D(1,1)、D(1,2)、D(1,3)、D(2,3)、D(3,3)、D(3,2)、D(3,1)和D(2,1)与第1项的D(2,2)的误差率是否在容许误差率P内,即|D(1,1)~D(2,2)|/D(2,2)是否小于P,如果是,则D(1,1)不存储,否则要存储该项数据。按此方法,逐个对第三项D(1,2),第四项D(1,3),至到第九项D(2,1)分别与第一项D(2,2)进行对比。方法本质是对周围的8个栅格单元数据D,只存储数值差异较大的栅格单元数据D。处理完毕后,得到的需要存储的数据结构可能为D(2,2),就只需要一个栅格单元数据D的存储空间,这是因为周围的栅格单元数据D(x,y)的数值均与中心栅格单元数据D(a,b)相近,这种情况,可以节约8个栅格单元的存储空间;也有可能存储的结构为D(2,2),D(x,y),共需要2个栅格单元存储空间,这时说明周围的8个栅格单元数据D中有一个栅格单元数据D的数值与中心栅格单元数据D(a,b)差异较大。但我们无法知道具体是哪个栅格单元数据D与中心栅格单元数据D(a,b)的差异较大,哪一个栅格单元数据D与中心栅格单元数据D(a,b)的差异较小,因为上面存储方法里没有记录周围栅格单元数据D(x,y)与中心栅格单元数据D(a,b)相比较的结果,因此,在从第2项开始至到第9项的比较处理时,也同时将对应的比较结果存储起来,即需要将栅格单元T的标记信息进行存储,存储的方法是对该栅格单元T(1,1)分配1个字节的存储空间,共8位,用二进制1表示比较结果相同或相近,该项栅格单元数据D不需要进行实际存储;用二进制0表示该项栅格单元数据D需要进行实际存储;将该8位二进制数用1字节的十进制整数来记录存储;从左到右,刚好对应着第2项到第9项的8个周围栅格单元数据D(x,y)与中心栅格单元数据D(a,b)的比较结果,因此,栅格单元T(1,1)的存储结果可能是如下表4所示的存储结构:
表4:
D(2,2) | D(1,3) | D(3,2) |
其中,共需要3xa个字节存储空间,a是原始栅格数据Data的每个栅格单元数据D需要的存储空间大小。
栅格单元T(1,1)的标记信息存储结构二进制如下表5所示:
表5
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
其中,栅格单元T的标记信息的含义是中心栅格单元数据D(2,2)周围的8个周围栅格单元数据D(x,y)中,只有D(1,3)和D(3,2)的数值与D(2,2)的数值差异大于容许误差率P,因此,在该8位存储空间里按顺序标记为0;其余差异小于容许误差率P的标记为1,表示不需要存储真实数据。该结构共需要存储空间为1字节,并且对栅格数据Tiles里的所有栅格单元T都是固定1字节。对上述的二进制11011011,在存储时用1字节的十进制整数来记录,其数值为219。这部分存储空间相比普通栅格数据组织结构来说是额外多出的存储空间,但是,该部分空间相对栅格单元数据D的存储空间来说很小,后面有分析结论。
按上述方法,对表2中的栅格数据Tiles的所有栅格单元T进行处理,处理完后,得到如下表6所示的存储结构:
表6
栅格数据Tiles的上述存储结构,可以写到数据文件中,如x.data中,
当a=4字节时,如原始栅格数据Data的数据类型为int型,记录时,对第1个单元,分配3个int型存储空间,分别存储D(2,2),D(1,3),D(3,2)数值;对第2个单元,分配1个int型存储空间,存储D(2,5)数值;依次将整个栅格数据Tiles的MxN个栅格单元T存储完毕。
这里,还要做一个特殊处理的步骤,因为表6中的每个栅格单元T的实际存储空间大小不一致,有的需要a字节,有的需要9xa字节,这样,就会给后续的读取栅格单元数据D带来一定的困难,例如很难定位栅格单元T(68,45)的数值是存储在表6中哪个位置。为此,我们还需要存储原始栅格数据Data与处理后的栅格数据Tiles记录的位置对应关系,称之为栅格单元T中栅格单元数据D的位置信息。方法是对栅格数据Tiles的M行栅格单元,每行的已存储的第1个栅格单元T(f,1),其中1≤f≤M,在表6的存储结构里其第一个数据在整个表6中数据的顺序(表表6中的每个数据均需要a字节空间),记录该顺序值时采用8字节整数类型,按顺序一共要记录M个,这些位置信息可记录在数据文件中,如x.pos数据文件;当然,假设第一预设顺序不是从左至右,从上至下,而是从上至下,从左至右,则位置信息可以针对的是栅格数据Tiles中的N列栅格单元,每列的已存储的第1个栅格单元T(1,f),其中1≤f≤N。
例如,假设某划分后栅格数据Tiles由4x4个栅格单元T组成,所有栅格单元T处理后的存储结构如下表7表所示:
表7
对上表7的位置信息,可存储到x.pos文件中,共有4行栅格单元T,栅格单元T(1,1)的实际数据存储空间(即已存储的)的第一个栅格单元数据D在整个栅格数据Tiles的实际数据存储空间(即x.data数据文件)里的顺序为1,栅格单元T(2,1)的实际数据存储空间的第一个数据在整个栅格数据Tiles的实际数据存储空间里的顺序为13,栅格单元T(3,1)的实际存储空间的第一个数据在整个栅格数据Tiles的实际数据存储空间里的顺序为27,栅格单元T(4,1)的实际存储空间的第一个数据在整个栅格数据Tiles的实际数据存储空间里的顺序为38,该x.pos文件存储的位置信息数据为4个8字节的整数数据:1、13、27和38。
对应表6的标记信息如下表8所示:
表8
该栅格数据Tiles的上述标记信息,可以写到数据文件中,如x.tags中。
记录时,栅格数据Tiles的MxN个栅格单元,共分配MxN个字节空间,按顺序以字节为单位将标记信息数值记录在数据文件中,如219 255…31…63。
基于上述一种栅格数据的存储方法,本发明还提供一种栅格数据的读取方法,对本发明方法存储的栅格数据进行读取,具体技术方案如下:
我们要考虑到应用中随机读取原始栅格的任意单元数值(栅格数据Data中任意栅格单元数据D)的需求,依据上述存储的信息,可以按下述方法进行快速的定位读取还原原始栅格数值。
首先,读取原始栅格数据Data的基本信息,如从文件x.info数据文件里读出原始栅格数据Data的行数K,列数L及每个栅格单元数据D的存储空间大小a字节及类型。
在存储的栅格数据Tiles中,假设若要读出对应的栅格数据Data的r行,其数值在1到K之间,c列,其数值在1到L之间的数值(即从已存储的栅格数据Tiles中读取栅格单元数据D(r,c)),按下面步骤进行:
(a)由于对原始栅格数据Data重新划分了行和列,得到由栅格单元T组成的M行N列栅格数据Tiles,假设栅格数据Data的栅格单元数据D(r,c)在栅格数据Tiles的栅格单元T(s,t)中;如果w是3的倍数,则s=r/3;否则s=[r/3]+1;同理,如果c是3的倍数,则t=c/3;否则t=[c/3]+1。
(b)读取预设栅格单元T中预设栅格单元数据D的位置信息,如x.pos文件,以8字节的整数为单位,读取第s个(这里是以行为基准,若以列为基准,则应该是读取第t个,下同)整数值,假设为v。
(c)读取已经存储的栅格数据Tiles,如x.data文件,定位到第v个数据(每个数据的存储大小为a字节)。例如,a为int型的4字节时,则读文件x.data的第v个int型数据,则v就是划分后的栅格单元T(s,1)的实际数据存储空间的已存储的第一个栅格单元数据D的位置信息。
(d)还需要计算栅格单元T(s,t)距离栅格单元T(s,1)存储空间起始距离q,这是通过分别对T(s,1)至T(s,t-1)栅格单元的实际数据存储大小求和得到q值,q值是以栅格单元数据D为单位,例如,栅格单元T(s,1)实际需要存储3个栅格单元数据D,栅格单元T(s,2)实际需要存储6个栅格单元数据D,栅格单元T(s,3)实际需要存储1个栅格单元数据D,…,则q=3+6+1+…。
(e)对每个划分后的栅格单元T(s,i),这里1≤i≤t,其实际存储空间大小,我们是可以通过读取栅格数据Tiles的标记信息得到,具体方法是:对划分后的栅格单元T(s,i),注意,划分后的每个栅格单元T(s,i)的标记信息都是占1字节存储空间,按顺序开始记录在标记信息中的,读出第s行第i列的1个字节类型的数值,并判断该数值的二进制位有几位为0。(还记得之前我们存储某个栅格单元T的标记时,与中心格子(中心栅格单元数据D(a,b))相同或相近的格子(周围栅格单元数据D(x,y))的标记为1,与中心格子数值差异较大时才标记为0,所以,此时计算该栅格单元T中存储的栅格单元数据D的标记信息的二进制有几位数值为0就说明中心格子周围有几个格子数值是差异较大的,是需要实际存储的),另外每个划分后的栅格单元T的中心格子也是必须要存储的,因此每个划分后的栅格单元T的实际存储空间大小为其对应的标记数值的二进制位中0的个数再加1。
按上述方法,假设栅格单元T(s,1)列实际使用k1个数据存储空间,栅格单元T(s,2)列实际使用k2个数据存储空间,依次类推,栅格单元T(s,t-1)列实际使用kx个数据存储空间,则该栅格单元T(s,t)距离栅格单元T(s,1)存储空间的起始距离q=k1+k2+…+kx,这样,就得到栅格单元T(s,t)的实际存储空间在整个数值记录文件里位于第v+q个原始栅格单元数据。
例如,某原始栅格数据Data的栅格单元数据D在划分后的栅格单元T(s=2000,c=7)中,我们通过读取位置信息文件得知第2000行的第1列的栅格单元T(2000,1)的实际数值存储在文件x.data的第v=1348426个int型数据位置。这时候,我们要确定栅格单元T(2000,7)距离T(2000,1)的实际存储空间距离q.通过读取栅格标记文件(x.tags数据文件),得到该行的第1列至第6列的标记信息如下表9,括号内为记录的数据的二进制表示,以便于计算各个划分后的栅格单元T实际需要存储多少个原始栅格单元数据D:
表9
则q=5+4+7+2+1+7=26,这样,我们就得到划分后的T(s=2000,c=7)的实际数值存储空间位于第v+q=1348426+26=1348452个int型数据位置。
(f)分析划分后的栅格单元T(s,t)的标记信息,读取该存储单元的实际存储数值,并还原为3x3的栅格单元数据D。
划分后的栅格单元T(s,t)的标记信息是通过读取x.tags数据文件中的第(s-1)*N+t个字节型整数,按上述方法计算该栅格单元T的实际存储格子数量b。在x.data数据文件里从第v+q个数据开始,读b个栅格单元数据D,按上述顺序进行还原为3x3的栅格单元数据D,第1个数值数据是中心格子的数值,其后是按顺时针排列,并且忽略相同或相近的数值。例如,读取的该划分后的栅格单元标记为155(10011011),则该划分后的栅格单元共需要实际记录4个格子的数值,其余5个格子与中心格子数据相同或近似,不需要存储。假设从栅格数值x.data数据文件里第v+q个int型数据开始,共需要读出4个int型数据,分别为23,145,78,69.那么,还原后的3x3栅格单元为如下表10所示:
表10
23(这个格子的标记为1) | 145(这个格子的标记为0) | 78(这个格子的标记为0) |
23(这个格子的标记为1) | 23 | 23(这个格子的标记为1) |
23(这个格子的标记为1) | 69(这个格子的标记为0) | 23(这个格子的标记为1) |
(g)至此,对原始栅格数据Data的栅格单元D(r,c)便可容易得到。
由上一步骤获得的包含原始栅格数据的栅格单元D(r,c)的划分后的栅格单元数据T(s,t),如果r除3的余数是1,则对应上表10中的第1行,如果r除3的余数是2,则对应上表10中的第2行,如果r是3的倍数,则取上表10中的第3行;同理,对c做分析,可得到取第1列还是第2,第3列,行与列的交叉点便是需要读取的原始栅格单元数值。
本发明栅格数据读取方法本质就是读取存储的位置(其实栅格数据存储的逆过程),然后读一些标记,逆向还原栅格数据,运行计算量并不复杂,不影响栅格处理性能,优点是可以快速得到任意一栅格单元数据而不需要读取整个数值记录文件。
本发明一种栅格数据的存储及读取方法具有如下优点:
充分考虑到栅格数据的局部小范围内的数值连续性,以及不同应用系统的数据精度要求不同,提出的存储方法大大减少了存储空间,并且本方法不要求在局部范围内的所有栅格单元数据的数值相同或相近,只要有部分相同或相近就可有较好的效果。分析如下:
对于原始栅格数据Data的每个栅格单元数据采用8字节的double型情况,共需要8*K*L个字节;采用本方法,在用户设置容许误差率P为0的情况下,假设每个3x3的栅格单元中,平均只有1个格子与中心值相同,则本方法将节省1/9的存储空间;假设每个3x3的栅格单元中,平均只有3个格子与中心值相同,则本方法将节省1/3的存储空间;假设每个3x3的栅格单元中,平均有5个格子与中心值相同,则本方法将节省5/9的存储空间;而在实际栅格数据中,大量的存在平均有5个以上格子与中心值相同的情况,因此,本方法的效率极高。另外,本方法中需要额外存储的栅格标记数据,其数据量为原始栅格数据的1/(9*8),栅格位置数据存储空间近似为K*8/3字节,相比原始栅格数据量基本可以忽略。而且,如果应用系统容许一定的误差率,例如P取值大于0,则可进一步的减少存储空间,显然,P取值越大,所需要的存储空间就越小。
另外,之所以选择3x3的单元大小也是因为周围的8个格子的标志位刚好为8位,这样按一字节的整数进行存储与读取处理效率较高,若要采用5x5的单元,则需要24位标记,存储时必须做补位为4字节或拆分为3个单字节处理,影响存储处理效率;另外,距离中心格子越远,其数值与中心格子相同或相近的可能性越小,进而5x5的数据存储减少程度并没有比3x3的划分方式减少程度高,因此本文提出以3x3单元大小进行划分。
同时,对于本方法存储的数据,在应用中需要读取任意一原始栅格单元时,不需要对整个数据进行读取分析还原处理就能快速的得到数值结果,大大地提高数据读取的效率。
利用本方法,对于海量栅格数据的备份存储,发布低精度数据给大众化应用系统等非常适用,节约存储空间,降低系统成本。
基于本方法的存储及读取系统,可以大量的减少栅格数据的网络传输率,提高系统的处理性能。
另外,本方法是针对栅格数据的存储结构层次进行处理的,与数据的压缩和编码并不冲突,利用本方法得到的栅格数值数据和栅格标记数据,仍然可以使用各种数据压缩和编码技术进行再一步的处理,获得更小的存储空间。
对于具有空间相似性特征较明显的栅格数据,如DEM,坡度数据,土壤侵蚀强度数据等,其数据分布在空间上具有明显的渐变特征。在一个局部小范围里,其部分格子数值非常接近,对于这类栅格数据,在设置一定的容许误差率情况下采用本方法往往可以得到低于原始栅格数据Data的30%的存储量的效果。
具体案例
以全国DEM数据为例,在30米分辨率情况下,传统存储方式下由行K=134724,列L=161360个栅格单元数据D组成,采用8字节的double型数值存储,共需要的存储空间约为161.9GB。应用本方法,使用3x3栅格单元T进行划分得到M=44908,N=53787个划分后的栅格数据Tiles,然后对这MxN个栅格单元T进行标记信息处理。在设置容许误差率P=0的情况下,经统计,在这MxN个栅格单元T中,其9个栅格单元数据D的数值均不相同,需要使用9个double型数值存储的有3.4%,需要使用8个double型数值存储的(周围有一个格子数值与中心格子数值相同)有5.8%,需要使用7个double型数值存储的(周围有两个格子数值与中心格子数值相同)有7.7%,需要使用6个double型数值存储的有3%,需要使用5个double型数值存储的有20.3%,需要使用4个double型数值存储的有21.9%,需要使用3个double型数值存储的有24.6%,需要使用2个double型数值存储的有6.1%,需要使用1个double型数值存储的有7.2%,处理后得到的栅格数值数据存储大小约为74.6GB,约为原始数据存储大小的46%。当设置容许误差率P=10%的情况下处理后得到的栅格数值存储大小约为35.62GB,约为原始数据存储大小的22%;另外,本方法中需要额外存储的栅格标记数据,其数据存储大小约为2.2GB,栅格位置数据存储空间近似为351KB,因此可以看出本方法极大的节省了存储空间。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种栅格数据的存储方法,其特征在于,包括以下步骤,
重新划分原始栅格数据Data的行和列:对由K×L个栅格单元数据D组成的K行L列的原始栅格数据Data的行和列重新划分,得到由M×N个栅格单元T组成的M行N列的栅格数据Tiles,且
其中,E和F均为常数,栅格单元T为由E×F个栅格单元数据D组成的E行F列的栅格数据矩阵;
存储栅格数据Tiles:以原始栅格数据Data的栅格单元数据D的数据类型为基准,将每一个栅格单元T中标定的一个栅格单元数据D,以及该栅格单元T中与标定的一个栅格单元数据D之间的误差率在容许误差率P外的其他栅格单元数据D存储在x.data数据文件中;
还包括存储每一个栅格单元T的标记信息:将每一个栅格单元T中除标定的一个栅格单元数据D之外剩余的每一栅格单元数据D分别与标定的一个栅格单元数据D进行相似性对比后用于表征对比结果的标记信息以字节为单位存储在x.tag数据文件中;
其中,将每一个栅格单元T中除标定的一个栅格单元数据D之外剩余的每一栅格单元数据D分别与标定的一个栅格单元数据D进行相似性对比的具体过程为,计算每一个栅格单元T中除标定的一个栅格单元数据D之外剩余的每一栅格单元数据D分别与标定的一个栅格单元数据D之间的误差率;
其中,将用于表征对比结果的标记信息以字节为单位存储在x.tag数据文件中具体为,按照预设的顺序对各个对比结果进行排列,形成栅格单元T的二进制编码的标记信息,并将栅格单元T的二进制编码的标记信息以字节为单位存储在x.tag数据文件中;
还包括存储预设的栅格单元T中预设的栅格单元数据D的位置信息:以原始栅格数据Data的栅格单元数据D的数据类型为基准,将在预设位置上的栅格单元T中的且已存储的预设的栅格单元数据D在整个栅格数据Tiles存储空间中占据的位置信息存储在x.pos数据文件中;
存储预设的栅格单元T中预设的栅格单元数据D的位置信息的具体步骤为:
根据第一预设顺序选定栅格数据Tiles中的每一行或每一列中的第一个栅格单元T;
分别计算栅格数据Tiles中的每一行或每一列中的第一个栅格单元T中已存储的第一个栅格单元数据D在x.data数据文件中的位置数据;
以原始栅格单元Data的栅格单元数据D的数据类型为基准,将栅格数据Tiles中的每一行或每一列中的第一个栅格单元T中已存储的第一个栅格单元数据D的位置数据按照第三预设顺序存储在x.pos数据文件中。
2.根据权利要求1所述的一种栅格数据的存储方法,其特征在于,每一个栅格单元T中标定的一个栅格单元数据D具体指位于该栅格单元T的中心位置上的栅格单元数据D,记为中心栅格单元数据D(a,b),在该栅格单元T中,将位于中心栅格单元数据D(a,b)周围剩余的栅格单元数据D记为周围栅格单元数据D(x,y);
存储栅格数据Tiles的具体步骤为:按照第一预设顺序对栅格数据Tiles中的每一个栅格单元T进行逐个存储,其中存储一个栅格单元T的具体步骤为,
以原始栅格数据Data的栅格单元数据D的数据类型为基准,对中心栅格单元数据D(a,b)进行存储;
以原始栅格数据Data的栅格单元数据D的数据类型为基准,按照第二预设的顺序对在容许误差范围外的周围栅格单元数据D(x,y)进行存储;其中,误差是指在一个栅格单元T中,周围栅格单元数据D(x,y)与中心栅格单元数据D(a,b)之间的相似度的差率。
3.根据权利要求2所述的一种栅格数据的存储方法,其特征在于,存储每一个栅格单元T的标记信息的具体步骤为:按照第一预设顺序对每一个栅格单元T的标记信息进行逐个存储,其中存储一个栅格单元T的标记信息的具体步骤为,
将栅格单元数据T中的每一个周围栅格单元数据D(x,y)分别与中心栅格单元数据D(a,b)进行相似性对比;
若周围栅格单元数据D(x,y)在中心栅格单元数据D(a,b)容许误差范围外,则将此周围栅格单元数据D(x,y)的标记信息标记为二进制中的0;若周围栅格单元数据D(x,y)在中心栅格单元数据D(a,b)容许误差范围内,则将此周围栅格单元数据D(x,y)的标记信息标记为二进制中的1;
按照第二预设的顺序对所有二进制的标记进行排列,形成栅格单元T的二进制编码的标记信息,并将栅格单元T的二进制编码的标记信息以字节为单位存储在x.tag数据文件中。
4.根据权利要求1至3任一项所述的一种栅格数据的存储方法,其特征在于,
当K为E的非整数倍时,对栅格单元T中第M行中缺少的行中的栅格单元以固定数值d填充;
当L为F的非整数倍时,对栅格单元T中第N列中缺少的列中的栅格单元以固定数值d填充。
5.根据权利要求1至3任一项所述的一种栅格数据的存储方法,其特征在于,E=F=3。
6.一种栅格数据的读取方法,用于对按照权利要求3至5任一项所述的一种栅格数据的存储方法存储的栅格数据进行读取,其特征在于,若要读取原始栅格数据Data中第r行第c列的栅格单元数据D(r,c),则包括以下步骤:
S1,计算栅格单元数据D(r,c)所属的栅格单元T(s,t)在栅格数据Tiles中的行数s和列数t,则有
S2,以原始栅格单元Data的栅格单元数据D的数据类型为基准,按照第三预设顺序在x.pos数据文件中读取第s个或第t个数据,且设读出的第s个或第t个数据为v,则v为栅格单元T(s,1)或栅格单元T(1,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储位置;
S3,计算栅格单元T(s,t)中已存储的第一个栅格单元数据D与栅格单元T(s,1)或栅格单元T(1,t)中已存储的第一个栅格单元数据D在x.data数据文件中存储位置的间隔距离q;
S4,根据间隔距离q和存储位置数值v计算得到栅格单元T(s,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储空间位置;
S5,根据栅格单元T(s,t)中已存储的第一个栅格单元数据D在x.data数据文件中的存储空间位置,并结合栅格单元T(s,t)在x.tag数据文件中的标记信息,读取位于栅格单元T(s,t)中的原始栅格单元数据D(r,c)。
7.根据权利要求6所述的一种栅格数据的读取方法,其特征在于,所述S3具体为:
S31,以字节为单位,读取数据文件x.tag中第(s-1)*N+i个字节值,得到存储的栅格单元T(s,i)的标记信息,将该标记信息以二进制bit位方式进行分析,得到栅格单元T(s,i)在x.pos数据文件中所需要的存储空间的大小,其中i=1,2……t-1;
或以字节为单位读取数据文件x.tag中第(t-1)*M+i个字节值,得到存储的栅格单元T(i,t)的标记信息,将该标记信息以二进制bit位方式进行分析,得到栅格单元T(i,t)在x.pos数据文件中所需要的存储空间的大小,其中i=1,2……s-1;
S32,将栅格单元T(s,1)~T(s,t-1)的存储空间进行叠加计算,得出间隔距离q;
或将栅格单元T(1,t)~T(s-1,t)的存储空间进行叠加计算,得出间隔距离q;
其中,栅格单元T(s,i)所需要的存储空间的大小为,栅格单元T(s,i)在x.tag数据文件中的标记信息的二进制编码中0的个数再加1;
栅格单元T(i,t)所需要的存储空间的大小为,栅格单元T(i,t)在x.tag数据文件中的标记信息的二进制编码中0的个数再加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217013.4A CN107992555B (zh) | 2017-11-28 | 2017-11-28 | 一种栅格数据的存储及读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217013.4A CN107992555B (zh) | 2017-11-28 | 2017-11-28 | 一种栅格数据的存储及读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107992555A CN107992555A (zh) | 2018-05-04 |
CN107992555B true CN107992555B (zh) | 2021-08-24 |
Family
ID=62033966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711217013.4A Active CN107992555B (zh) | 2017-11-28 | 2017-11-28 | 一种栅格数据的存储及读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107992555B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116540921A (zh) * | 2022-01-26 | 2023-08-04 | 华为技术有限公司 | 网络数据存储方法及相关系统、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542041A (zh) * | 2011-12-27 | 2012-07-04 | 北京地拓科技发展有限公司 | 栅格数据处理方法及系统 |
CN102855322A (zh) * | 2012-09-11 | 2013-01-02 | 哈尔滨工程大学 | 一种基于空间探索技术的地图数据存储方法 |
CN102867023A (zh) * | 2012-08-15 | 2013-01-09 | 北京地拓科技发展有限公司 | 一种栅格数据的存储、读取方法及装置 |
CN102902491A (zh) * | 2012-08-29 | 2013-01-30 | 北京地拓科技发展有限公司 | 遥感影像数据写入及读取的方法及装置 |
CN103093413A (zh) * | 2013-01-14 | 2013-05-08 | 北京地拓科技发展有限公司 | 一种遥感影像数据写入及读取的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7574570B2 (en) * | 2005-09-30 | 2009-08-11 | Cleversafe Inc | Billing system for information dispersal system |
-
2017
- 2017-11-28 CN CN201711217013.4A patent/CN107992555B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542041A (zh) * | 2011-12-27 | 2012-07-04 | 北京地拓科技发展有限公司 | 栅格数据处理方法及系统 |
CN102867023A (zh) * | 2012-08-15 | 2013-01-09 | 北京地拓科技发展有限公司 | 一种栅格数据的存储、读取方法及装置 |
CN102902491A (zh) * | 2012-08-29 | 2013-01-30 | 北京地拓科技发展有限公司 | 遥感影像数据写入及读取的方法及装置 |
CN102855322A (zh) * | 2012-09-11 | 2013-01-02 | 哈尔滨工程大学 | 一种基于空间探索技术的地图数据存储方法 |
CN103093413A (zh) * | 2013-01-14 | 2013-05-08 | 北京地拓科技发展有限公司 | 一种遥感影像数据写入及读取的方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于四叉树的栅格数据交叉计算方法与应用;闫富松,孙成宝,周聪俐;《科学技术与工程》;20170630;第17卷(第18期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107992555A (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102411616B (zh) | 一种数据存储方法和系统及数据管理方法 | |
CN109726314B (zh) | 基于位图的稀疏矩阵压缩存储方法 | |
US10042873B2 (en) | Data encoding and processing columnar data | |
CN111104457A (zh) | 基于分布式数据库的海量时空数据管理方法 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN111813840B (zh) | 一种数据处理方法、设备及存储介质 | |
CN106844288A (zh) | 一种随机字符串生成方法及装置 | |
CN112214472A (zh) | 气象格点数据的存储及查询方法、装置及存储介质 | |
CN101692231B (zh) | 一种适合空间查询的遥感影像分块排序存储方法 | |
CN110968585A (zh) | 面向列的存储方法、装置、设备及计算机可读存储介质 | |
CN107992555B (zh) | 一种栅格数据的存储及读取方法 | |
CN102867023A (zh) | 一种栅格数据的存储、读取方法及装置 | |
CN116418985A (zh) | 录像文件存储方法、装置、计算机设备和存储介质 | |
CN108647243B (zh) | 基于时间序列的工业大数据存储方法 | |
CN115862653A (zh) | 音频去噪方法、装置、计算机设备和存储介质 | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN113806601B (zh) | 一种周边兴趣点检索方法及存储介质 | |
CN103020264B (zh) | 多子集实体数据的存储显示方法及装置 | |
CN103886045A (zh) | 一种包含局部有效栅格数据的存取方法及装置 | |
CN110796238B (zh) | 基于arm架构fpga硬件系统的卷积神经网络权重压缩方法及其装置 | |
CN102915329B (zh) | 栅格数据写入与读取的方法及装置 | |
CN106294503A (zh) | 数据的动态存储方法、装置及计算设备 | |
CN115080680B (zh) | 用于高精地图的激光点云数据处理方法、装置及设备 | |
CN115049873A (zh) | 一种分类型栅格数据的存储及读取方法 | |
CN117312306A (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 |