CN103678657B - 一种地形高程数据存储和读取的方法 - Google Patents
一种地形高程数据存储和读取的方法 Download PDFInfo
- Publication number
- CN103678657B CN103678657B CN201310720631.6A CN201310720631A CN103678657B CN 103678657 B CN103678657 B CN 103678657B CN 201310720631 A CN201310720631 A CN 201310720631A CN 103678657 B CN103678657 B CN 103678657B
- Authority
- CN
- China
- Prior art keywords
- data
- plot
- value
- difference
- file
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
Abstract
本发明涉及一种地形高程数据存储和读取的方法,所述方法的步骤包括:高程数据划分;数据压缩处理;获取基准值;划分种类;存储数据块;索引建立;索引优化;读取压缩高程文件;查找一级索引;查找二级索引;指向数据块;读取种类;读取基准值;读取差值;取得原始高程数据;输出数据。本发明通过构建两级索引的方式,减少大量重复数据的存储和读取,大大减少了存储数据量,同时也加快了高程数据的读取速度。分级、分块的文件存储方式也加快了检索的速度。高程数据的存储采取高程差的数据存储方式,使数据量减少30%—50%,存储数据量的减少十分明显。
Description
技术领域
本发明涉及本发明涉及一种地形高程数据存储和读取的方法,是一种计算机数据压缩的方法,是一种地形高程数据的存储和快速提取数据的方法。
背景技术
地理信息***的数据极为庞大,即便一个相对单一的高程数据(地理位置的海拔高度)一般级别的精度要求的数据量也相当惊人,例如:整个地球的高程从最低点到最高点的高度范围为-154m—8848m,如果以米为单位存储高程,每个高度值应该以2字节存储,那么,30m精度的地球高程数据的存储需要上千G空间。这个存储空间大小对于大多应用来说不可接受。当然在多数情况下,没有必要存储全球的高程数据,但即便是某一地区的高程数据,其数据量也相当大,虽然现代的硬件存储***的存储量已经相当大,但如何快速的读取这些数据也是一个很重要的课题。
发明内容
为解决现有技术的问题,本发明提出一种地形高程数据存储和读取的方法。所述的方法可以极大的压缩高程数据的存储空间,并且可以实现高速读取。
本发明的目的是这样实现的:一种地形高程数据存储的方法,所述方法的步骤如下:
高程数据划分的步骤:用于将原始高程数据按不同地区划分为一个或多个部分,将每个部分存储为一个高程文件;
数据压缩处理的步骤:用于将每个高程文件中所包括的地区按纬度和经度划分为若干个更小的纵向排列和横向排列的地块,为每个高程文件对应生成一个压缩高程文件,生成压缩高程文件过程中对每一个地块的原始高程数据作如下处理:
基准值获取的步骤:用于比较和计算该地块的各点的原始高程数据,取最小值作为基准值;
种类划分的步骤:用于将该地块原始高程数据中各点的高程值与基准值比较,计算得到各点的高程值与基准值之间的差值,将该地块内所有差值的最大值作为本地块的最大差值,根据最大差值为本地块确定一个差值存储的种类值;
数据块存储的步骤:用于将该地块高程数据按如下格式存储到压缩高程文件中:
种类值,占用一个字节;基准值,占用两个字节;差值,差值是根据种类值的不同按不同的数据长度存储,差值所占用的字节数根据差值存储的种类值的大小变化,同一个地块的每个差值占用同样的字节数存储;
索引建立的步骤:对每个压缩高程文件建立两级索引,所述两级索引的第一级索引为指针,所述指针指向一纵列或一横列地块的第二级索引的起始地址,所述两级索引的第二级索引为该地块的高程数据在所述压缩高程文件的存储地址;
索引优化的步骤:用于将高程值全部为无效值的地块的高程数据存储地址修正为-1,将一纵列或一横列中全部地块的高程值都为无效值的一级索引指针修正为-1。
进一步的,所述的高程文件通过将经过地图投影的地区高程数据按照经度方向或者纬度方向划分为若干份来得到,其中每一份对应于一个高程文件。
进一步的,所述的最大差值分为大于255、大于15并且小于或等于255、大于零并且小于或等于15、等于零的四个种类,分别定义差值存储的种类值为ZL1,ZL2,ZL3,ZL4;所述四个种类的差值的存储方式为:将种类值为ZL1的地块的所有差值采用16bit存储、将种类值为ZL2的地块的所有差值采用8bit存储、将种类值为ZL3的地块的所有差值采用4bit存储,对于种类值为ZL4的地块的所有差值则不储存。
进一步的,所述的划分,是按照2n数量确定的。
进一步的,所述的两级索引和处理后的高程数据存储在带索引的压缩高程文件中。
进一步的,所述的两级索引和处理后的高程数据分别存储在索引文件和压缩高程文件中。
进一步的,所述的全部高程数据各个部分的两级索引存储在一个总索引文件中。
一种读取使用上述方法存储的高程数据的地形高程数据读取的方法,所述方法的步骤如下:
提取压缩高程文件的步骤:用于根据要查找高程数据的位置找到对应的压缩高程文件;
查找一级索引的步骤:用于读取位置所在的一纵列或一横列地块的一级索引,判断该一级索引的值是否为“-1”,如果“是”则将该纵列或横列的所有地块的所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
查找二级索引的步骤:用于读取位置所在地块的二级索引,判断该二级索引是否为“-1”,如果“是”则将该地块所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
查找本地块高程数据存储位置的步骤:用于根据二级索引的地址,找到本地块高程数据在压缩高程文件中所在的存储位置;
读取种类的步骤:用于读取本地块高程数据种类值,获得差值的存储方式;
读取基准值的步骤:用于读取基准值;
读取差值的步骤:用于根据差值的存储方式读取差值数据;
得到原始高程数据的步骤:用于将基准值与差值相加,得到原始高程数据;
输出数据的步骤:用于将恢复出的高程数据输出,此处的高程数据可以是计算后恢复出的原始高程数据,也可以是根据索引为-1的信息直接填充的无效值。
本发明产生的有益效果是:本发明通过构建两级索引的方式,排除大量重复数据的存储和读取,大大减少读取数据量,加快了读取数据的速度。分级、分块的文件存储方式也加快了读取的速度。高程数据的存储采取高程差的数据存储方式,使数据量减少30%—50%,存储数据量的减少十分明显。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是发明实施例一所述高程数据存储方法的流程图;
图2是发明实施例一所述方法的举例1的原始高程数据矩阵;
图3是发明实施例一所述方法的是举例1的差值数据矩阵;
图4是发明实施例一所述方法的举例2的原始高程数据矩阵;
图5是发明实施例一所述方法的是举例2的差值数据矩阵;
图6是发明实施例一所述高程数据读取方法的流程图。
具体实施方式
实施例一:
本实施例是一种地形高程数据存储和提取的方法。对于地球高程而言,存在两个明显的特点,一个是有大量高程为无效值的地区,这是因为地球高程数据通常是通过卫星针对陆地区域进行采集,地球上很多地方无法采到有效数据,比如在高纬度地区,北纬83度和南纬83度以上通常都没有有效数据;对于海洋部分、内陆的大湖等部分也没有有效数据,通常认为这些地方的值是无效值,对于海洋部分和内陆大湖的高程一般会有另外的手段提供。某地的高程值为无效值时,一般将该点的高程记为一个固定的地球上不可能存在的高程值,如9999米,或者-250米等,这样当软件读取到这样不可能实际存在的高程值时就可以判断为该点的高程值为无效值,本实施例无效高程值设置为-250米。另一个是在地表有大量的平原,在一定区块范围内有大量的高程落差不超过255m,甚至不超过16m或者4m。本实施例正是利用了地球高程数据的这两个特点对高程数据进行处理。首先用定义索引的方式排除大量高程为无效值的数据。对于第二个特点采取的方式是:取得一个区块中的最小高度值作为基础,然后计算出该区块中其他点相对于最小高度值的差值,同时根据差值的大小选择不同的存储空间,因差值较小,可以较多的节约存储空间,提高存取速度。在此基础上,还可对于全球的高程数据以不同级别的方式存储,不同级别代表了不同的数据详细等级,例如说每30米一个高程采样点,或者每60米甚至每200米一个采样点。对于每一级的数据,分割为多个高程文件按照上述方案存储。本实施例所述方法的具体步骤如下:
本实施例所述方法包括两个方面:存储高程数据的方法和读取高程数据的方法。
存储的方法,流程如图1所示:
高程数据划分的步骤:用于将原始高程数据按不同地区划分为一个或多个部分,将每个部分存储为一个高程文件。存储全球的高程数据,首先遇到的问题是如何划分区域进行数据存储。为提高检索速度,一般不会将所有数据都存储在一个文件中,科学而适当的划分区域,会取得事半功倍的效果。本实施例在文件划分着重考虑文件大小应当比较平均的问题。根据球形物体表面面积的特点,同一纬度区间的地球表面积在接近两极时会越来越小,而接近赤道时同一纬度区间的地球表面积会越来越大;而沿经线方向等分得到的表面积是一致的。因此,将按经度方向排列的区块的数据放在一个高程文件中,称为经度文件,各个经度的经度文件中的所存储的地表面积大体相同,不同经度的经度文件大小差别不大。但如果将同纬度等分的区块放在一个纬度文件中,接近赤道的纬度文件中所存储的地表面积就会十分巨大,而在高纬度区域所存储的地表面积就会很少,不同纬度的纬度文件中的所存储的地表面积差距较大。因此,本步骤按照经度划分存储高程数据的高程文件,其目的在于使文件大小差距不太大,有利于提高检索和提取速度。
本步骤所述的高程文件是存储一个地区高程数据的文件。这里所述的地区指的是经过地图投影的地球表面按经度方向或者纬度方向分割为若干个长条状的地区,投影方式采用的是等角投影。本实施例将沿经度方向排列的区块放在一个高程文件,即在一个高程文件中存储两条经线之间区块的高程数据,并称两条经线之间区块为“地区”,将存储两条经线之间区块高程数据的高程文件称为:经度文件。经度文件的数量按2n确定,如:16、32、64等。即将全球按经度方向划分为16或者32或者64等分。需要说明的是由于现代高程的测量,主要依据卫星或航拍的3D数字化照片结合实测形成的,数字化照片的清晰度是根据像素确定的,而像素量通常是按照计算机内的寻址位宽2n确定的,因此,可以按照计算机寻址位宽的大小确定文件的数量,而不是按照传统分割球形体的经纬度的度、分、秒划分区域文件。在实践中证明这样的划分,效率更高,对计算机运算和程序编制更加方便,可以更加便捷的找到所需要读取地块的数据存储在哪个文件中。当然,也可以按照度分秒的单位划分经度文件的个数,但需要比较复杂的换算,占用更多的运算资源,而且意义不大。
数据压缩处理的步骤:用于将每个高程文件中所包括的地区按纬度和经度划分为若干个更小的纵向排列和横向排列的地块,为每个高程文件对应生成一个压缩高程文件,生成压缩高程文件过程中对每一个地块的原始高程数据作压缩处理。前面所述的建立经度文件只是将全球分区的第一步,还要把长条形的地区再分为区域,再将各个区域再细分为地块。本步骤是将长条状的地区分为“区域”。如果是以经线划分的长条形的经度地区,就要用纬线将长条状的经度地区划分割为区域。如果用纬线划分的长条状的纬度地区,就要用经线划把长条状的纬度地区分割为区域。再将各个区域纵横划分为“地块”,高程数据按地块存储为“数据块”。区域和数据块的数量同样可以按照2n数量确定,例如可以将一个地区划分为32个或者64个或者128个区域,再将区域划分为32个或者64个或者128个地块。数据块纵横排列形成数据块矩阵。
基准值获取的步骤:用于计算地块的原始高程数据,取最小值作为基准值。如果直接存储所有的高程数据,则数据值可能会很大,占用较多的字节。本实施例则采用差值储存的方式:首先在一个地块的原始高程数据中找到最小值,以这个最小值为基准值,将地块的原始高程数据值与基准值比较,获得差值。或者说,所有原始高程数据值是基准值与差值之和。基准值通常情况下是一个数据块中的最小值,也就是说差值都是正值。存储差值的好处在于,根据对高程数据的研究发现,一个区块中高程数据的差值多数都比较小,较大的差值只占很小一部分。差值小则占用的字节较少,这样只要存储一个基准值,就可以将整个数据块中所有数据的值的存储需求减小许多,有效的减少了存储所占用的空间。
种类划分的步骤:用于将原始高程数据中的高程值与基准值比较,获得高程值与基准值之间差值,将该地块内所有差值的最大值作为本地块的最大差值,根据最大差值为本地块确定一个差值存储的种类值。为提高存储速度减少存储占用的空间,仅仅采用差值存储还不够,本实施例还采用了分类存储的方式:将差值按一个地块内所有差值的最大差值的大小分为几类,每一类的地块,该地块的所有差值按照相同的字节长度存储;最大差值不同的地块以不同的字节长度存储该地块的差值,以此节约存储空间。
数据块存储的步骤:用于将数据块按如下格式存储到压缩高程文件中:
种类值,占用一个字节;基准值,占用两个字节;差值,差值是根据种类值的不同按不同的数据长度存储,差值所占用的字节数根据差值存储的种类值的大小变化,同一个地块的每个差值占用同样的字节数存储; 差值按不同的字节长度存储的好处在于可以节约存储空间。因为随着地球表面地形的变化,高度的起伏程度并不相同,例如北美地区大面积的平原和我国中西部地区的丘陵地带,前者的起伏程度很小,差值的取值范围可能在2、3米之内,而后者的起伏相对较大,差值的取值范围可能超过了几十米。如果不分类而采用每个差值都用相同的字节长度来存储,为保证能存储下差值数值的上限,那就意味着需要选取数值最大的差值的字节长度作为存储字节长度,对于类似于前者的平原地带来说用这么长的字节来存储,则大部分的存储位为零,浪费了大量的存储空间。
索引建立的步骤:对每个压缩高程文件建立两级索引,所述两级索引的第一级索引为指针,所述指针指向一纵列或一横列地块的第二级索引的起始地址,所述两级索引的第二级索引为该地块的高程数据在本压缩高程文件中的存储地址;为快速的从压缩高程文件中找到数据块,本步骤定义了对数据块的两级索引。由于本实施例所建立的压缩高程文件是以经线切割的区域,相当于是一个纵列,所以第一级索引的指针相当于是指向一个横列地块的二级索引,而第二级索引则是压缩后的数据块在压缩高程文件中的地址,也就是相对于文件头的偏移量。
索引优化的步骤:用于将高程值全部为无效值的地块的高程数据存储地址修正为-1,将一横列中全部地块的高程值都为无效值的一级索引指针修正为-1;对于全球的高程数据,最突出的特点就是存在大量高程为无效值的海洋地区,在存储高程数据时排除这些无效值的数据是有效减少数据量存储的途径之一。为此本步骤提供了一个十分有效的方式:将全部高程数据都是无效值的地块用-1作索引,不需要用真正的数据块来存储,也就是说用来存储单一一个海洋地块的高程数据只用一个索引(其值为-1)就可以了。当区域内的一横列上的所有地块的二级索引都是-1的时候,将这一横列的一级索引指针定义为-1,不再记录这一横列里的所有地块的索引,同时也不需要真正的高程数据块。这样做的好处在于可以大大降低高程数据存储的容量,同时也降低了索引数据的容量,而且随着海洋地块的相连数量的增大,降低的效果更加明显;同时还加快读出高程数据的速度。因为如果是要读出的高程数据位于海洋,只读取索引信息将可以显示了,不需要再进一步检索和读取数据了,直接输出高程为无效值的数据就可以了。
最后,对于每个压缩高程文件对应的可以建立一个两级索引“总索引文件”,专门存储两级索引信息。或者将索引与对应的压缩高程数据共同存储在同一个“带有索引的压缩高程文件”。还可以将压缩高程文件各自的索引建立单独的索引文件,与各自的压缩高程文件对应。
高程数据读取的方法,流程如图6所示:
提取压缩高程文件的步骤:用于根据要查找高程数据的位置经度找到对应的压缩高程文件。要提取一个地点的高程数据,通常情况下要指出该地点的经纬度,然后根据经度找到压缩高程文件。
查找一级索引的步骤:用于读取位置所在的一纵列或一横列地块的一级索引,判断该一级索引的值是否为“-1”,如果“是”则将该该纵列或横列的所有地块的所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
查找二级索引的步骤:用于读取位置所在地块的二级索引,判断该二级索引是否为“-1”,如果“是”则将该地块所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
以上两个步骤快速的读取了海洋地区的高程数据,快速进入陆地高程数据的提取,以此简化读取数据的过程,提高读取数据的速度。此处的默认值,通常设置为一个稍低于全球有效陆地高程的值,例如-200米~-500米。本实施例默认值设置为-250米,这个值实际上也是高程值为无效值时该位置标记的无效高程,这样高程为无效值的海洋地区的陆地高程就会在水面之下,不会对显示结果造成影响。
查找本地块高程数据存储位置的步骤:用于根据二级索引的地址,找到本地块高程数据在本压缩高程文件中所在的存储位置;
读取种类的步骤:用于读取本地块高程数据种类值,获得差值的存储方式;
读取基准值的步骤:用于读取基准值;
读取差值的步骤:用于根据差值的存储方式读取差值数据。如果差值的存储方式为:按照该地块的最大差值划分:最大差值分为大于255、大于15并且小于或等于255、大于零并且小于或等于15、等于零的四个种类,分别定义差值存储的种类值为ZL1,ZL2,ZL3,ZL4;所述四个种类的差值的存储方式为:将种类值为ZL1的地块的所有差值采用16bit存储、将种类值为ZL2的地块的所有差值采用8bit存储、将种类值为ZL3的地块的所有差值采用4bit存储,对于种类值为ZL4的地块的所有差值则不储存。那么读取时对应的读取方式将根据元时写入方式将各高程差值恢复出来,即为: ZL1每16个bit作为一个差值读取,ZL2每8个bit作为一个差值读取,ZL3每4个bit作为一个差值读取,ZL4将所有的差值置为0;
得到原始高程数据的步骤:用于将基准值与差值相加,得到原始高程数据;
输出数据的步骤:用于将恢复出的高程数据输出。实际上,当一级索引为-1时,该步骤直接输出本横列地块的所有高程数据均为无效值的-250米,当二级索引为-1时,本步骤直接输出当前地块的所有高程数据均为无效值的-250米。只有一级索引和二级索引都不是-1时,才真正根据基准值和差值计算每个点的实际高程(即原始高程)并输出。由上可知,此处的高程数据可以是计算后恢复出的原始高程数据,也可以是根据索引为-1的信息直接填充的无效值。。
下面以两个具体例子说明本实施例使用差值存储的优势:
举例1:
图2是一个经纬度在55.77473,101.584557附近地块的原始高程数据矩阵,海拔都在3000米左右,如果存储原始高程数据,每一个数据都必须用16bit数据存储。
图3则是通过求差值,得到的差值数据矩阵,其基准值为3330。在矩阵中可以看出每一个节点的数据都不超过255,所以,该数据可以通过存储一个基本数据3330,和一系列的8bit高程数据来完成存储,数据存储量为原始数据的50%左右。
举例2:
图4是一个地块的原始高程数据矩阵,其中的多数高程均大于16m ,最小高程值为23m。
图5是经差值计算的高程数据矩阵,其中数据均小于15,这个数据块可以用4位数据存储。
因为地表有大量的平原,或者高原,所以,对于一个局部区域,落差低于255米地区很多,所以,通过这个方式可以把数据存储容量减少一半以上。
实施例二:
本实施例是实施例一的改进,是实施例一关于高程文件、区域和数据块的划分的细化。本实施例所述的高程文件是按照经度划分的经度文件,经度文件为32个,一个经度文件中设置1024个横向的区域,一个区域内分割为32个数据块。按照这样划分后,每个经度文件内存储的数据的精度跨度为:360/32=11.25,第一个文件存储东经0°~东经11.25°地区的高程数据,第二个文件存储东经11.25°~东经22.50°地区的高程数据,其余以此类推。那么如果我们需要读取东经110°地区的高程数据,可以很方便的从上述分析得到110/11.25=9.7778,取9.778的整数部分,就可以得到该地区的高程数据存储在9+1=10,也即第十个经度文件中。 这样可以直接读取第十个文件中的数据。 在第十个文件中,读到相应数据块的方式与此类似。这样就可以通过一个简单的算法直接找到所需要读取的位置在那个高程文件中存储,是第几个横向的区域,是该区域的第几个地块。
实施例三:
本实施例是上述实施例的改进,是上述实施例关于差值种类划分的细化。本实施例所述的本地块最大差值分为大于255、大于15小于或等于255、大于零小于或等于15、等于零的四个种类,分别定义种类值ZL1,ZL2,ZL3,ZL4,所述四个种类的差值的寻址空间存储方式为:将最大差值大于255的ZL1地块的所有差值采用16位存储、将最大差值大于15小于或等于255的ZL2地块的所有差值采用8位存储、将最大差值大于零小于或等于15的ZL3地块的所有差值采用4位存储,对于最大差值等于零的ZL4地块的所有差值则不储存。这种划分的好处为,所得到的种类数量不是很多,可以减少区分不同种类读取的复杂度,同时,按照16bit(2字节),8bit(1字节),4bit(0.5个字节)和不存储四种方式存储和读取差值数据,能较好的对齐数据文件的字节长度,又能最大限度的节约每一种类型的存储空间。
种类值有多种定义方式,例如按照该地块的最大差值划分:最大差值分为大于255、大于15并且小于或等于255、大于4并且小于或等于15、大于0并且小于等于4、等于零的五个种类,分别定义差值存储的种类值为ZZL1,ZZL2,ZZL3,ZZL4,ZZL5;所述五个种类的差值的存储方式为:将种类值为ZZL1的地块的所有差值采用16bit存储、将种类值为ZZL2的地块的所有差值采用8bit存储、将种类值为ZZL3的地块的所有差值采用4bit存储,对于种类值为ZZL4的地块的所有差值采用2bit存储,对于种类值为ZZL5的地块的所有差值则不储存。这样可以进一步节约一定空间,但是由于最大差值小于4米的地块不多,这种划分实际产生的节省存储空间的效果不大。
实施例四:
本实施例是上述实施例的改进,是上述实施例关于索引文件存储方式的细化。对于每个压缩高程文件对应的建立一个两级索引文件,专门存储两级索引信息。该索引文件的文件名与压缩高程文件的文件名前半部分相同,仅后缀名不同,这样可以用实施例一中查找压缩高程文件的方式,方便的计算出某个位置对应的索引信息在哪个索引文件中。
作为一种优化的方式,还可以将全部高程数据各个部分的所有两级索引信息存储在同一个专门的总索引文件中,这时需要根据索引的结构去定义索引的查找算法;
作为另外一种优化的方式,针对每个部分的相应的两级索引可以和处理后的高程数据也可以存储在同一压缩高程文件中,索引信息既可以存储在压缩高程文件的开始部分,亦可以附加在压缩高程文件的末尾。通常情况下,存储在高程数据之前是更为优选的存储办法,这种情况下,需要在生成压缩后的高程数据存储时,预先在每一个压缩高程文件前部分预留索引信息的存储空间。
最后应说明的是,以上仅用以说明本发明的技术方案而非限制,尽管参照较佳布置方案对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案(比如地区、区域和地块的划分方式,寻址空间的使用方式,索引的级别,最大差值种类的不同划分方式,多种差值存储时的字节长度等)进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。本发明所述的方法可编制为应用于计算机***的程序,并运行于本发明所述的计算机网络***中。
Claims (6)
1.一种地形高程数据存储的方法,所述方法的步骤如下:
高程数据划分的步骤:用于将原始高程数据按不同地区划分为一个或多个部分,将每个部分存储为一个高程文件;
数据压缩处理的步骤:用于将每个高程文件中所包括的地区按纬度和经度划分为若干个更小的纵向排列和横向排列的地块,为每个高程文件对应生成一个压缩高程文件,生成压缩高程文件过程中对每一个地块的原始高程数据作如下处理:
基准值获取的步骤:用于比较和计算该地块的各点的原始高程数据,取最小值作为基准值;
种类划分的步骤:用于将该地块原始高程数据中各点的高程值与基准值比较,计算得到各点的高程值与基准值之间的差值,将该地块内所有差值的最大值作为本地块的最大差值,根据最大差值为本地块确定一个差值存储的种类值;
数据块存储的步骤:用于将该地块高程数据按如下格式存储到压缩高程文件中:
种类值,占用一个字节;基准值,占用两个字节;差值,差值是根据种类值的不同按不同的数据长度存储,差值所占用的字节数根据差值存储的种类值的大小变化,同一个地块的每个差值占用同样的字节数存储;
索引建立的步骤:对每个压缩高程文件建立两级索引,所述两级索引的第一级索引为指针,所述指针指向一纵列或一横列地块的第二级索引的起始地址,所述两级索引的第二级索引为该地块的高程数据在所述压缩高程文件中的存储地址;
索引优化的步骤:用于将高程值全部为无效值的地块的高程数据存储地址修正为-1,将一纵列或一横列中全部地块的高程值都为无效值的一级索引指针修正为-1;
所述的高程文件通过将经过地图投影的地区高程数据按照经度方向或者纬度方向划分为若干份来得到,其中每一份对应于一个高程文件;
其特征在于,
所述的最大差值分为大于255、大于15并且小于或等于255、大于零并且小于或等于15、等于零的四个种类,分别定义差值存储的种类值为ZL1,ZL2,ZL3,ZL4;所述四个种类的差值的存储方式为:将种类值为ZL1的地块的所有差值采用16bit存储、将种类值为ZL2的地块的所有差值采用8bit存储、将种类值为ZL3的地块的所有差值采用4bit存储,对于种类值为ZL4的地块的所有差值则不储存。
2.根据权利要求1所述的方法,其特征在于,所述的划分按照2n数量确定。
3.根据权利要求1所述的方法,其特征在于,所述的两级索引和处理后的高程数据存储在带索引的压缩高程文件中。
4.根据权利要求1所述的方法,其特征在于,所述的两级索引和处理后的高程数据分别存储在索引文件和压缩高程文件中。
5.根据权利要求4所述的方法,其特征在于,所述的全部高程数据各个部分的两级索引存储在一个总索引文件中。
6.一种读取使用权利要求1所述方法存储的高程数据的地形高程数据读取的方法,其特征在于,所述方法的步骤如下:
提取压缩高程文件的步骤:用于根据要查找高程数据的位置找到对应的压缩高程文件;
查找一级索引的步骤:用于读取位置所在的一纵列或一横列地块的一级索引,判断该一级索引的值是否为“-1”,如果“是”则将该纵列或横列的所有地块的所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
查找二级索引的步骤:用于读取位置所在地块的二级索引,判断该二级索引是否为“-1”,如果“是”则将该地块所有高程数据的值置为默认值,并进入“输出数据的步骤”,如果“否”则进入下一步骤;
查找本地块高程数据存储位置的步骤:用于根据二级索引的地址,找到本地块高程数据在压缩高程文件中所在的存储位置;
读取种类的步骤:用于读取本地块高程数据种类值,获得差值的存储方式;
读取基准值的步骤:用于读取基准值;
读取差值的步骤:用于根据差值的存储方式读取差值数据;
得到原始高程数据的步骤:用于将基准值与差值相加,得到原始高程数据;
输出数据的步骤:用于将高程数据输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720631.6A CN103678657B (zh) | 2013-12-24 | 2013-12-24 | 一种地形高程数据存储和读取的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720631.6A CN103678657B (zh) | 2013-12-24 | 2013-12-24 | 一种地形高程数据存储和读取的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678657A CN103678657A (zh) | 2014-03-26 |
CN103678657B true CN103678657B (zh) | 2017-02-15 |
Family
ID=50316201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310720631.6A Active CN103678657B (zh) | 2013-12-24 | 2013-12-24 | 一种地形高程数据存储和读取的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678657B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557573B (zh) * | 2016-11-24 | 2019-11-19 | 中铁第五勘察设计院集团有限公司 | 基于目录索引结构的不规则三角网数据存储格式定义和数据处理方法 |
CN108829703A (zh) * | 2018-04-28 | 2018-11-16 | 尚谷科技(天津)有限公司 | 一种基于多源树图结构的遥感海拔数据的处理方法 |
CN109977121B (zh) * | 2019-03-27 | 2022-10-14 | 上海鸣鸾互联网科技有限公司 | 一种大数据快速存储*** |
CN110309166B (zh) * | 2019-07-10 | 2021-10-01 | 中国电子科技集团公司第二十八研究所 | 一种可溯源的地理高程数据补齐方法 |
CN110704385A (zh) * | 2019-10-25 | 2020-01-17 | 南京录信软件技术有限公司 | 一种基于Lucene的Payloads压缩方法 |
CN111105492B (zh) * | 2019-12-18 | 2020-11-17 | 四川大学 | 一种地形平滑过程中瓦片高程数据快速调度方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103600A (zh) * | 2009-12-16 | 2011-06-22 | ***通信集团公司 | 地图建立方法及地图*** |
CN102289845A (zh) * | 2011-08-30 | 2011-12-21 | 广东省电力设计研究院 | 一种三维模型绘制方法以及装置 |
CN102364522A (zh) * | 2011-10-24 | 2012-02-29 | 中国地质大学(武汉) | 一种基于全球划分的大规模气象体数据绘制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100662507B1 (ko) * | 2004-11-26 | 2006-12-28 | 한국전자통신연구원 | 다목적 지리정보 데이터 저장 방법 |
US8650220B2 (en) * | 2012-06-05 | 2014-02-11 | Google Inc. | System and method for storing and retrieving geospatial data |
-
2013
- 2013-12-24 CN CN201310720631.6A patent/CN103678657B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103600A (zh) * | 2009-12-16 | 2011-06-22 | ***通信集团公司 | 地图建立方法及地图*** |
CN102289845A (zh) * | 2011-08-30 | 2011-12-21 | 广东省电力设计研究院 | 一种三维模型绘制方法以及装置 |
CN102364522A (zh) * | 2011-10-24 | 2012-02-29 | 中国地质大学(武汉) | 一种基于全球划分的大规模气象体数据绘制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103678657A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678657B (zh) | 一种地形高程数据存储和读取的方法 | |
CN104765876B (zh) | 海量gnss小文件云存储方法 | |
CN111782742B (zh) | 一种面向大规模地理空间数据的存储和检索方法及其*** | |
CN104376053B (zh) | 一种基于海量气象数据的存储与检索方法 | |
CN109635068A (zh) | 云计算环境下的海量遥感数据高效组织及快速检索方法 | |
US9877031B2 (en) | System and method for multi-resolution raster data processing | |
CN108804602A (zh) | 一种基于spark的分布式空间数据存储计算方法 | |
CN113946700A (zh) | 一种时空索引构建方法、装置、计算机设备及存储介质 | |
Xiong et al. | Drainage basin object-based method for regional-scale landform classification: A case study of loess area in China | |
CN102855322A (zh) | 一种基于空间探索技术的地图数据存储方法 | |
CN105550977A (zh) | 一种并行方式栅格影像切片方法 | |
CN104142946A (zh) | 一种同款业务对象聚合、搜索的方法和*** | |
CN104539750A (zh) | 一种ip定位方法和装置 | |
CN105913347A (zh) | 一种面向住房信息采集的房屋编码方法 | |
CN103678658B (zh) | 一种地形高程数据存储和读取的装置 | |
CN108009265A (zh) | 一种云计算环境下的空间数据索引方法 | |
CN111046005B (zh) | 一种城市三维实景数据的网格化编码方法 | |
CN105930381A (zh) | 基于混合数据库架构的全球Argo数据存储与更新方法 | |
CN104778212B (zh) | 地图数据生成方法和装置、地图数据读取方法和装置 | |
CN104156475B (zh) | 地理信息读取方法及装置 | |
CN103886045B (zh) | 一种包含局部有效栅格数据的存取方法及装置 | |
CN115544789A (zh) | 基于数字高程模型和坡度成本距离的河谷平原提取方法 | |
CN109947884A (zh) | 一种全球ICESat/GLAS点云的高效组织查询方法 | |
CN108597013B (zh) | 一种特定区域气象水文资料抽点填图方法 | |
CN104809217B (zh) | 一种gis栅格数据云存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |