一种基于聚合文件的瓦片地图存储方法

文档序号:6521549阅读:316来源:国知局
一种基于聚合文件的瓦片地图存储方法
【专利摘要】一种基于聚合文件的瓦片地图存储方法,(1)确定最底层地图比例尺,基于该比例尺将待存储地图进行分层;(2)从第0层以及中间层中至少选取一层作为分析对象;分别计算选取的每层地图中的瓦片图总数,并根据最底层比例尺确定所选择层的比例尺;(3)对所选择的每层地图中的瓦片图按顺序进行分组;每组瓦片图生成一个聚合文件;(4)为每层地图建立一个文件夹,该文件夹中存储该层所有聚合文件,文件夹的命名能够表示所在的金字塔层数;(5)将步骤(2)中选择的层数、步骤(4)中建立的文件夹名称以及每层对应的分辨率、每层地图的地理范围、每层聚合文件的数量以XML格式进行存储。
【专利说明】一种基于聚合文件的瓦片地图存储方法
【技术领域】
[0001]本发明涉及一种网络地图服务器中缓存地图的存储机制,具体涉及到一种基于聚合文件的瓦片地图数据组织方法及存储方法,该方法的使用能够提高大数据量网络地图数据的索引速度,从而提高网络地图服务器的效率。
【背景技术】
[0002]地图瓦片技术是一种地图预缓存技术。地图瓦片技术将配置好的一定坐标范围的地图,按照固定的若干个比例尺(瓦片级别)和指定图片尺寸,切成若干行及列的正方形图片,按一定的命名规则和组织方式存储到目录系统中或是数据库系统里,形成金字塔模型的静态地图缓存,地图切图所获得的地图切片也叫瓦片(Tile)。地图瓦片技术在WebGIS和地图服务中得到了广泛的应用。
[0003]瓦片地图的优点在于提前缓存数据,减少网络传输数据量,较矢量数据模型更加适合于网络地图服务器的情况,其缺点在于比例尺较大情况下,瓦片的个数急剧增加,这些数据均以瓦片地图小文件的形式存放在一级目录下,造成了存储空间增加,在海量小文件中检索某个文件会磁盘频繁的I/o操作,时间复杂度高,在利用分布式存储管理时,产生对主节点管理压力过大的情况。急需一种对这些海量小文件的高效的组织方式,来减少存储空间,提高检索效率,同时,便于实现海量小文件在分布式服务器上进行迁移操作。ARCGIS在9.3之后的版本,提出小文件过多的问题的解决方案,即将瓦片地图利用紧凑型(compact)格式进行存储,紧凑型文件有两个,一个文件存储了瓦片地图在另一个大文件中的位置和长度信息,在另一个聚合大文件中存储了原始瓦片地图的信息。这种方法的弊端在于索引文件和聚合文件个数相当,在压缩瓦片地图文件的个数的同时,增加了新的小文件数量。

【发明内容】

[0004]本发明的技术解决问题是:针对大数据量瓦片地图在存储上占有大量空间,在检索上频繁I/o操作造成的时间消耗,在利用分布式文件存储时,文件个数多造成主节点压力大的问题,本发明主要是解决以上三方面的问题,提升网络服务器的地图响应性能。
[0005]本发明的技术解决方案是:一种基于聚合文件的瓦片地图存储方法,步骤如下:
[0006]( I)根据待制作电子地图的矢量数据组织情况,确定最底层地图比例尺,基于该比例尺将待存储地图按照瓦片金字塔模型进行分层;
[0007](2)从步骤(I)中选取第O层以及中间层中至少选取一层作为分析对象;分别计算选取的每层地图中的瓦片图总数,并根据最底层比例尺确定所选择层的比例尺;
[0008](3)对所选择的每层地图分别进行如下处理:根据计算机内存,将待处理层地图中的瓦片图按顺序进行分组,每组中瓦片图的个数为M行*N列;每组瓦片图生成一个聚合文件;聚合文件包括文件头、索引文件和瓦片地图文件三部分;其中文件头中存储该组瓦片地图的个数和瓦片地图的起始行列号;索引文件中存储每个瓦片地图的行列号及偏移量;瓦片地图文件中存储瓦片地图的原始信息;
[0009](4)为每层地图建立一个文件夹,该文件夹中存储该层所有聚合文件,文件夹的命名能够表示所在的金字塔层数;
[0010](5)将步骤(2)中选择的层数、步骤(4)中建立的文件夹名称以及每层对应的分辨率、每层地图的地理范围、每层聚合文件的数量以XML格式进行存储。
[0011]所述的M、N的取值一般5-100。
[0012]本发明与现有技术相比有益效果为:
[0013](I)本发明使用聚合文件的方法对瓦片地图进行重新组织,减少了在搜索小文件时频繁的I/o操作造成的时间消耗,同时,将小文件聚合存储,大大减少文件的存储空间。
[0014](2)采用嵌套金子塔索引的方式,将聚合文件按照行列号矩阵来命名,文件名称本身代表了图片的索引信 息,聚合文件本身在各比例尺中,按照金字塔方式进行存储,聚合文件的头文件中又存储了该聚合文件多包含的瓦片地图的索引信息,通过嵌套金字塔的双重索引方式,提高对瓦片地图的索引速度。
[0015](3)本发明充分利用瓦片地图的响应速度和聚合文件的查询速度,大幅降低网络服务器对地图响应的时间。
【专利附图】

【附图说明】
[0016]图1为瓦片金字塔模型;
[0017]图2为存储流程图;
[0018]图3为地图坐标示意图;
[0019]图4为瓦片地图命名示意图;
[0020]图5为cimg文件及命名示意图。
【具体实施方式】
[0021]下面结合附图及实例对本发明进行详细说明,本发明一种基于聚合文件的瓦片地图存储方法,如图2所示步骤如下:
[0022]( I)根据待制作电子地图的矢量数据组织情况,确定最底层分辨率,基于该比例尺将待存储地图按照瓦片金字塔模型进行分层;
[0023]瓦片金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。瓦片金字塔模型的构建算法如下:
[0024](1.1)首先确定地图服务器所要提供的缩放级别的数量L,把缩放级别最低、地图比例尺最大的地图图片作为金字塔的底层,即第O层,并对其进行分块,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256X256像素)的正方形地图瓦片,形成第O层瓦片矩阵;瓦片地图格式可以是PNG,JPEG等,瓦片地图的命名规则为原点设置在左上,行、列分别表示距原点的纵向和横向距离。
[0025](1.2)在第O层地图图片的基础上,按每2X2像素合成为一个像素的方法生成第I层地图图片,并对其进行分块,分割成与下一层相同大小的正方形地图瓦片,形成第I层瓦片矩阵;
[0026](1.3)采用同样的方法生成第2层瓦片矩阵;…;如此下去,直到第L-1层,构成整个瓦片金字塔。见图1所示为瓦片金字塔模型。
[0027](2)从步骤(1)中选取第O层即最底层、第2层、第4层作为分析对象;分别计算选取的每层地图中的瓦片图总数,并根据最底层比例尺确定所选择层的比例尺;
[0028](2.1)计算待制作电子地图的实际距离
[0029]长度Y=Ymax-Ymin,览度 X=Xmax-Xmin ;
[0030]其中,Xmin, Xmax分别为待制图区域的最左和最右侧坐标,Ymin, Ymax为待制图区域的最上方和最下方坐标,见图2。
[0031](2.2)计算第O层金字塔下,瓦片地图的行列数,计算公式如下:
[0032]TotalRow0= (Int) (DPI*Y*ScaleQ/ (0.0254*256))+1 ;
[0033]TotalColomn0= (Int) (DPI*X*Scale0/ (0.0254*256))+1 ;
[0034]其中TotalRowci第O层金字塔中的瓦片图行数;TotalColomnQ为第O层金字塔中的瓦片图列数。DPI为绘图机器的显示分辨率,PC机取96,Y为地图的实际高度,X为地图实际宽度,求解算法见(1.1),Scale0为第O层金字塔的地图比例尺,可根据出图所用的矢量数据组织情况约定,例如可以为可设1:213即1:4096或者1:2^1:21°等均可。
[0035](2.3)计算第O层地图的四至坐标
[0036]由于地图用256*256的瓦片图片绘制,因此需要地图的制图范围是256*256的整数倍,计算O层地图的 四至坐标,
[0037]XminO=Xmin^ YminO=Ymin^ XmaxO=XminO+0.0254*256*Τθ tal C。I OmnQ/96*Scal θ0 ;
[0038]Ymax(l=Ymin(l+0.0254*256*TotalRow0/96*Scale0 ;
[0039]其中,Xmin0, Xmax0分别为第O层地图的最左和最右侧坐标,Ymin0和Ymaxtl分别为第O层地图的最上和最下方坐标,见图3。
[0040](2.4)计算第η层金字塔下,瓦片地图的的行列数及制图的四至坐标,计算公式如下:
[0041]Scalen=Scale0/2n;
[0042]TotalRown= (Int) (DPI*Y*Scalen/ (0.0254*256))+1 ;
[0043]TotalColomnn= (Int) (DPI*X*Scalen/ (0.0254*256)) +1 ;
[0044]其中TotalRown第η层金字塔中的瓦片图行数;TotalColomnn为第η层金字塔中的瓦片图列数。Scalen为第η层金字塔的地图比例尺。制图四至坐标
[0045]制图四至坐标为
[0046]Xfflinn=Xfflin ;
[0047]Yfflinn=Yfflin ;
[0048]Xmaxn=Xminn+0.0254*256*TotalColomnn/96*Scalen ;
[0049]Ymaxn=Yminn+0.0254*256*TotalRown/96*Scalen ;
[0050]从中选取n=2,4作为研究对象,则第2层金字塔的比例尺Scale2为Scaletl的1/4,第4层金字塔的比例尺Scale4为Scale。的1/16。
[0051](3)对所选择的每层地图分别进行如下处理:根据计算机内存及总的瓦片地图的个数,对瓦片地图进行分组,组内瓦片地图个数设置为M行,N列。具体每组中瓦片图的数量M行*N列受用来处理图片的计算机内存相关,在内存为512M的计算机,按照平均每个小图片的大小25k计算,理论上可以取140行140列,而且随着计算机硬件技术的发展,基本不受这个限制。但根据地图总的瓦片图个数从几千个到上亿个不等,每组中的瓦片图行列数取经验值一般为5-100之间均可。对第O层地图,对瓦片进行分组,每组中的瓦片图行列数取值M0行列,每组瓦片图生成一个聚合文件;聚合文件包括文件头、索引文件和瓦片地图文件三部分;其中文件头中存储该组瓦片地图的个数和瓦片地图的起始行列号;索引文件中存储每个瓦片地图的地理坐标范围;瓦片地图文件中存储瓦片地图的原始信息;瓦片地图命名见图4.[0052]
【权利要求】
1.一种基于聚合文件的瓦片地图存储方法,其特征在于步骤如下: (1)根据待制作电子地图的矢量数据组织情况,确定最底层地图比例尺,基于该比例尺将待存储地图按照瓦片金字塔模型进行分层; (2)从步骤(I)中选取第O层以及中间层中至少选取一层作为分析对象;分别计算选取的每层地图中的瓦片图总数,并根据最底层比例尺确定所选择层的比例尺; (3)对所选择的每层地图分别进行如下处理:根据计算机内存,将待处理层地图中的瓦片图按顺序进行分组,每组中瓦片图的个数为M行*N列;每组瓦片图生成一个聚合文件;聚合文件包括文件头、索引文件和瓦片地图文件三部分;其中文件头中存储该组瓦片地图的个数和瓦片地图的起始行列号;索引文件中存储每个瓦片地图的行列号及偏移量;瓦片地图文件中存储瓦片地图的原始信息; (4)为每层地图建立一个文件夹,该文件夹中存储该层所有聚合文件,文件夹的命名能够表示所在的金字塔层数; (5)将步骤(2)中选择的层数、步骤(4)中建立的文件夹名称以及每层对应的分辨率、每层地图的地理范围、每层聚合文件的数量以XML格式进行存储。
2.根据权利要求1所述的一种基于聚合文件的瓦片地图存储方法,其特征在于:所述的M、N的取值一般5-100。
【文档编号】G06F17/30GK103744855SQ201310631140
【公开日】2014年4月23日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】李亚平, 石郡儒, 唐宜彬, 郭学武 申请人:航天恒星科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1