一种基于多源树图结构的遥感海拔数据的处理方法与流程

文档序号:15981883发布日期:2018-11-17 00:25阅读:260来源:国知局

本发明涉及本发明涉及一种遥感海拔数据处理和读取的方法,是一种计算机数据压缩的方法,是一种基于多源树图结构的遥感海拔数据的处理方法。

背景技术

地理信息系统简称。关于国内外有许多定义,不同的应用领域,不同的专业,对它的理解是不一样的,目前还没有一个完全统一的被普遍接受的定义。有人认为是管理和分析空间数据的计算机系统,在计算机软硬件支持下,对空间数据按地理坐标或空间位置进行各种处理,完成数据输入、处理、处理、管理、分析、输出等功能,对数据实行有效管理,研究各种空间实体及其相互关系,通过对多因素信息的综合分析,可以快速地获取满足应用需要的信息,并能以图形、数据、文字等形式表示处理结果。有人认为是一种特定而又十分重要的空间信息系统,它以采集、处理、管理、分析和描述整个或部分地球包括大气层在内空间和地理分布有关的数据的空间信息系统。有人认为就是数字制图技术和数据库技术的结合。有人则按研究专业领域不同给予不同的名称,如地籍信息系统、土地信息系统、环保信息系统、管网信息系统和资源信息系统等。

数字地形模拟是针对地球表面实际地形地貌的一种数字建模过程,这种建模的结果通常就是一个数字高程模型。等高线是科学计算可视化的重要研究内容,也是地理信息系统研究空间数据的有力工具,在地质工程领域中有着广泛的应用。它能较为科学的反映地面高程、山体、坡度、坡形、山脉走向等基本的地貌形态及其变换。从生成等高线一直是计算机辅助制图的基本任务之一,也是数据可视化的重要表现之一。

地理信息系统的空间数据结构是指空间数据的编排方式和组织关系。空间数据编码是空间数据结构的实现,目的是将图形数据、影像数据、统计数据等资料,按一定的数据结构转换为适用于计算机处理和处理的形式。不同的数据源,其数据结构相差很大,同一数据源,可以用许多方式来组织数据,按不同的数据结构去处理,得到的内容也截然不同。计算机处理和处理数据的效率,在很大程度上取决于数据组织方式的优劣。数据结构在中对于数据采集、处理、查询、检索和应用分析等操作方式有着重要的影响。



技术实现要素:

为解决现有技术的问题,本发明提出一种遥感海拔数据处理和读取的方法。所述的方法可以极大的压缩海拔数据的处理空间,并且可以实现高速读取。

本发明的目的是这样实现的:一种遥感海拔数据处理的方法,所述方法如下:

海拔数据切割:用于将原始海拔数据按不同地区切割为一个或多个部分,将每个部分处理为一个海拔文件;

数据压缩处理:用于将每个海拔文件中所包括的地区按纬度和经度切割为若干个更小的纵向排列和横向排列的地块,基于离散余弦变换或小波变换生成一个压缩海拔文件,生成压缩海拔文件过程中对每一个地块的原始海拔数据作如下处理:

建立二叉树:根据预处理时生成的二叉树及视角位置建立伞形二叉树,其中,叶子节点为得到的的细节层次,在预处理阶段给遥感海拔层次建立标识,;

水平值获取:用于比较和计算该地块的各点的原始海拔数据,取最小值作为水平值;

数据排序:获取第一源树图结构与第二源树图结构;将多源树图转化为由所述第一源树图结构、所述第二目标类型及所述第一源树图结构与所述第二源树图结构之间的路径构成的二分树图;将所述二分树图转化为对应的张量x;获取在所述张量x中进行随机游走时的可达概率平稳分布;根据所述高斯概率平稳分布对所述第一源树图结构中的对象、所述第二源树图结构中的对象及所述第一源树图结构与所述第二源树图结构之间的路径进行排序;

聚簇切割:对二叉树叶子节点进行聚簇切割和背面删减,并渲染所有剩余的叶子节点,将该地块内所有容错值的最大值作为本地块的最大容错值,根据最大容错值为本地块确定一个容错值处理的聚簇值;

数据块处理:用于将该地块海拔数据按zip格式处理到压缩海拔文件中,这些该地块海拔数据处理在磁盘上或数据库中,当场景切换时通过频繁的内存换页操作保证能够获取必要的数据和纹理;

标识建立:对每个压缩海拔文件建立两级标识,采用网格分块法来初始化采样点,逐个读入采样点和约束点,判断数据点所落在的格网单元;

标识优化:用于将海拔值全部为无效值的地块的海拔数据处理地址修正为-1,将一纵列或一横列中全部地块的海拔值都为无效值的一级标识指针修正为-1进一步的,所述的海拔文件通过将经过地图投影的地区海拔数据按照经度方向或者纬度方向切割为若干份来得到,其中每一份对应于一个海拔文件。进一步的,所述的最大容错值分为大于255、大于15并且小于或等于255、大于零并且小于或等于15、等于零的四个聚簇,分别定义容错值处理的聚簇值为clus1,clus2,clus3,clus4;所述四个聚簇的容错值的处理方式为:将聚簇值为clus1的地块的所有容错值采用16bit处理、将聚簇值为clus2的地块的所有容错值采用8bit处理、将聚簇值为clus3的地块的所有容错值采用4bit处理,对于聚簇值为clus4的地块的所有容错值则不储存。

进一步的,所述的两级标识和处理后的海拔数据处理在带标识的压缩海拔文件中。

进一步的,所述的两级标识和处理后的海拔数据分别处理在标识文件和压缩海拔文件中。

进一步的,所述的全部海拔数据各个部分的两级标识处理在一个总标识文件中。

一种读取使用上述方法处理的海拔数据的遥感海拔数据读取的方法,所述方法如下:

依次访问压缩海拔文件:用于根据要查找海拔数据的位置找到对应的压缩海拔文件;

查找一级标识:用于读取位置所在的一纵列或一横列地块的一级标识,判断该一级标识的值是否为“-1”,如果“是”则将该纵列或横列的所有地块的所有海拔数据的值置为缺省值,并进入“输出数据”,如果“否”则进入下一步骤;

查找二级标识:用于读取位置所在地块的二级标识,判断该二级标识是否为“-1”,如果“是”则将该地块所有海拔数据的值置为缺省值,并进入“输出数据”,如果“否”则进入下一步骤;

查找本地块海拔数据处理位置:用于根据二级标识的地址,找到本地块海拔数据在压缩海拔文件中所在的处理位置;

读取聚簇:用于读取本地块海拔数据聚簇值,获得容错值的处理方式;

读取水平值:用于读取水平值;

读取容错值:用于根据容错值的处理方式读取容错值数据;

得到原始海拔数据:用于将水平值与容错值相加,得到原始海拔数据;

输出数据:用于将恢复出的海拔数据输出,此处的海拔数据可以是计算后恢复出的原始海拔数据,也可以是根据标识为-1的信息直接填充的无效值。

本发明产生的有益效果是:本发明通过构建两级标识的方式,排除大量重复数据的处理和读取,大大减少读取数据量,加快了读取数据的速度。分级、分块的文件处理方式也加快了读取的速度。海拔数据的处理采取海拔差的数据处理方式,使数据量减少30%—50%,处理数据量的减少十分明显。

附图说明

下面结合附图和实施例对本发明作进一步说明。

图1是发明实施例一所述海拔数据处理方法的流程图。

具体实施方式

实施例一:

本实施例是一种遥感海拔数据处理和依次访问的方法。对于地球海拔而言,存在两个明显的特点,一个是有大量海拔为无效值的地区,这是因为地球海拔数据通常是通过卫星针对陆地区域进行采集,地球上很多地方无法采到有效数据,比如在高纬度地区,北纬83度和南纬83度以上通常都没有有效数据;对于海洋部分、内陆的大湖等部分也没有有效数据,通常认为这些地方的值是无效值,对于海洋部分和内陆大湖的海拔一般会有另外的手段提供。首先用定义标识的方式排除大量海拔为无效值的数据。对于第二个特点采取的方式是:取得一个区块中的最小高度值作为基础,然后计算出该区块中其他点相对于最小高度值的容错值,同时根据容错值的大小选择不同的处理空间,因容错值较小,可以较多的节约处理空间,提高存取速度。在此基础上,还可对于全球的海拔数据以不同级别的方式处理,不同级别代表了不同的数据详细等级,例如说每30米一个海拔采样点,或者每60米甚至每200米一个采样点。对于每一级的数据,分割为多个海拔文件按照上述方案处理。本实施例所述方法的具体步骤如下:

本实施例所述方法包括两个方面:处理海拔数据的方法和读取海拔数据的方法。

处理的方法,流程如图1所示:

海拔数据切割:用于将原始海拔数据按不同地区切割为一个或多个部分,将每个部分处理为一个海拔文件。处理全球的海拔数据,首先遇到的问题是如何切割区域进行数据处理。为提高检索速度,一般不会将所有数据都处理在一个文件中,科学而适当的切割区域,会取得事半功倍的效果。本实施例在文件切割着重考虑文件大小应当比较平均的问题。根据球形物体表面面积的特点,同一纬度区间的地球表面积在接近两极时会越来越小,而接近赤道时同一纬度区间的地球表面积会越来越大;而沿经线方向等分得到的表面积是一致的。因此,将按经度方向排列的区块的数据放在一个海拔文件中,称为经度文件,各个经度的经度文件中的所处理的地表面积大体相同,不同经度的经度文件大小差别不大。但如果将同纬度等分的区块放在一个纬度文件中,接近赤道的纬度文件中所处理的地表面积就会十分巨大,而在高纬度区域所处理的地表面积就会很少,不同纬度的纬度文件中的所处理的地表面积差距较大。因此,本步骤按照经度切割处理海拔数据的海拔文件,其目的在于使文件大小差距不太大,有利于提高检索和依次访问速度。

本步骤所述的海拔文件是处理一个地区海拔数据的文件。这里所述的地区指的是经过地图投影的地球表面按经度方向或者纬度方向分割为若干个长条状的地区,投影方式采用的是等角投影。本实施例将沿经度方向排列的区块放在一个海拔文件,即在一个海拔文件中处理两条经线之间区块的海拔数据,并称两条经线之间区块为“地区”,将处理两条经线之间区块海拔数据的海拔文件称为:经度文件。经度文件的数量按2n确定,如:16、32、64等。即将全球按经度方向切割为16或者32或者64等分。需要说明的是由于现代海拔的测量,主要依据卫星或航拍的3d数字化照片结合实测形成的,数字化照片的清晰度是根据像素确定的,而像素量通常是按照计算机内的寻址位宽2n确定的,因此,可以按照计算机寻址位宽的大小确定文件的数量,而不是按照传统分割球形体的经纬度的度、分、秒切割区域文件。在实践中证明这样的切割,效率更高,对计算机运算和程序编制更加方便,可以更加便捷的找到所需要读取地块的数据处理在哪个文件中。当然,也可以按照度分秒的单位切割经度文件的个数,但需要比较复杂的换算,占用更多的运算资源,而且意义不大。

数据压缩处理:用于将每个海拔文件中所包括的地区按纬度和经度切割为若干个更小的纵向排列和横向排列的地块,为每个海拔文件对应生成一个压缩海拔文件,生成压缩海拔文件过程中对每一个地块的原始海拔数据作压缩处理。前面所述的建立经度文件只是将全球分区的第一步,还要把长条形的地区再分为区域,再将各个区域再细分为地块。本步骤是将长条状的地区分为“区域”。如果是以经线切割的长条形的经度地区,就要用纬线将长条状的经度地区切割割为区域。如果用纬线切割的长条状的纬度地区,就要用经线划把长条状的纬度地区分割为区域。再将各个区域纵横切割为“地块”,海拔数据按地块处理为“数据块”。区域和数据块的数量同样可以按照2n数量确定,例如可以将一个地区切割为32个或者64个或者128个区域,再将区域切割为32个或者64个或者128个地块。数据块纵横排列形成数据块矩阵。

水平值获取:用于计算地块的原始海拔数据,取最小值作为水平值。如果直接处理所有的海拔数据,则数据值可能会很大,占用较多的字节。本实施例则采用容错值储存的方式:首先在一个地块的原始海拔数据中找到最小值,以这个最小值为水平值,将地块的原始海拔数据值与水平值比较,获得容错值。或者说,所有原始海拔数据值是水平值与容错值之和。水平值通常情况下是一个数据块中的最小值,也就是说容错值都是正值。处理容错值的好处在于,根据对海拔数据的研究发现,一个区块中海拔数据的容错值多数都比较小,较大的容错值只占很小一部分。容错值小则占用的字节较少,这样只要处理一个水平值,就可以将整个数据块中所有数据的值的处理需求减小许多,有效的减少了处理所占用的空间。

聚簇切割:用于将原始海拔数据中的海拔值与水平值比较,获得海拔值与水平值之间容错值,将该地块内所有容错值的最大值作为本地块的最大容错值,根据最大容错值为本地块确定一个容错值处理的聚簇值。为提高处理速度减少处理占用的空间,仅仅采用容错值处理还不够,本实施例还采用了分类处理的方式:将容错值按一个地块内所有容错值的最大容错值的大小分为几类,每一类的地块,该地块的所有容错值按照相同的字节长度处理;最大容错值不同的地块以不同的字节长度处理该地块的容错值,以此节约处理空间。

数据块处理:用于将数据块按zip格式处理到压缩海拔文件中:

聚簇值,占用一个字节;水平值,占用两个字节;容错值,容错值是根据聚簇值的不同按不同的数据长度处理,容错值所占用的字节数根据容错值处理的聚簇值的大小变化,同一个地块的每个容错值占用同样的字节数处理;容错值按不同的字节长度处理的好处在于可以节约处理空间。因为随着地球表面遥感的变化,高度的起伏程度并不相同,例如北美地区大面积的平原和我国中西部地区的丘陵地带,前者的起伏程度很小,容错值的取值范围可能在2、3米之内,而后者的起伏相对较大,容错值的取值范围可能超过了几十米。如果不分类而采用每个容错值都用相同的字节长度来处理,为保证能处理下容错值数值的上限,那就意味着需要选取数值最大的容错值的字节长度作为处理字节长度,对于类似于前者的平原地带来说用这么长的字节来处理,则大部分的处理位为零,浪费了大量的处理空间。

标识建立:对每个压缩海拔文件建立两级标识,所述两级标识的第一级标识为指针,所述指针指向一纵列或一横列地块的第二级标识的起始地址,所述两级标识的第二级标识为该地块的海拔数据在本压缩海拔文件中的处理地址;为快速的从压缩海拔文件中找到数据块,本步骤定义了对数据块的两级标识。由于本实施例所建立的压缩海拔文件是以经线切割的区域,相当于是一个纵列,所以第一级标识的指针相当于是指向一个横列地块的二级标识,而第二级标识则是压缩后的数据块在压缩海拔文件中的地址,也就是相对于文件头的偏移量。

标识优化:用于将海拔值全部为无效值的地块的海拔数据处理地址修正为-1,将一横列中全部地块的海拔值都为无效值的一级标识指针修正为-1;对于全球的海拔数据,最突出的特点就是存在大量海拔为无效值的海洋地区,在处理海拔数据时排除这些无效值的数据是有效减少数据量处理的途径之一。为此本步骤提供了一个十分有效的方式:将全部海拔数据都是无效值的地块用-1作标识,不需要用真正的数据块来处理,也就是说用来处理单一一个海洋地块的海拔数据只用一个标识(其值为-1)就可以了。当区域内的一横列上的所有地块的二级标识都是-1的时候,将这一横列的一级标识指针定义为-1,不再记录这一横列里的所有地块的标识,同时也不需要真正的海拔数据块。这样做的好处在于可以大大降低海拔数据处理的容量,同时也降低了标识数据的容量,而且随着海洋地块的相连数量的增大,降低的效果更加明显;同时还加快读出海拔数据的速度。因为如果是要读出的海拔数据位于海洋,只读取标识信息将可以显示了,不需要再进一步检索和读取数据了,直接输出海拔为无效值的数据就可以了。

最后,对于每个压缩海拔文件对应的可以建立一个两级标识“总标识文件”,专门处理两级标识信息。或者将标识与对应的压缩海拔数据共同处理在同一个“带有标识的压缩海拔文件”。还可以将压缩海拔文件各自的标识建立单独的标识文件,与各自的压缩海拔文件对应。

海拔数据读取的方法:

查找一级标识:用于读取位置所在的一纵列或一横列地块的一级标识,判断该一级标识的值是否为“-1”,如果“是”则将该该纵列或横列的所有地块的所有海拔数据的值置为缺省值,并进入“输出数据”,如果“否”则进入下一步骤;

查找二级标识:用于读取位置所在地块的二级标识,判断该二级标识是否为“-1”,如果“是”则将该地块所有海拔数据的值置为缺省值,并进入“输出数据”,如果“否”则进入下一步骤;

以上两个步骤快速的读取了海洋地区的海拔数据,快速进入陆地海拔数据的依次访问,以此简化读取数据的过程,提高读取数据的速度。此处的缺省值,通常设置为一个稍低于全球有效陆地海拔的值,例如-200米~-500米。本实施例缺省值设置为-250米,这个值实际上也是海拔值为无效值时该位置标记的无效海拔,这样海拔为无效值的海洋地区的陆地海拔就会在水面之下,不会对显示结果造成影响。

查找本地块海拔数据处理位置:用于根据二级标识的地址,找到本地块海拔数据在本压缩海拔文件中所在的处理位置;

读取聚簇:用于读取本地块海拔数据聚簇值,获得容错值的处理方式;

读取水平值:用于读取水平值;

读取容错值:用于根据容错值的处理方式读取容错值数据。如果容错值的处理方式为:按照该地块的最大容错值切割:最大容错值分为大于255、大于15并且小于或等于255、大于零并且小于或等于15、等于零的四个聚簇,分别定义容错值处理的聚簇值为clus1,clus2,clus3,clus4;所述四个聚簇的容错值的处理方式为:将聚簇值为clus1的地块的所有容错值采用16bit处理、将聚簇值为clus2的地块的所有容错值采用8bit处理、将聚簇值为clus3的地块的所有容错值采用4bit处理,对于聚簇值为clus4的地块的所有容错值则不储存。那么读取时对应的读取方式将根据元时写入方式将各海拔容错值恢复出来,即为:clus1每16个bit作为一个容错值读取,clus2每8个bit作为一个容错值读取,clus3每4个bit作为一个容错值读取,clus4将所有的容错值置为0;

得到原始海拔数据:用于将水平值与容错值相加,得到原始海拔数据;

输出数据:用于将恢复出的海拔数据输出。实际上,当一级标识为-1时,该步骤直接输出本横列地块的所有海拔数据均为无效值的-250米,当二级标识为-1时,本步骤直接输出当前地块的所有海拔数据均为无效值的-250米。只有一级标识和二级标识都不是-1时,才真正根据水平值和容错值计算每个点的实际海拔(即原始海拔)并输出。由上可知,此处的海拔数据可以是计算后恢复出的原始海拔数据,也可以是根据标识为-1的信息直接填充的无效值。。

下面以两个具体例子说明本实施例使用容错值处理的优势:

举例1:

一个经纬度在55.77473,101.584557附近地块的原始海拔数据矩阵,海拔都在3000米左右,如果处理原始海拔数据,每一个数据都必须用16bit数据处理。

通过求容错值,得到的容错值数据矩阵,其水平值为3330。在矩阵中可以看出每一个节点的数据都不超过255,所以,该数据可以通过处理一个基本数据3330,和一系列的8bit海拔数据来完成处理,数据处理量为原始数据的50%左右。

举例2:

一个地块的原始海拔数据矩阵,其中的多数海拔均大于16m,最小海拔值为23m。

经容错值计算的海拔数据矩阵,其中数据均小于15,这个数据块可以用4位数据处理。

因为地表有大量的平原,或者高原,所以,对于一个局部区域,落差低于255米地区很多,所以,通过这个方式可以把数据处理容量减少一半以上。

实施例二:

本实施例是实施例一的改进,是实施例一关于海拔文件、区域和数据块的切割的细化。本实施例所述的海拔文件是按照经度切割的经度文件,经度文件为32个,一个经度文件中设置1024个横向的区域,一个区域内分割为32个数据块。在第十个文件中,读到相应数据块的方式与此类似。这样就可以通过一个简单的算法直接找到所需要读取的位置在那个海拔文件中处理,是第几个横向的区域,是该区域的第几个地块。

实施例三:

本实施例是上述实施例的改进,是上述实施例关于容错值聚簇切割的细化。本实施例所述的本地块最大容错值分为大于255、大于15小于或等于255、大于零小于或等于15、等于零的四个聚簇,分别定义聚簇值clus1,clus2,clus3,clus4,所述四个聚簇的容错值的寻址空间处理方式为:将最大容错值大于255的clus1地块的所有容错值采用16位处理、将最大容错值大于15小于或等于255的clus2地块的所有容错值采用8位处理、将最大容错值大于零小于或等于15的clus3地块的所有容错值采用4位处理,对于最大容错值等于零的clus4地块的所有容错值则不储存。这种切割的好处为,所得到的聚簇数量不是很多,可以减少区分不同聚簇读取的复杂度,同时,按照16bit(2字节),8bit(1字节),4bit(0.5个字节)和不处理四种方式处理和读取容错值数据,能较好的对齐数据文件的字节长度,又能最大限度的节约每一聚簇型的处理空间。

聚簇值有多种定义方式,例如按照该地块的最大容错值切割:最大容错值分为大于255、大于15并且小于或等于255、大于4并且小于或等于15、大于0并且小于等于4、等于零的五个聚簇,分别定义容错值处理的聚簇值为zclus1,zclus2,zclus3,zclus4,zclus5;所述五个聚簇的容错值的处理方式为:将聚簇值为zclus1的地块的所有容错值采用16bit处理、将聚簇值为zclus2的地块的所有容错值采用8bit处理、将聚簇值为zclus3的地块的所有容错值采用4bit处理,对于聚簇值为zclus4的地块的所有容错值采用2bit处理,对于聚簇值为zclus5的地块的所有容错值则不储存。这样可以进一步节约一定空间,但是由于最大容错值小于4米的地块不多,这种切割实际产生的节省处理空间的效果不大。

最后应说明的是,以上仅用以说明本发明的技术方案而非限制,尽管参照较佳布置方案对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案(比如地区、区域和地块的切割方式,寻址空间的使用方式,标识的级别,最大容错值聚簇的不同切割方式,多种容错值处理时的字节长度等)进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。本发明所述的方法可编制为应用于计算机系统的程序,并运行于本发明所述的计算机树图系统中。

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