海量瓦片数据管理及优化方案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

海量瓦片数据管理及优化方案

一、海量瓦片数据的管理

1.瓦片数据的特点

瓦片数据是应用地图瓦片技术对地图数据进行切片所得到的,其对数据的切分规则通常是按照固定的若干个比例尺(瓦片级别)和指定图片尺寸,切成若干行、列的正方形图片,并以指定的格式保存为图片文件,再按一定的命名规则与组织方式存储到目录系统中或关系数据库里。地图切图所获得的地图切图也叫瓦片,瓦片金字塔是瓦片数据的一种多分辨率层次模型,从金字塔底层到顶层,数据分辨率越来越低,但是其表示的地理范围不变。

瓦片数据是改进系统性能的最佳选择,它通过对地图数据预先渲染、切片,有效减轻服务器处理压力,减少网络负载和响应延迟。但是,瓦片地图服务都基于文件方式进行图片缓存,这种方式实现简单,但因瓦片数据动辄几百至上千万个文件,且文件很小,导致磁盘存储碎片化严重,影响IO性能,且数据可迁移性差,无论是数据备份、迁移或是恢复都耗时漫长。如何优化瓦片技术,减小数据冗余,提高访问效率和管理效率是当前我们急需解决的问题。

2.海量瓦片数据的管理

目前很多GIS平台对数据的管理方式虽然类似但也不尽相同。总结起来大概有三种方式。

一是基于文件系统凡人管理,对切分后的数据按照瓦片数据的切分规则分别用文件夹存储管理,即地图瓦片数据的组织方式采用数据集、层、行目录结构描述,并基于文件系统的方式进行调度;此方法调度简单,检索过程依赖文件系统的文件查询方式和访问方式,容易实现,但效率不高,维护=复杂,同时存在数据的安全隐患。

图 1 瓦片文件组织

二是采用大型的关系数据引擎:此种方式通常将预处理后凡人瓦片数据以一条独立记录的形式存放于数据库中,通常可以根据瓦片切分的层级或则金字塔结构分表存储以提高数据的检索效率。这种方式可以利用数据库的安全机制有效的解决基于文件系统管理存在的安全隐患,但是由于关系型的数据库对于此类数据很难建立快速的索引机制,所以相对调度效率较低,但是实现相对容易。

三是基于GIS自身为满足空间数据检索而开发的一些专用数据库管理引擎,如GFS等等,这类引擎能够较好的解决数据调度的效率同时也能有效的避免文件系统存在的各种安全隐患,但实现复杂。

3.瓦片数据的调度

(1)数据的格网分割

由于影像等数据通常都是以一个大的数据文件格式的形式存在的,而如此庞大的文件不可能也不需要一次性的全部加载到GIS系统中来,更多的时候是我们仅仅需要加载我们所关心的部分数据。因此,此类数据在使用之前需要进行一些列的处理,即大的数据分割为小块的数据,这样在调度时仅仅需要调度用户需要的那部分数据即可。目前绝大多数GIS采用的分割方式是以固定大小的网格分割,在关系数据库中,对于数值和字符的索引已经比较成熟,且效率很高,但是对于诸如影像等变长的二进制数据来说很难建立的高效的索引机制。通常将对此类数据的索引通过网格分割,改成对格网编号的索引,从而大大提升索引的效率,从而提升数据调度的效率。分割方法是按照一定的规则将大的数据分割为规则(如正方形区域)并且彼此之间没有重叠的图像块,并且给每个块一个唯一编号(如网格行列号),从而

通过对格网编号索引实现数据的检索。索引算法如下:

若(X0,Y0)为格网的起始坐标原点,设窗口显示的范围为(X1,Y1,X2,Y2),如图2所示。

图 2 格网索引图

起始格网的行号为:(取整)((X1-X0)/Δx),其中Δx为格网的宽度值;

终止网格的行号为:(取整)((X2-X0)/Δx)+1;

起始格网的列号为:(取整)((Y1-Y0)/Δy),其中Δy为格网的宽度值;

终止格网的列号为:(取整)((Y2-Y0)/Δy)+1;

由此通过格网的起止编号来检索(X1,Y1,X2,Y2)对应包含的数据块编号即可。

(2)金字塔建立

金字塔是指在同一的空间参照下,根据用户需求以不同分辨率进行存储和实现,形成分辨率油由低到高,数据量由小到大的金字塔结构。这样在数据的最底层存储最高分辨率的数据,然后随着金字塔层数的增加,数据的分辨率依次降低,数据量依次减少,在金字塔的顶层,则仅仅存储用户所需要的最小分辨率的数据。在进行显示时,根据当前用户的浏览范围及显示设备的分辨率和范围,使用能够满足用户视觉要求的金字塔层次中的最高层数据作为显示数据,这种方式在一定程度上会增加数据存储开销,但能加快实时显示速度。

(3)基于金字塔的瓦片分割与数据调度

数据金字塔建立之后要分别对其各层数据进行格网分割,分割时要根据瓦片所处的层级及所在区域的不同对瓦片进行唯一编号,这便是瓦片数据的生成。基于金字塔的瓦片切分通常采用四叉树形式,即以金字塔最顶层数据为基准,依次向下做22n瓦片数量等大小分割,n为金字塔层级,这也就是前面所阐述的金字塔层级之间分辨率通常保持4倍关系的原因,如图所示。在GIS对瓦片数据的调度过程中,对顶层数据为基础,随着距离的拉近,当需

要调度金字塔下一层数据时,系统自动对当前视域范围的瓦片按照四叉树规则,调度其下一层该瓦片数据对应分割后的四个子瓦片,因此新加载的瓦片所代表的地理区域总和与其父节点瓦片相同,从而达到加载更加清晰数据以满足显示效果的目的。如图3中,根据当前加载的瓦片数据的编号可以按照四叉树分裂规则直接计算出其上一层或下一层需要加载的瓦片数据编号,如当前视域范围内加载的瓦片的空间编号为5-5-15-25(即第三个Face的第五级横坐标为15,纵坐标为25)的瓦片,随着距离的拉近需要更加清晰的数据来填充当前的地理范围,则对该瓦片进行四叉树分割后的四个瓦片的编号分别为3-6-30-50、3-6-30-51、3-6-31-50、3-6-31-51,从而可以根据瓦片的编号直接请求响应的瓦片数据即可。

图 3 瓦片数据分割图

二、海量瓦片数据优化管理方案

1.瓦片数据的紧缩处理

由于瓦片的数据通常以离散文件的形式存在,因此对于瓦片数据进行必要的紧缩处理可以大大提高瓦片数据的可维护性,因此这或许也是越来越多的GIS平台均或多或少的对瓦片数据进行一定的紧缩处理的主要原因所在。而数据的紧缩方式对于紧缩后数据管理与维护的便捷性有着重要的影响,因此引擎的设计首先要考虑的就是紧缩数据的结构设计问题。

对于紧缩数据的总体结构,本文对紧缩数据采用数据文件与索引文件相分离的形式,机数据文件中仅仅包含紧缩后的瓦片数据,而对于数据的检索信息则单独以检索文件的形式存

相关文档
最新文档