基于OGDC标准的栅格数据共享

2022-01-08 03:06金晶潘中华李可苏恒
城市勘测 2021年6期
关键词:栅格数据数据格式提供者

金晶,潘中华,李可,苏恒

(武汉市测绘研究院,湖北 武汉 430022)

1 引 言

随着近年来航空航天技术、对地观测技术以及信息技术的迅猛发展,现代遥感技术正进入一个快速发展即时获取栅格数据的新阶段。栅格数据以其直观、生动、易于获取和处理等特点,在地理信息领域中的地位变得越来越重要[1],并在虚拟地球平台中得到广泛的应用。美国的Google Earth,NASA研制的World Wind[2]以及武汉大学研发的GeoGlobe等虚拟地球系统实现了海量多分辨率遥感影像和地形数据的浏览以及地理信息协同服务与在线共享[3],使得人们对遥感影像数据的了解和重视不断加深。当前,国家空间数据基础设施和数字地球建设需要多比例尺、多数据源的海量栅格数据,因此如何高效地管理这些栅格数据,使之能够为我国的空间数据基础设施和数字地球建设发挥重要的作用,是一个值得深入研究的问题[4]。

2 栅格数据存储管理现状

信息技术的发展使得我们在空间数据获取手段上取得了很大进步,与此同时遥感栅格数据量呈几何级数以惊人的速度增长,栅格数据及其属性信息不断快速积累,各种栅格数据组织形式、管理方法大量涌现。如何集成现有的各类异构空间数据,实现快速有效地数据检索、发现和数据共享,已成为目前地理信息领域的研究热点[5]。作为空间数据的有效管理工具,地理信息系统已经成为空间信息管理与应用的主要平台,因此地理信息系统也面临着对不同来源不同数据组织形式空间信息进行有效管理和综合应用的难点[6]。

GIS发展的不同时期,信息处理模式的不断演进促使了空间数据共享方式的发展,产生了不同的多源数据共享方法[7],主要包括以下几个方面:

(1)数据格式互换模式:通过使用专门的转换软件,将其他格式的数据转换成为本系统可以识别与利用的数据格式,以此来达到不同系统间数据的间接共享[8];

(2)数据直接访问模式:在一个GIS软件中实现对其他软件数据格式的直接访问,用户可以使用单个GIS软件存取多种数据格式;

(3)中间件技术:中间件是一种独立的系统软件,位于客户机服务器的操作系统之上,用于管理计算资源和网络通信,分布式应用软件借助中间件在不同的技术之间共享资源[9];

(4)Web Services信息共享服务:Web Service是一种基于对象/组件模型的分布式计算技术,是指自包含、自描述、模块化的应用程序,这类应用程序能够被发布、定位,并通过Web实现动态的调用。

3 OGDC标准

OGDC(Open Geospatial Database Connectivity)开放式空间数据库互联互访协议,是国家863项目为了实现数据互操作而制定的一组标准。标准中规定了空间数据的访问接口、对象模型以及对不同空间数据提供者实现接口的要求。OGDC采用面向对象的思路定义了具备GIS空间数据读写接口的抽象基类,各数据库提供者基于自身数据结构提供子类动态链接库实现OGDC标准接口。基于OGDC标准开发的应用程序,可以不依赖于任何空间数据格式,以统一的方式来访问所有的空间数据,实现对空间数据的读、写、存、取。在不暴露底层存储格式的条件下,最大限度方便其应用者进行使用,一旦内部数据格式有调整,只需升级对应的动态库,使用者不需做任何变动和重新编译工作,实现了一次编码随处使用的高效数据共享。

为了保证OGDC的标准性和开放性,其总体框架分四个层次:应用程序层、OGDC接口层、数据提供者层和数据层,如图1所示。

图1 OGDC总体框架

(1)应用层,基于OGDC接口层开发的应用程序,以统一的方式创建、查看、编辑、保存、删除空间数据,而不必关心底层使用的是哪一个数据提供者以及访问的是哪一类数据库。

(2)OGDC接口层,是各数据提供者根据OGDC标准实现的API接口,是连接应用层与数据提供者层的桥梁。OGDC接口层以C++模式提供了OGDC对象的访问接口,并带有OgdcProvider管理器实现对各数据提供者的加载与卸载,为每一个数据提供者提供了OGDC函数入口点。

(3)数据提供者层,类似于访问数据的驱动器,它是实现OGDC函数与数据层交互的动态库。这些已注册的以动态库形式存在的数据提供者由GIS开发厂商根据OGDC标准各自实现。

(4)数据层,由用户想要存取的数据格式、数据的存储方式及其相关的操作系统组成。数据层可以包含各种各样不同格式的GIS数据,可以是文件型、数据库型、网络型等,用来提供OGDC使用所需的数据库或数据文件,OGDC支持的数据库类型由OGDC数据提供者确定。

4 面向Oracle Georaster的OGDC标准实现

4.1 OGDC GeoRaster实现思路

近年来,使用大型关系数据库一体化管理空间数据和业务数据得到了越来越广泛的应用。空间数据库技术在很多方面有着明显的技术优势,包括海量数据管理能力、图形和属性数据一体化存储、多用户并发访问、完善的访问权限控制和数据安全机制等[10]。

Oracle Georaster是Oracle Spatial 10g新增的栅格数据管理机制,它基于对象关系模式(包含了一个全新的对象类型SDO_GeoRaster和元数据XML结构),一体化管理栅格数据及其属性信息,打破了传统的文件存储方式,同时还提供了一系列方法、过程用以支持对栅格数据集的存储,管理和操作[11]。

OGDC接口层采用面向对象的思路定义了数据提供者需要实现的数据访问对象以及API访问接口,通过制定统一的数据访问模式以实现对多源异构空间数据的高效共享。本文根据GeoRaster栅格数据的存储结构和管理方法,通过继承OGDC接口层抽象基类,提供面向Oracle GeoRaster的OGDC数据提供者动态链接库。利用GDAL中封装的OCI接口和GeoRaster API接口,编程实现面向Oracle GeoRaster栅格数据存储管理模式的OGDC标准,其实现思路如图2所示。

图2 OGDC GeoRaster实现思路

4.2 数据访问

GeoRaster采用对象关系数据库模式,使用基于组件的、逻辑分层并且多维的通用栅格数据模型。通过SDO_GEORASTER与SDO_RASTER对象实现对栅格数据的存储:SDO_GEORASTER用来存储与栅格数据相关的元数据与空间范围信息,SDO_RASTER则包含了栅格文件的分块信息并以BLOB格式存储块中的像素数据。基于这种存储结构,GeoRaster提供了一系列非常丰富的功能函数和结构完善的元数据XML模型来存储,管理,操作空间数据[12]。

GDAL(Geospatial Data Abstraction Library)是X/MIT许可协议下的开源栅格空间数据转换库,提供对多种栅格数据的支持。本文从GDAL开源代码中抽取了部分对象用于实现针对Oracle GeoRaster对象的访问与操作,并按其功能分为两个部分进行管理,分别是OCIWrapper.h和GeoRasterWrapper.h。OCIWrapper主要实现了对Oracle调用接口(Oracle Call Interface,OCI)的封装,OCI提供了一组可对Oracle数据库进行存取的接口子例程(函数),通过在C++中调用可达到存取Oracle数据库的目的[13]。GeoRasterWrapper类封装了GeoRaster提供的用于操作、管理栅格数据集的API访问接口。本文通过调用GeoRasterWrapper类中的对应方法实现栅格数据集的相关操作。

下面以获取栅格数据块为例,说明使用OGDC接口访问栅格数据的实现流程(图3)。OGDC中定义了栅格数据块的访问接口LoadBlock(),用于读取指定行、列号的块数据:

图3 获取栅格块主要流程

该流程的前三个步骤都是在GeoRasterWrapper类GetDataBlock()接口中顺序完成的,GetDataBlock()是GeoRasterWrapper类中封装的用于获取指定金字塔层、行、列、波段号的单个波段块数据的访问接口。步骤四中,将获取的所有单个波段的数据经过排列组合得到新的块,该块即为LoadBlock()接口所求。块的设置流程与获取流程相似,采用单波段依次设置的方法来实现的,并按该块原本的方式进行数据压缩和交叉并提交到数据库。

4.3 测试实验

本文使用OGDC提供的标准测试程序Viewer,加载面向Oracle GeoRaster的OGDC数据提供者动态链接库,访问以GeoRaster模式存放于Oracle数据库中的栅格数据,以检验本文成果是否符合OGDC标准。

(1)数据源打开流程(图4)

图4 数据源打开界面

该过程中主要用到的接口及调用流程如图5所示:

图5 数据源打开流程

(2)数据集显示流程

GeoRaster提供了栅格数据集的金字塔式存储结构,不同的金字塔层存放同一范围不同分辨率的栅格数据。在应用程序放大、缩小查看数据时,通过计算调用GeoRaster中不同层次的金字塔数据进行显示,在保证图像清晰可见的同时,提高了数据读取效率。该过程中主要用到的接口及调用流程如图6~图9所示:

图6 栅格数据可视块获取流程

图7 Tiff格式影像数据的显示

图8 地形格网数据图的显示

图9 BMP格式影像数据的显示

以浏览新疆地区高精度大范围BMP数据为例,在进行平移、缩放全景视图等操作时影像显示清晰、流畅,分辨率过渡自然快速,无明显延时,各操作响应时间约1秒。经验证,使用OGDC应用层Viewer程序可以成功调用GeoRaster数据库提供者动态链接库,对Oracle GeoRaster栅格数据进行访问、浏览、复制、删除等基本操作。

5 结 语

基于OGDC标准开发的应用程序,不依赖于任何空间数据格式以统一的方式访问所有的空间数据,实现对空间数据的读、写、存、取。Oracle Georaster基于对象关系数据库模式,包含了一个全新的对象类型SDO_GeoRaster及相应的功能函数和元数据表来管理栅格数据。本文基于Oracle GeoRaster数据组织结构和访问方法,编程完成OGDC数据提供者层的动态链接库以实现栅格数据的共享。实验观察可得,栅格数据显示效果清晰,移动顺畅,不同分辨率浏览变换连贯,各操作耗时短能够在保证浏览效果的同时快速满足用户需求。

猜你喜欢
栅格数据数据格式提供者
网络交易平台提供者的法律地位与民事责任分析
基于隐私度和稳定度的D2D数据共享伙伴选择机制
网络言论自由的行政法规制研究
世界首个可记录物体内部结构等复杂信息的3D打印数据格式问世
面向移动GIS的快速检索方法研究
基于GDAL的标准图幅生成及数据批量裁剪方法*1
基于ArcGISEngine的南水北调工程基础栅格数据管理
论子函数在C语言数据格式输出中的应用
做商用车行业新材料应用解决方案的提供者——访同元集团副总裁赵延东
基于特征库的测井数据格式自动识别与转换方法