一种多源空间数据统一访问模型的实现.doc

上传人:吴起龙 文档编号:1592114 上传时间:2018-12-26 格式:DOC 页数:14 大小:21.62KB
返回 下载 相关 举报
一种多源空间数据统一访问模型的实现.doc_第1页
第1页 / 共14页
一种多源空间数据统一访问模型的实现.doc_第2页
第2页 / 共14页
一种多源空间数据统一访问模型的实现.doc_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一种多源空间数据统一访问模型的实现.doc》由会员分享,可在线阅读,更多相关《一种多源空间数据统一访问模型的实现.doc(14页珍藏版)》请在三一文库上搜索。

1、一种多源空间数据统一访问模型的实现关 键 词:多源空间数据; SFS; 矢栅一体化; 统一访问模型 XIE Bin1,2, YU Le1, L?a Yang1, ZHANG Deng|rong1,2 (Department of Earth Sciences, Zhejiang University, Hangzhou 310027, China; 2. Institute of Remote Sensing and Earth Sciences, Hangzhou Normal University, Hangzhou 310036, China) An implementation of

2、multisource spatial data uniform access model Journal of Zhejiang University(Science Edition), 2011,38(2):223-228 Abstract: Because of the different data model of the two major types of spatial data, namely vector and raster, different access approaches are always required to using both vector and r

3、aster layers in applications. How to use a uniform approach to access these two types of data is one of the key issues in sharing and interoperating spatial data. An OGC SFS|complied model for vectors by expanding “feature” in SFS as “Geometry|Attribute feature (GAFeature)” and a raster model “RSRas

4、ter” for rasters are proposed. Two design patterns called “provider pattern” and “bridge pattern” are introduced to access and manage datasets from local files, database, WCS, WFS etc in a uniform way. Experimental result shows the capability of our proposed uniform access model. ?Key Words: multiso

5、urce spatial data; SFS; vector and raster integration; uniform access model 地理信息系统目前已得到迅速发展和广泛应用,但空间数据的多源性为数据综合利用和数据共享带来不便1.要充分利用已有的数据资源,实现空间数据共享,必须解决多种格式的地理信息数据集成这一问题.早期传统的空间数据共享是直接读取GIS厂商公开的中间数据格式,如ArcInfo的E00,MapInfo的MIF等,用户再转换成自己的格式.但是不同数据格式之间数据模型不完全相同,因此转换后会出现数据或拓扑关系丢失等错误.OGC为数据互操作制定了统一的规范,从而使得

6、一个系统同时支持不同的空间数据格式成为可能.而且基于XML的OGC GML2作为一种通用的标准来描述数据,且独立于平台和开发语言,得到了许多GIS厂商的支持,这也为基于Web Service的空间数据互操作技术提供了有效的数据交换格式.国内外的学者在基于GML 的互操作方面做了不少工作,比如:文献3提出了基于WFS的中间件,数据源用WFS包装,GML成为了交互的数据格式;文献4提出了基于GML|XML多源异构空间数据互操作引擎;文献5则以GML存储和管理所有数据,设计了GML分布式广义空间数据引擎. 然而,GIS空间数据引擎不仅面临着数据源异构或是地理上分布的问题,也要处理矢量和栅格这两种不同

7、的空间数据类型6.无论什么构架的数据引擎,其主要目的都是要屏蔽底层数据源的异构性,为用户提供统一的访问接口.本文在总结了相关研究成果的基础上,主要围绕以下几点开展研究:(1) 深入研究OGC SFS (Simple Feature Specification) 规范,在剖析其层次结构的基础上面向实现目的构建GAFeature矢量数据模型;综合考虑普通栅格图像和遥感图像的特性,提出一种扩展栅格数据模型.(2) 基于GAFeature矢量数据模型和扩展栅格数据模型设计多源空间数据统一访问模型.(3) 结合OGC Web 服务的总体框架以及相关规范,在多源空间数据统一访问模型上设计矢量栅格一体化的操

8、作接口并进行实现,以满足对不同数据源的获取的需要. 1 基于SFS的矢量数据模型 1.1 OGC SFS概述 OGC SFS规定了对点、线、面等简单要素的发布、存储、读取和简单操作,该规范的目的是使得GIS软件设计师在不同的技术下(例如OLE/COM,SQL,CORBA)能够使用这些接口来操作由简单几何要素组成的要素7.SFS是一种分布式计算环境下的且与平台无关的模型,几何基类有点(Point)、线(Curve)、面(Surface)和几何集合(GeometryCollection)这几个子类.每个几何对象都与一个空间参照系统关联,它描述了几何对象的坐标空间(见图1). 图1 SFS中的简单要

9、素对象模型7 Fig.1 Simple feature objects model in SFS 几何实体(Geometry)是整个体系结构的根类,几何实体是一个抽象的(不可实例化)类.可实例化的几何实体子类是存在于二维、三维、四维空间的几何对象,它们分别以Point、LineString、Polygon等命名.二维空间的几何坐标值是(x,y)的点集.三维空间的坐标值可能是(x,y,z)或(x,y,m).四维空间则是(x,y,z,m).z值代表海拔或高程,m值代表度量(measurement).所有几何实体中的坐标必须是同一坐标参照系统,能直接或间接从几何实体中读取坐标值,且必须无歧义地与一个

10、坐标参照系统相?亓?. 1.2 GAFeature矢量数据模型 SFS规范中将几何类(Geometry)与两个参照系统(ReferenceSystem)(包括:空间参照系统、测量参照系统)进行了关联,这意味着也许每个地理要素都具有不同的地理空间参照系,虽然这样灵活性较大,但同一图层下的要素必定有同一空间参照系,因此会增加数据冗余.可以考虑比要素更大粒度的空间数据集,比如图幅、图层或是地图,把图层与空间参照系统关联是比较好的方案,这样属于同一图层的所有要素都可以共享空间参照系统(这将在下面的具体实现中以Map和Layer的形式体现).另外,虽然SFS很好地定义了整个几何实体类的体系结构,但是在具

11、体的实现中,添加对属性信息的支持将使得后续的渲染和管理更加简单.因此,笔者对基于SFS的层次结构进行一些修改(见图2),在原有的Geometry之上增加了更大一层概念的GAFeature,同时增加了AttributeField类,使得GAFeature关联几何、属性两个类,成为与概念相符的矢量数据模型.FeatureDefine和FieldDefine分别为要素属性字段定义对象和所属该要素的字段值定义对象. 图2 基于SFS的GAFeature模型 Fig.2 GAFeature model based on SFS 2 扩展栅格数据模型 栅格数据模型不需要像矢量数据模型那样通过几种几何对象才

12、能表现,它通过连续的像元值来反映所覆盖范围的现象:点实体表示为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实体由聚集在一起的相邻像元结合表示.像元值可以是灰度值、亮度值或是色调值.目前栅格数据格式繁多,如遥感图像领域常用的GeoTiff、HDF|EOS、MrSID、ECW等,以及在其他领域更为通用的JPEG、BMP、PNG等,它们存在着不同的文件描述信息,如可能包含坐标系投影信息和元数据信息等数据. 然而,任何栅格数据都是按某种规则排列的二维或多维矩阵数据块,元数据信息基本是关于栅格的行数、列数、波段数、数据块大小等,因此笔者设计了栅格数据模型(RSRaster)(见图3),

13、包括元数据信息Matedada和波段数据RasterBand.其中Metadata记录了空间参考系统、波段/数据类型、金字塔等级、分块维度等信息.对于RasterBand,利用金字塔结构PyramidLevel和RasterBlock,针对遥感图像具有大数据量的特性进行分层和分块.另外,考虑到栅格结构自身的特点,在处理空间数据时,会有基于点和基于面两种不同的处理方式,并由此会产生解释格网属性值和属性值定位这两方面的不确定性8.为此,可在RasterBlock下分为像素模型(Pixel)和格网模型(Lattice)两种形式. 图3 扩展栅格数据模型 Fig.3 Extended raster d

14、ata model 3 多源空间数据统一访问模型 早期GIS软件将图形数据与属性数据分开来管理,图形数据的管理基本上是基于文件方式,属性数据通过关系型数据库进行管理,通过链接公共的ID将图形与相应的属性链接在一起.空间数据库引擎的出现,一种是以中间件的方式,在关系数据库系统之上对存储在数据库的空间数据进行SQL语句的操作,如ESRI的ARC SDE.另一种则是对关系数据库管理系统底层进行某些改进和扩展,形成空间数据管理的专用模块,如Oracle Spatial.随着Internet的发展,Web成为分布式应用的新平台,Web Service技术的出现,以及OGC Web服务启动项目为空间数据在

15、Web Service下互操作制定了框架和规范.目前主流的GIS软件数据格式等文件形式仍在使用,ARC SDE和Oracle Spatial等空间数据库引擎也有广泛的应用,还包括其他关系型数据库,而Web Service技术及OGC规范进一步将空间数据共享推向Internet环境.如何在异构环境下,以跨平台操作的方式把如此之多的空间数据源都集成起来访问,提供给用户统一的访问接口等问题是亟需解决的. 3.1 Provider访问模式 针对多源数据的异构问题,将OGC WCS、WFS等开放Web Service结合进来,使用Provider模式9对底层异构数据进行访问,并对上层提供统一接口(见图4

16、).它针对不同的层可以指定不同的数据源,例如对MapInfo TAB文件与ESRI Shape文件的操作是完全不同的,各自的数据源访问都继承了统一数据访问接口.如果要增加数据的操作,无需关心具体数据的格式,只要在Provider基类增加相应操作接口.如果要增加对新的数据格式的支持,再增加一个子类继承Provider基类即可,这样充分保证将来对其他数据源的可扩展性. 图4 Provider模型结构 Fig.4 Provider composition 设计时采用了桥接模式(Bridge Pattern)9对多源数据模型进行搭建.桥接模式是设计模式中结 构型模式的一种,它的主要意图是将抽象部分与它

17、的实现部分分离,使它们都可以独立地变化.实施它的动机是当一个抽象可能有多个实现时,用继承来加以实现会将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用.例如矢量和栅格这两类数据模型的数据源有数据库型、文件型、网络服务型、数据集等.如果只是简单定义一个基类DataProvider,再继承出两个子类.VectorProvider和RasterProvider,那么当要访问数据库型空间数据的时候,就要对两个类再实现一次继承,分别为VectorDataBaseProvider和RasterDataBaseProvider,这样便造成了逻辑上的冗余和耦合.因此把空

18、间数据模型这个抽象部分和所有读取数据源的实现部分分离开来,抽象部分和实现部分之间的关系即为桥接关系,两者可以独立地变化,如图5?示. 图5 多源空间数据访问的提供者和桥接模式 Fig.5 Provider and Bridge patterns for multisource spatial data access 图5中DataProvider为抽象部分,是对多源数据访问的抽象,它的子类分为VectorProvider(矢量访问类)、RasterProvider(栅格访问类)、DataProviderCollection(数据集访问类).DataProviderImp就是实现部分,可以具体地

19、看到它实现了矢栅的多源异构访问,它的子类有FileProviderImp(文件型访问类),DataBaseProviderImp(数据库访问类)、WebServiceProviderImp(Web Service访问类).其中FileProviderImp被各类矢量栅格文件格式的访问类继承,如ShapeFile格式、GML格式、BMP格式等.DataBaseProviderImp则是被多种数据库管理系统的访问类继承,WebServiceProviderImp则被WCS,WFS类继承. 使用桥接模式的好处是显而易见的,类的抽象部分和实现部分都可以通过生成子类的方法加以扩充,使得对不同的抽象接口和

20、实现部分进行组合.比如当前要增加对存放GPS坐标点的关系数据库MySQL进行访问,只要在DataBaseProviderImp下增加一子类MySQL即可,对客户不会产生影响. 3.2 矢量栅格数据模型与Provider的结合 矢量和栅格数据模型各有优缺点,因此,实际上具体的空间数据模型大都采用二者结合的方式来表示.由于多源数据对于应用层是不可见的,它们已被抽象为统一的数据模型,因此我们将矢量栅格数据模型与多源数据统一访问器进行结合(见图6). 图层(layer)是对拥有某种共同特性的空间对象的集合.通过Layer类可对这些对象进行操作,一般包括查询、修改、显示等操作.另外,Layer与Data

21、Provider是一种依赖关系,即图层的变化有可能会改变数据统一访问类的变化,如在用户对图层进行编辑的情况下,图层所属的数据会发生改变.ProviderConfiguration是用于对DataProvider进行配置,如指定默认的数据访问器.DataProvider分为VectorProvider、RasterProvider和DataProviderCollection.在VectorProvider中,定义了矢量要素模型.而RasterProvider中,定义了栅格模型.在DataProviderCollection中定义了数据统一访问类的数组容器,这样使得模型与访问类一一对应. 图6

22、数据模型与多数据源统一访问器 Fig.6 Multisource spatial data unified access framework 4 实 验 统一访问模型在实现当中根据前面构建的模型框架,将设计的类按照包含、调用、依赖等关系进行组织安排所得出.主要有Map类(地图)、Layer类(图层)、DataProvider类(数据提供)、SpatialMode类(空间模型)和CoordinateSystem类(空间参照系统),其他辅助类有SpatialIndex类(空间索引)、Screen类(屏幕投影转换)以及Render类(渲染)等. 下面以WFS访问为例对底层的数据源访问、图层管理、地图

23、管理等几个对象的交互关系进行叙述(流程如图7所示). 图7 WFS访问流程 Fig.7 Access process for WFS 当用户想加载一个WFS图层时,将传递给引擎一个http地址,此地址包括要访问的服务名称、访问的Web Services接口、访问的图层名称、访问的GML版本等信息.目前调用的WFS是通过开源软件MapServer搭建的,它利用CGI对OGC的各种Web服务进行封装,因此调用WFS的地址可能是如下类型:“http:/localhost/cgi|bin/mapserv.exe?map=/ms4w/apps/gmap/htdocs/gmap75_wfs.map&ver

24、sion=1.0.0&REQUEST=getfea-ture&TYPENAME=park&service=wfs&out-putFormat=GML3”.可以看到服务名称为wfs,请求方法为getfeature,图层名称为park,输出格式为GML3.0. 引擎接收到http地址后,地址由地图模块传给空间模型模块,空间模型模块会调用相应的空间数据提供类,这里为WFSProvider.WFSProvider封装了Win32 Internet 扩展接口WinINet,它提供了TCP/IP通信的API.WFS返回的是GML数据,当前返回版本为3.0.WFSProvider得到GML数据进行解析,这里

25、采用FirstObject公司开发的开源XML工具CMarkup,这是一个不需要任何外部的XML组件,并且对于文档只维持了一个字符串以及一个总计小于字符串内存大小的索引数组.WFSProvider将GML解析完成后的数据保存在矢量数据模型中,注意到SFS与GML均为OGC定义的规范,GML的数据类型是完全遵循SFS的,因此这使得空间数据互操作变得简单. 异构的空间数据被抽象为统一的空间数据模型后,将传递给上层模块进行可视化、查询等操作,这里则是直接创建地理图层,将地理数据与图层进行关联.之后创建好的图层就可以加入到地图中,交由地图管理,最后是用户需要的直观的显示.图层加载完毕后,地图重新将图层

26、列表的图层进行绘制,当然在绘制前会将图层的投影信息转换到当前的投影,以便正确显示结果. 栅格数据调用流程与上述WFS调用方法类似,不同的就是所用的Provider.通过创建栅格图层,并将数据提供类与图层关联,再将图层加入到地图模块中,最后进行地图重绘.调用结果如图8(a)所示.考虑到跨平台环境操作的问题,将多源统一访问模型实现时封装为COM组件,COM封装成dll进行注册,在Web工程里只需加载该dll即可对COM组件进行调用.为了方便Web端调用,COM接口屏蔽了复杂的Map、Layer、DataProvider等类之间的关系,封装了这些调用步骤,只暴露相应一个接口供客户调用:先实例化一个C

27、OM对象vrMap,并进行初始化操作,调用函数AddRasterLayer和AddWFSLayer,两个函数分别实现对栅格数据源的调用和WFS数据源的调用,并被加载到地图对象中(如图8(b)所示). 图8 测试结果 Fig. 8 Test result 5 总 结 本文设计了基于OGC SFS及扩展栅格数据结构的多源空间数据统一访问模型.其中,矢量数据模型采用OGC的SFS进行搭建,确保了矢量数据的互操作无缝进行,同时在实现时进行了适当的改进,组织为GAFeature矢量数据模型,使它更好地与其他模块交互.搭建了适合描述遥感图像的扩展栅格数据模型,实现了矢量栅格数据一体化操作.另外,采用Provider模式和桥接模式对多源数据提供器进行设计和构建,使之具备了良好的对数据源的可扩展性.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1