本发明属于地理信息系统技术领域,特别涉及一种海量地理信息瓦片数据的高效存储方法。
背景技术:
在地理信息系统(简称gis)行业中,任何软件或产品不可避免的都要使用到地理信息数据,用于展示地图地势,这其中的数据就包括卫星影像数据、数字高程数据、矢量数据、其他的航拍或测量数据,这些数据有一个共同点就是文件非常大,通常可以达到tb级别,如果将如此大的文件一次性的加入到gis中完全是不可能的,所以传统的gis手段就是将这些数据进行分级分片处理,多数采用的是四叉树的分片机制,这样一种类型的数据在第0级存在20x21=2张瓦片数据(平顶金字塔),第1级便存在21x22=8张瓦片数据,第2级存在22*23=32,……,第20级存在220x221=1048576x2097152约等于2.2x1012数量级别的瓦片,单张瓦片数据的大小很小,通常在几十到几百kb之间,但如此海量的瓦片数据在存储或者拷贝时就会占用大量的时间,另外我们知道文件io的效率相对来说是比较低的,而gis必须要加载大量的瓦片数据,大量瓦片数据的io便会从整体上拉低gis的数据加载效率。
技术实现要素:
本发明的目的在于提供一种海量地理信息瓦片数据的高效存储方法,以解决上述问题。
为实现上述目的,本发明采用以下技术方案:
一种海量地理信息瓦片数据的高效存储方法,包括以下步骤:
步骤1,对卫星影像数据源文件和数字高程数据源文件进行切片处理,切片后形成瓦片数据库,并最终对瓦片数据库打包为数据文件;
步骤2,当地理信息系统gis需要获取数据时,通过数据解析插件在步骤1中生成的数据文件里找到对应的数据文件,最终获取到瓦片数据加载到场景中;
打包过程为:
对数据进行分级处理,从第0级到第n级,每级瓦片数据的个数为2n*2n+1其中n=0,1,2·n;按级别将瓦片数据按一个数量m进行分组,若当前级别的瓦片数据个数大于m,则每m个数据构成一个数据文件,不足m个数据的形成一个数据文件;文件命名为0_0_0.demx高程文件或者0_0_0.texx影像文件;文件的命名规则如下:
瓦片级别_起始行号_起始列号.文件格式。
进一步的,该切片过程使用尖顶或者平顶金字塔结构进行切片。
进一步的,数据文件的存储结构为索引块+数据块构成,索引块中保存了m块相同大小的结构体,其中数据为瓦片起始位置和瓦片大小,用于获取数据块中存储的瓦片数据。
与现有技术相比,本发明有以下技术效果:
本发明将很多的文件io缩短为一个文件的io,提升了瓦片的读取效率,提高了gis的效率。
本发明的方法大大减少了瓦片文件的数量,使瓦片数据的存储、拷贝更加便捷;
附图说明
图1为本发明的流程图。
具体实施方式
以下结合附图对本发明进一步说明:
一种海量地理信息瓦片数据的高效存储方法,包括以下步骤:
步骤1,对卫星影像数据源文件和数字高程数据源文件进行切片处理,切片后形成瓦片数据库,并最终对瓦片数据库打包为数据文件;
步骤2,当地理信息系统gis需要获取数据时,通过数据解析插件在步骤1中生成的数据文件里找到对应的数据文件,最终获取到瓦片数据加载到场景中;
打包过程为:
对数据进行分级处理,从第0级到第n级,每级瓦片数据的个数为2n*2n+1其中n=0,1,2·n;按级别将瓦片数据按一个数量m进行分组,若当前级别的瓦片数据个数大于m,则每m个数据构成一个数据文件,不足m个数据的形成一个数据文件;文件命名为0_0_0.demx高程文件或者0_0_0.texx影像文件;文件的命名规则如下:
瓦片级别_起始行号_起始列号.文件格式。
该切片过程使用尖顶或者平顶金字塔结构进行切片。
数据文件的存储结构为索引块+数据块构成,索引块中保存了m块相同大小的结构体,其中数据为瓦片起始位置和瓦片大小,用于获取数据块中存储的瓦片数据。
实施例1:
1)源数据切片处理,将地理信息系统中使用的卫星影像数据及数字高程文件进行切片处理,并最终打包为数据文件;
a)该切片过程分为分级和分片过程与传统gis行业的数据切片方式相同,使用尖顶或者平顶金字塔结构进行切片;
b)打包过程是该发明的重点,即将按级别将瓦片数据按10000或者更多进行分组,如第0级只有1张或2张瓦片,那么第0级便只有一个数据文件,该文件中保存1张或2张瓦片,文件命名为0_0_0.demx(高程文件)或者0_0_0.texx(影像文件)。
文件的命名规则如下:
瓦片级别_起始行号_起始列号.文件格式
同理第8级的瓦片数据为256行,512列,共65536个文件,需要制作7个数据文件,文件名分别为8_0_0.texx、8_19_273.texx,……,以此计算下去。
c)数据文件的存储结构为索引块+数据块构成,索引块中保存了10000块相同大小的结构体,其中数据为瓦片起始位置和瓦片大小,用于获取数据块中存储的瓦片数据。
2)通过上一步生成了数据文件,当gis需要获取数据时,通过数据解析插件找到对应的数据文件,最终获取到瓦片数据加载到场景中。