开放式空间数据库访问接口的开发应用

李绍俊,钟耳顺,周芹,谢炯,王少华

(1. 中国科学院地理科学与资源研究所 资源与环境信息系统国家重点实验室,北京 100101;2. 中国科学院大学,北京 100039;3. 北京超图软件股份有限公司,北京 100015)

论文来源:《地球信息科学学报》 2013年4月 第15卷 第2期

摘要:GIS应用的快速发展对异构空间数据库互联互访提出了更高的要求。本文对现有的多种异构空间数据库互操作模式进行了对比分析,指出了各种模式的特点及其不足,在此基础上,提出了一种开放式空间数据库互联互访(OGDC,Opening Geospatial Database Connectivity)的策略与规范,以及由各家GIS平台软件厂商共同制定标准接口,再由数据库开发厂商或数据提供厂商按照标准接口进行开发实现的新模式。

关键词: 空间数据库,地理信息系统,开放式空间数据库访问接口,OGDC

Study on Opening Geospatial Database Connectivity

LI Shaojun, ZHONG Ershun, ZHOU Qin, XIE Jiong, and WANG Shaohua

(1.State Key Laboratory of Resources and Environment Information System, Institute of Geographic Sciences and Natural Resources Research, CAS, Beijing 100101, China; 2. University of Chinese Academy of Sciences, Beijing 100039, China; 3. SuperMap Software Co., Ltd., Beijing 100015, China)

Abstract:With the fast development of GIS technology and improvement of the GIS application technology, higher requirements have been put forward to the spatial database connectivity and accessibility. This study first proposes a comparative analysis on cross-sectoral large-scale shared connection to spatial database, thus to point out the hard-to-achieve synchronization updating during different data types conversion. Direct data access model cannot be fully compliance with the data type updating. The spatial extension model of the relational database is dissatisfactory in performances as well as professional spatial analysis. The support of Web Service model is insufficient for non-standard spatial data types; the protocols provided by software providers are of great specificity and difficulty to be extended by third parties. Then in this article, the interfaces of heterogeneous databases connectivity are analyzed deeply. Currently there are two categories of interfaces which are the relational database access interfaces and spatial database standard interfaces. Based on the analysis, the article proposes the ‘Opening Geospatial Database Connectivity (OGDC)’interfaces mechanism and specifications to provide a completely new model that a series of standard interfaces provided by several GIS platform software providers is jointly realized by database providers or data providers based on these standard interfaces. Detailed introductions are presented for the OGDC designs, technical features, implementation techniques, and applications. Finally, the feasibility and advantages of these proposed standards and specifications are demonstrated by a prototype using the OGDC from the domestic-developed distributed spatial database software‘BeyonDB’. And the prototype shows that OGDC could perfectly take account of the functionality, the efficiency and the usability of the spatial database connectivity, thus to provide a new application model for the standardized sharing and continual utilizing of the heterogeneous spatial database.

Key words:spatial database; GIS; OGC; OGDC

1 引言

  随着 GIS 空间数据采集与应用的快速发展,GIS 空间数据库通常需要管理 GB 乃至 TB 级的空间数据。然而,空间数据本身的多样性(异构性)在很大程度上限制了GIS应用中对多源空间数据,以及不同历史时期、不同格式、不同存在形式的空间数据的无缝操作与展示。目前,我国已建成大量的GIS 与地理数据库,这些软硬件与数据资源分散在各个部门和行业中。由于不同的行业部门采用不同的GIS软件,各部门在使用同一商业GIS软件时,又做了不同程度的二次开发,于是形成了许多独立、封闭的系统。由于缺乏互操作的标准和规范,数据与处理资源难以共享与利用,导致重复投资和信息资源浪费[1]。

  如何让空间数据库更好地支撑GIS应用服务,实现多源、异构、分布式空间数据的共享和 GIS 应用系统的无缝集成,一直是GIS研究的热点问题之一。为解决这一问题,Oracle 公司推出了 Oracle Spatial 扩展模块并提供一系列存储过程和函数来实现空间数据在 Oracle 数据库中的存储和应用[2],Autodesk 公司推出了 FDO(Feature Data Object,特征要素数据对象)访问接口来简化异构空间数据的无缝访问,国际标准化组织地理信息技术委员会(ISO/TC 211)、开放地理信息系统协会(The Open Geospatial Consortium,OGC)、万维网联盟(W3C)

  和Web服务互操作组织(Web Services Interoperabil ity Organization,WS-I)等正在研究与制定系列化的数据组织标准与访问、应用的标准、规范。

  本文首先研究和总结了现有的异构空间数据库互操作的几种模式,并分析其优势及局限性;然后借鉴了关系数据库的标准化访问,以及多源数据无缝集成框架的技术思路;最后,重点探讨开放式空间数据库互联互访(OGDC,Opening Geospatial Database Connectivity)的设计思路、相关技术、接口规范,通过实现符合OGDC规范的应用层的原型系统,验证了OGDC规范的可行性和在海量空间数据异构互访方面的优越性。

2 异构、多源空间数据库的互操作技术分析

  海量空间数据的共享与无缝集成应用是 GIS研究的热点之一,空间数据库也逐步成为了GIS应用系统构建的关键性支撑平台[3]。然而与关系数据库技术相比,由于缺乏相对统一的数据模型和标准化的数据访问技术,在多源、异构、分布式空间数据的共享、集成与互操作方面远远落后于关系数据库技术,制约了地理信息技术及其应用的进一步拓展。目前,空间信息领域常用的空间数据格式已超过100种,而综合信息系统应用中的各部门由于需求差异和历史等原因,往往会采用不同厂商的不同格式数据,部门之间的通信(互联互访)成为一个棘手的问题。面对诸多不同格式的数据,如何使已有的数据得到更充分的利用,成为当前GIS发展中亟待解决的问题。

  异构、多源空间数据共享与互操作技术方案,主要有数据格式转换模式、直接数据访问模式、关系数据库空间扩展模式,以及Web Service的数据集成技术。这些方法在一定程度上解决了空间数据共享与互操作的问题,但也存在一定的局限性[4-6]。

  数据格式转换模式可以美国国家空间数据协会(NSDI)制定的统一空间数据格式规范 SDTS(Spatial Data Transformation Standard)[7]来实现,在一定程度上提供了不同数据格式之间统一空间对象描述方案,但难以为数据的集中和分布式处理提供解决方案,也难以实现自动同步更新。

  直接数据访问模式可以在一个 GIS 系统中直接访问不同格式的空间数据,避免了繁琐的数据转换步骤,也避免了数据存储两份而导致的数据不一致的问题。但这种模式依赖于 GIS 平台对不同格式空间数据的解析与支持能力,同时,由于一些数据格式没有公开格式文档,格式升级变化难以保障[8]。

  关系数据库空间扩展模式以包含空间位置的矢量栅格数据查询检索定义和结构化查询语言SQL 的拓展规范 SQL Multimedia (SQL/MM),提供了面向空间数据及多媒体数据的查询描述,支持数据库后端定义的空间函数算子调用,以及在查询操作中实现空间分析功能[9]。这种模式为不同GIS软件的互访与互操作提供了统一的数据存储与访问机制,但由于其是以面向对象的思路在关系数据库中实现,在性能上有比较大的损失[10]。

  基于WebService的数据共享与互操作模式,以美国开放地理信息系统协会(Open GIS Consortium,OGC)制定的数据共享规范,用统一协议的方式使数据客户能够读取任意数据服务器提供的空间数据。目前,统一协议对空间数据的支持尚不全面,还存在大量非标准空间数据难以用统一协议高效表达。

  鉴于此,GIS软件厂商提出了多源空间数据无缝集成框架(Seamless Integration of Multi-source Spatial Data, SIMS)和虚拟空间数据引擎[8]、通用空间数据引擎(Universal Spatial Data Engine, USDE)、异构空间数据库集成技术(Open Grid Services Archi tecture-data Access and Integration, OGSA-DAI)[11],以及数据中间件模式[12]等特定协议的方案。这些模式的基本思路也都是趋向于由一家厂商来实现对其他数据的访问,或者也试图定义一些标准,但接口标准与平台相关性比较大,缺乏比较明确可扩展的架构,成为比较专用的接口标准,无法从根本上解决问题。

3 空间数据共享与开放空间数据存取接口

  3.1 关系数据库的标准访问接口

  在关系数据库领域,主流的数据库厂商都提供专有的数据访问接口和 ODBC 标准接口,大部分DBMS 都提供 ADO 接口,还有部分厂商提供了ADO.NET接口。ODBC以标准数据查询语言SQL实现了对多种关系数据库的统一访问和互操作,使单一客户端可以访问多种数据库,打开了关系数据库应用的新局面,各种基于关系数据库的应用软件得到快速发展。

  而在空间数据库领域,空间数据库技术主要随着关系数据库(R-DBMS)技术的发展而发展,因此,几乎所有的空间数据库技术,都需要使用DBMS 厂商提供的基础接口进行开发。由于地理空间数据具有数据量大、访问频繁等特点,传统的关系数据库服务系统难以达到相应的要求,需要采取一些特殊的技术,如空间索引、缓存等才能满足应用的需求[13]。相应地发展起来了3种主要的空间数据库技术:(1)服务器的模式,通过修改和扩充服务器方支持库实现,结构性好但开发难度大、兼容性差;(2)中间件的模式,通过外挂的桥接服务器实现,访问效率低、配置管理复杂;(3)客户端的模式,兼容性和效率较好但开发工作量大。这3种方式各有优势和局限,架构模式不同,格式和数据结构存在较大的差异,接口不统一,支持的数据类型和能力程度也各有千秋。为了解决这个问题,以统一接口的空间数据存取接口规范应运而生。

  3.2 空间数据库的规范接口

  标准数据查询语言SQL通过对结构化数据访问的扩展,可支持空间数据的部分操作,但并没有提出类似于 ODBC 的空间数据访问接口规范。为了实现空间信息的统一管理和共享访问,GIS和图形软件厂商制定了相应的规范化接口,目前,主要有FDO和OGDC。

  FDO(Feature Data Object,特征要素数据对象)访问接口是AutoDesk为了实现在CAD软件中集成地理空间数据而开发的一个接口,早期自行开发,目前,已经捐献给开源社区以开源软件方式发展。

  ESRI也公布了其SDE(空间数据引擎,是一个外挂式的空间数据服务器系统)的 API 接口,但SDE不是一个开放的公共接口,只能与其私有软件联合使用。

  OGDC是国内多家GIS软件开发商(目前包括SuperMap、GeoStar、GeoBean 等)及数据库开发商(目前包括博阳世通(BeyonDB) 、金仓(Kingbase))共同制定的地理空间数据库访问接口规范,已得到国内GIS产业界和数据库产业界的广泛支持。

4 OGDC的总体设计思路与技术特点

  4.1 OGDC总体设计思路

  开放式关系数据库标准访问接口规范(ODBC)[14]的建立,有效地解决了关系数据库的互联互访问题,软件开发商不再需要针对每个DBMS来编写不同的访问接口和程序。OGDC 技术沿用关系数据库ODBC应用模式,从数据服务层解决多源异构分布海量空间数据的访问、共享与无缝集成问题,统一的OGDC SDK可供用户开发各种GIS应用软件产品,为空间数据提供者与消费者提供统一便捷的互联互访通道;OGDC在空间数据库领域提供了类似ODBC的实现,将标准化的关系数据库数据访问模式应用于多源异构分布式空间数据的访问。

  多源空间数据无缝集成技术(SIMS)具有多格式数据直接访问、格式无关数据集成、位置无关数据集成、金源数据复合分析等特点,通过虚拟空间数据引擎框架在 GIS 平台软件内部实现了多源异构空间数据的一体化访问,有效解决了不同格式数据资源的综合利用问题[8]。但SIMS的多源异构架构只能在单一GIS平台软件内部来实现,不能解决不同的GIS平台软件之间,以及GIS平台软件和关系数据库之间的空间数据共享互操作问题。OGDC基于SIMS的空间对象模型,并将SIMS的虚拟空间数据引擎的框架拓展到GIS平台软件之上,通过规范统一的空间数据对象描述及访问接口,为分布式异构GIS平台软件之间,以及GIS平台软件与关系数据库之间的空间数据互联互访提供了解决方案。

  4.2 OGDC主要技术特点

  在技术上,OGDC采用标准C++实现开放式多平台空间数据访问框架和常用的数据访问驱动程序软件类库,可在不同平台上编译和执行,并可以基 于.Net 和 JavaEE 平 台 封 装 为.Net 组 件 和 Java Bean 组件,形成 OGDC SDK。且 OGDC SDK 是开

  放的,空间数据驱动提供者和消费者均可免费使用。

  空间数据的消费者可以通过通用空间数据访问框架,以空间数据驱动程序,调用统一的接口,直接访问空间数据库,避免为不同的空间数据库编写多套应用代码,实现一次编码,多次应用;面向对象的开发接口,降低了应用端开发难度,减少了应用端开发工作量与维护工作量。

  同时,空间数据提供者即空间数据库厂商,提供空间数据库驱动,很好地避免了格式升级后数据消费者需重新开发的问题;空间数据库厂商可针对各自数据存储的特点在接口实现优化,以及空间数据驱动程序;所有的GIS厂商可以在开放式空间数据库互联互访框架开发驱动程序,方便数据消费者方便高效地在不同的空间数据库之间交换数据。

  开放式空间数据库互联互访技术,提供了更高效的空间数据互操作方式,便于提高数据利用程度,减少数据孤岛;高效的通用空间数据模型可以实现不同数据库的统一对象访问接口,又可以避免数据格式转换模式的效率损失问题,真正实现了空间数据无缝集成。开放式空间数据库互联互访框架模型具备自我更新完善机制,可以更好地应对空间数据库技术的发展。

5 OGDC技术规范设计与实现

  5.1 OGDC总体技术框架

  OGDC应用系统中包含4个层次:数据库层、数据提供者层、OGDC接口层和应用程序层。数据库层包含提供OGDC使用数据的数据库或数据文件,OGDC支持的数据库类型由OGDC Provider决定;数据提供者层包含所有的已注册的数据提供者(Provider);OGDC 接口层提供了 OGDC 的访问接口,用户可以OGDC的访问接口来开发上层应用程序,在开发应用程序时不必关系下层用的是哪一个Provider,以及要访问的是哪一类数据库,只需按接口定义完成应用程序即可访问Provider支持的空间数据库。已完成的应用程序只需修改一下连接参数即可访问其他 Provider 支持的空间数据库;OGDC支持各种各样的上层应用程序,既支持传统的桌面应用和组件二次开发应用,也支持从服务程序访问OGDC Provider支持的数据库。

  5.2 OGDC空间数据对象与访问模型

  空间对象模型是OGDC规范的重要内容,不仅要兼顾目前主流GIS软件的数据模型,还要结合国内外相关标准。目前,OGDC 兼容 OGC 的简单对象模型(OGC Simple Feature Model),包括点、线、面、文本、复合对象等类型,且支持场模型。

  OGDC 规范中的空间数据访问对象如图 2 所示,具体含义如下:

  (1)DataSource,数据源。是由各种类型的数据集(如点、线、面类型数据,Image、Grid)组成的数据集集合。一个数据源可包含一个或多个不同类型的数据集。

  (2)Dataset,数据集。由同种类型的几何对象组成的数据集合,分矢量数据集和栅格数据集两大类,数据集可以有自己的投影信息。数据集类型包括点数据集,线数据集,面数据集,文本数据集,LineM 数据集,GRID 数据集,Image 数据集,Network数据集,属性表数据集。VectorDataset为矢量数据集,RasterDataset为栅格数据集。

  (3)Recordset,记录集。记录集仅针对矢量数据,记录集可以是矢量数据集的查询子集,通过对矢量数据集按一定规则条件进行查询得到。

  (4)Feature,空间要素。每一个空间实体对象为一个空间要素,可以为点、线、面、标注等类型的地理要素。空间要素中包含空间数据(Geometry)和属性数据(Attribute)。

  (5)Block,规则栅格块。一般为 n×n 的规则像元矩阵,由 n 条扫描线(Scanline)构成,每条扫描线是由n个像元(Pixel)构成的像元数组。

  (6)Spatial-Reference-System 空间参考系。OGDC中设置投影的基本单元是数据集,同一数据源下不同数据集可以有不同的坐标系,同一数据集中所有的空间对象(矢量数据集)或原子空间(栅格数据集)具有相同的坐标系。

  (7)Metadata,元数据。空间元数据是对空间数据的描述信息。在数据共享过程中元数据具有数据发现、数据获取、数据管理与交换等功能[15]。

  OGDC 的空间数据模型定义了空间数据对象抽象类的属性、功能及接口定义,具有可扩展性,用户可以在此基础上派生实现自定义类型空间数据对象的实体类。以 Oracle Spatial 的 Provider 为例,从空间数据对象基类派生出COspDataSource、COspDatasetVector、COspRecordset 等实体类,实体类中必须实现抽象基类中的所有纯虚函数,可部分重载实现基类中的虚函数,并可定义实现实体类中特有的扩展函数。

  空间数据库厂商需要遵循OGDC规范,实现相关接口就能够为空间数据提供高效便捷的外界访问通道,空间数据消费者通过调用OGDC的标准接口即可实现对不同空间数据库的访问。

  5.3 OGDC技术架构的设计开发

  实现 OGDC 的支持,需要 Manager、Provider 和Consumer 3 种软件模块,通过标准接口进行访问。其中,Manager为基础支撑模块,在支持包中统一提供,不需要进行定制与修改,Provider、Consumer 为参考实现,在支持包中提供相应的开发例程。OGDC所有模块采用STL的C++实现,可以支持多种操作系统平台,并同时支持服务器和客户端的访问。

  OGDC 的重点是 Provider 模块的实现,Consumer依据业务应用方向的各种各样的实现形态依赖于 Provider 提供的统一接口。Provider 由 GIS 厂商或数据库厂商进行开发,并以标准动态库的形式提供,一般以.odx 为扩展名。Provider 中必须提供DataSource、Dataset、Recordset、Spatial-ReferenceSystem和Metadata的对象类及其接口的实现。

  OGDC 接口层的数据提供者管理器(OgdcProviderManager)是OGDC应用的总的入口,它通过加载数据提供者(Provider)动态库的接口扫描指定路径,以自动加载数据提供者动态库,构成数据提供者集合(m_providers),集合中的每一个 Provider 均提供 CreateOgdcDataSource()接口,通过调用 CreateOgdcDataSource()接口,可以创建出不同的数据源实例对象。

  Consumer层可以是各种形态的应用程序(目前支持 C、C++、.NET、Java),通过枚举数据提供者管理器中的数据提供者集合,加载 Provider 并调用CreateOgdcDataSource()接口创建出 DataSource 实例对象,即可通过Dataset和Recordset对象,进行空间数据的读写操作。

  5.4 实践与应用

  OGDC SDK 目前已发布 1.0 版本,开放了 OGDC 标准、接口和 SDK,并提供开源的 Provider 和Consumer例程程序,为GIS软件厂商及数据库厂商实现空间数据提供程序(Provider),以及应用厂商使用OGDC开发GIS相关应用提供参考。以OGDC标准接口,GIS应用开发商可以用同样的编程接口来访问不同的空间数据库,屏蔽具体数据存储结构的差异,实现异构和分布式空间数据库的互联互访。

  国产 GIS 平台软件 SuperMap 的组件、桌面和GIS服务器软件均对OGDC提供支持,通过空间数据库引擎技术(SuperMap SDX+),SuperMap平台软件将OGDC作为数据来源的一类进行支持,可以直接打开 OGDC 的数据进行浏览、查询、编辑等操作。SuperMap平台软件中调用OGDC的层次架构图如图3所示。

  本文以 SuperMap 提供的通用 GIS 桌面产品(SuperMap Deskpro .NET)为例进行说明,SuperMap Deskpro .NET中实现了OGDC Consumer层,可以加载并支持第三方提供的 OGDC Provider。以BeyonDB(中科院地理所自主研发的分布式空间数据库软件[22])为例,BeyonDB 提供了 OGDCProvider动态库,将该动态库拷贝到指定路径后启动 SuperMap Deskpro .NET 即可通过 OGDC 接口访问存储在BeyonDB中的空间数据,实现空间数据的浏览、叠加、查询、分析等功能,实现效果如图4所示。

6 结语

  随着地理信息软件技术的不断发展,空间数据库存取出现过多种方式,如:厂商独立API、外挂式系统、FDO、OGDC、SuperMap SDX +和 SuperMap Objects空间对象等。OGDC是解决现阶段的多源、异构、分布式海量空间数据无缝集成问题的有效手段,该规范已得到国内多个GIS厂商和数据库厂商的支持,接口的规范化和标准化将对GIS的发展起到重要的推动作用。本研究结合实际应用设计了OGDC的技术架构,并实现了OGDC的对象模型及接口,后续研究工作中,还需要针对3D对象和多媒体对象进行对象模型的扩展,并完善空间数据的操作算子及处理算法。

参考文献:

  [1] 李新通,何建邦.GIS 互操作与 OGC 规范[J].地理信息世界,2003(5):23-28.

  [2] 张明波,申排伟,陆锋,等.空间数据引擎关键技术与应用分析[J].地球信息科学,2004,6(4):80-84.

  [3] 崔铁军.地理空间数据库原理[M].北京:科学出版社,2007.

  [4] 廖湖声,王晋强,郑玉明,等.多数据源空间数据库引擎的研究与实现[J].计算机应用研究,2004(2):138-140.

  [5] 马照亭,潘懋,林晨,等.多源空间数据的共享与集成模式研究[J].计算机工程与应用,2002(24):31-34.

  [6] 崔希民,刘清旺,谢传节,等.基于GML的多源异构空间数据集成和互操作[J].矿山测量,2003(3):47-49.

  [7] Arctur D, Hair D, Timson G, et al. Issues and prospects for the next generation of the spatial data transfer standard (SDTS)[J]. International Journal of Geographical Information Science, 1998,12(4):403-425.

  [8] 宋关福,钟耳顺,刘纪远,等.多源空间数据无缝集成研究[J].地理科学进展,2000,19(2):110-115.

  [9] 高昂,陈荣国,赵彦庆,等.空间数据访问集成与分布式空间数据源对象查询[J]. 地球信息科学学报,2010,12(4): 532-540.

  [10] 周芹,李绍俊,宋关福,等.基于Oracle Spatial的空间数据库缓存的关键技术[J].地球信息科学,2007,9(3):40-44.

  [11] 金宝轩.网格环境下的异构空间数据库集成技术[J].计算机工程,2008(5):74-76.

  [12] 陈楠.多源空间数据集成的技术难点分析和解决策略[J].计算机应用研究,2005(10):206-208.

  [13] 龚健雅.空间数据库管理系统的概念与发展趋势[J].测绘科学,2001,26(3):4-9.

  [14] Microsoft. Microsoft ODBC 3.0 Programmer’s Reference and SDK Guide 程序员参考及开发人员指南[M],1999.

  [15] 诸云强,孙九林,廖顺宝,等.地球系统科学数据共享研究与实践[J].地球信息科学学报,2010,12(1):1-8.

作者简介:李绍俊(1978-),男,山东即墨人,博士生,研究方向为GIS软件技术研究。