常 津
(南京市国土资源信息中心,江苏 南京 210005)
“一张图”工程整合了基础地理框架、遥感影像、业务流转和实时更新、建设用地审批等多源数据信息,不仅对于保持自然资源基础数据的现势性和真实性具有重大意义,还为国家直接、及时、准确掌握自然资源现状和时空变化提供了综合平台[1]。但是,随着自然资源信息化的不断发展,“一张图”中的数据量也在快速增长。日益庞大的数据库给日常维护和管理带来了一定困难,同时也对业务系统的稳定运行造成了影响。因此,如何适时适度地清理“一张图”数据库,实现数据库性能优化,保证系统运行顺畅,成了当前亟待解决的问题。
在进行数据库清理时,需遵循以下原则:一是保障数据的保密性、完整性、可用性,降低数据安全风险;二是选择适当类别的数据进行清理,尽可能减小对当前业务系统的影响[2]。目前,南京市“一张图”在自然资源调查、动态监测等工作中积累了大量的影像数据,全市每年的影像数据量平均在200 GB左右,历史数据总量已达到了TB级。遥感影像占据了相当大的数据库空间,但基本维持在一年更新一次,相对于实时更新的地籍管理、建设用地等数据,对数据库的现势性影响较小。基于上述分析,将历年遥感影像从“一张图”数据库中转移出来,单独离线存储,是清理数据库的适当选择。但是,如何快速更新发布离线数据,保证数据清理后“一张图”影像的显示效果,实现更好的用户体验,是另一个需要解决的重要问题。在过去的工作中,通常将影像入库并存储在“一张图”数据库中,然后再进行切片发布等,这样的做法效率较低且占据了大量的数据库空间,若入库时不慎出现了误操作会很难完全释放原本的自由空间,给数据库带来巨大压力。为了满足数据库减负和地图服务高效的双重需求,本文改进了传统的工作方法,设计实现基于ArcGIS SERVER和GeoWebCache的遥感影像切片更新发布模式,将历年影像从数据库中剥离出来,释放数据库空间。实验证明,本方案有效缓解了“一张图”数据库的存储压力,优化了数据库性能,同时提高了影像数据的更新发布效率,保证了访问速度。
目前,影像数据存储模式主要分为三类:数据库存储、文件系统存储、混合存储[3]。
(1)数据库存储。使用Oracle扩展的面向对象关系数据模型GeoRaster实现遥感数据组织和管理,在数据安全性、多用户并发控制和存储扩展等方面具有优势,但其弊端也非常明显:需要大型关系型数据库平台的支持,影像数据入库耗费大量时间,建库后影像数据将会占用较大的存储空间,数据的局部更新和备份操作烦琐。
(2)文件系统存储。数据以文件的形式集中存储在指定的服务器上,通过文件的方式对影像数据进行组织和管理,具有易于维护管理和不需要建立影像数据库的特点。对于离线影像文件,更新较为方便,但是无法使用动态切片缓存方法,要基于文件进行切片,因此保证切片生产效率和成果质量是使用该存储方法的重点。
(3)混合存储。结合关系数据库和文件系统存储的特点,将遥感影像数据存储在文件系统中,数据库只管理影像数据的索引信息,因此影像数据的检索效率会得到大幅提高。但是,使用该方法进行存储依旧不能从根本上改变影像数据对数据库的依赖。
根据以上分析可以看出,只有改变影像数据的存储方式,将历年遥感影像集中存储在文件系统中,释放当前数据库的空间,才能实现数据库清理的目的。同时,为了保证数据快速更新发布,需要选择适当的方法,基于离线影像文件预生成静态瓦片,通过缓存大量规则的地图瓦片来响应客户端的请求。
本文提出的数据库清理方案总体设计如图1所示,首先对数据库中的所有影像进行备份,保证其安全性和完整性;然后对历年影像依次进行预处理,处理过程主要包括坐标转换、重采样、数据镶嵌、数据裁剪、建立金字塔等,生成规格统一的遥感影像,并在ArcGIS中按照年份创建全市范围的影像文档,并对每个文档进行分割,以提高切片效率;接着利用ArcGIS Server基于离线数据进行切片生产,同时用GeoWebCache发布切片数据,保证数据访问速度;最后全面清理“一张图”数据库中存储影像的表空间,优化数据库性能。
图1 数据库清理方案总体设计
2.2.1 遥感影像预处理
数据预处理的目的是统一原始影像的分辨率、坐标系、色调等,将分块的影像以行政区为单位进行整合梳理,保证数据质量,为切片生产提供完整准确的基础数据。其基本步骤如下:
(1)坐标转换。将国家下发的标准格式数据统一转换为地方坐标系。
(2)影像镶嵌。将历年影像以行政区为单位进行拼接,镶嵌为完整区域的影像。原始数据往往在规格上存在差异,因此对于同一年度相同行政区内的若干影像,需要以分辨率最高的影像为基准像幅,在拼接时选择双线性内插法进行重采样,确保成果的整体分辨率。
(3)影像裁剪。对每个行政区的影像按照行政界线进行裁剪,获得区域影像,并利用JPEG_YCbCr方式对影像进行视觉无损压缩,并构建影像金字塔,保证影像在ArcGIS中的加载速度和显示效率。
2.2.2 ArcGIS Server生产地图瓦片
根据传统模式,“一张图”中的地图瓦片是基于在线影像动态生成的,也就是说所有的数据在切片前都要进行数据入库,并完成相应的图层配置。如果将影像数据从数据库中剥离,必须改变现有的切片方式。针对这一问题,本方案将选择ArcGIS Server生产切片数据,其地图服务缓存机制的工作原理是:按照一定的数学规律,在先期选择的各个比例尺下,将整个原始地图文件,切成一定规格的图片,然后保存这些图片的副本到服务器端[4-5]。当客户端向服务器请求地图服务时,服务器不需要动态生成新的瓦片,而是根据客户端请求的地图区域信息将原来切好的地图图片传输到客户端,从而有效地提升地图的浏览速度,减轻数据库的负荷。
基于ArcGIS Server生产切片,首先将所有影像以年份为单位在ArcMap中逐年创建全市范围的遥感影像地图文档;然后对每一个地图文档按照一定的行列数进行分割,保证切片效率;最后按照电子地图的显示要求,分12个级别的比例尺进行影像数据缓存。
2.2.3 GeoWebCache发布切片数据
ArcGIS Server的缓存图片构建好之后,进行部署时,如果只需要某个区域内的缓存图片,需单独针对该区域重新构建缓存图片,要花费大量的时间。为解决这个问题,需要选择一种可以从已经建立好的地图瓦片中提取目标范围内缓存图片的方法。
GeoWebCache是 OpenGEO 的一个开源瓦片地图服务模块,采用Java实现基于WMS的动态缓存服务。在实际工作中,GeoWebCache部署于客户端和WMS兼容服务器之间,充当地图访问代理。其发布数据的基本原理是:当客户端请求加载地图服务时,服务地址指向geowebcache,geowebcache接收到请求后,会根据请求的位置和比例尺在切片目录中找到对应的瓦片,然后返回给客户端[6-7]。本方案中请求的切片资源是ArcGIS Server提前生成的,浏览器加载这些图片之后,下一次再请求同样的图片时,就会从浏览器的缓存中抽取数据,不需要在服务器端重复计算,这使得地图绘制的速度提升数倍,也得到了更好的用户体验效果。
南京市“一张图”数据库中积累了大量的影像数据,包括专项土地调查数据与遥感监测影像等。根据区域面积和分辨率的差异,一个县(区)的遥感影像数据量为20 GB到50 GB,全市每年的卫片影像数据量平均在200 GB 左右,高分航片影像数据量平均在500 GB,历年影像数据总量更是达到了TB级。
本文主要从两个方面进行试验,一方面对影像数据进行清理,结果显示清理前历史遥感影像及其冗余数据占据了目前Oracle数据库近2TB的存储空间,清理后数据库负荷较小,性能提升。另一方面以南京市2013年高分航空影像为例进行切片试验,其数据量为460 GB,从表1的对比结果可以看出,用本文提出的方案进行影像切片发布,虽然不能动态生成地图瓦片,但是大大缓解了数据库的存储压力,还能够省去数据入库的环节,简化生产过程。使用ArcGIS Server切片效率较高,相较在线切片的方法也更为稳定,保证了响应速度。通过GeoWebCache发布服务,保证了影像显示质量。因此综合考虑,本方案是保证系统全线稳定的有利选择。
表1 切片方案对比
“一张图”数据库日益庞大,对数据库性能和系统运行造成了一定影响,本文针对这一问题设计了数据库清理方案。首先根据实际工作需求锁定历年遥感影像数据为清理目标;然后分析影像数据存储模式,将影像存储在文件系统中;最后提出基于ArcGIS SERVER和GeoWebCache的遥感影像切片更新发布模式,保证影像数据脱离数据库后的发布效率。实践证明,本方案行之有效,不仅实现了数据库清理的目的,优化了数据库性能,而且提高了影像数据的更新发布效率,简化了切片生产过程,为国土资源“一张图”数据库清理提供了新的思路。