基于OGR的交换格式数据驱动的设计与实现
2011-11-14冯克忠
徐 杨,孙 群,冯克忠,于 乐
(1.信息工程大学测绘学院,河南郑州450052;2.测绘信息中心,北京100088)
基于OGR的交换格式数据驱动的设计与实现
徐 杨1,2,孙 群1,冯克忠2,于 乐2
(1.信息工程大学测绘学院,河南郑州450052;2.测绘信息中心,北京100088)
交换格式是测绘行业部门为实现与其他行业部门进行信息交换与共享而设计的一种明码文件格式,需要根据不同的GIS软件开发不同的处理程序进行数据处理。针对这一情况,提出基于OGR库开发一个交换格式数据驱动,实现交换格式数据与商用GIS数据格式之间的自由转换,以提高交换格式数据使用的效率,降低数据使用成本,扩大数据使用的范围与影响。
OGR;OGC;交换格式;BeyonDB
一、概 述
交换格式通常是行业部门为了实现与其他行业部门进行信息交换或共享而设计的一种明码文件格式,这种交换格式通常在行业内部也有大量的应用。本文所指的交换格式为测绘部门矢量数据供应的主要形式,在多个部门与单位中有着广泛的应用。它不能够直接在现有的商用GIS软件及数据分析、应用软件中使用,须首先开发格式转换、导入程序,将交换格式数据转换为GIS软件所支持的数据格式,或者录入到GIS软件所支持的数据库系统中,然后才能使用交换格式数据。这一方式的主要缺点在于所开发的数据转换、入库程序具有很强的针对性,只适用于某一特定的GIS软件,当数据应用在其他GIS软件中时,还需要再开发针对其他GIS软件的数据转换、入库程序。而在实际应用中,交换格式数据通常会在多个GIS软件平台中应用。针对这一情况,本文提出开发一个基于OGR库的交换格式数据驱动,实现交换格式与各种商用GIS软件或数据分析应用软件的自由转换,而不需要再进行额外的格式转换开发。由于采用这种方式不需要用户学习交换格式,因此降低了数据使用的成本,提高了数据应用的效率,从而扩大了交换格式数据使用的范围与影响。
二、OGR库
GDAL(geospatial data abstraction library)是一个基于X/MIT许可协议的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式,并拥有一系列命令行工具用于数据转换和处理。OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。
有很多著名的GIS产品都使用了GDAL/OGR库,包括Esri的 ArcGIS、Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库,Linux上的地理空间数据管理系统可以方便地实现对矢量和栅格文件数据的支持。
OGR提供了对多种矢量数据格式的读写支持,包括:Esri Shapefile、S-57、SDTS、PostGIS、Oracle Spatial、MapInfo MID/MIF、MapInfo TAB。
三、交换格式地理几何数据转换
OGR库的地理几何数据模型采用的是开放地理信息联盟(Open Geospatial Consortium,OGC)所制定的简单要素模型中对于几何模型的设计,如图1所示。OGC成立于1994年,是一个由GIS厂商、计算机厂商、数据库厂商、数据集成商、电信公司、数据库开发商、美国联邦机构、标准组织以及学术界等部门代表组成的公益性行业协会,现有包括软件公司、政府部门和大专院校在内的成员220多个。其所制定的简单要素模型目前已在某种程度上成为数据模型设计的标准,具有很强的通用性和广泛的适用性。
交换格式的地理几何数据模型设计如图2所示。通过对图1、图2的比较,可以发现两者对于地理几何数据的定义存在着很大的差异性,这也是地理几何数据转换过程中需要解决的难点。
图1 OGC地理几何数据模型
图2 交换格式地理几何数据模型
两种几何数据模型定义的主要差异体现在以下两个方面。
1.几何数据存储差异
交换格式对于点对象的定义有两种:entity point为实体点,与 OGR中的 point是一样的;direction point指的是有向点,用于指定地理实体在屏幕或纸质图上符号化显示时符号放置的方向,OGR中没有对应的有向点定义。
实体点在坐标文件中的存储方式为“实体点坐标+0 0”;有向点在坐标文件中的存储方式为“定位点坐标+方向点坐标”。在交换格式数据驱动编写过程中,需要扩展OGRFeature的定义,增加方向点坐标项,以供GIS软件进行符号化显示时使用。
2.环数据存储结构差异
交换格式中对于环状面中各个面的顺逆时针方向没有要求,只是固定地认为第一个多边形为外包多边形,其他都为第一个多边形的内部多边形。而OGR库通过顺、逆时针进行多边形类型判断,如果多边形组中顺时针或逆时针多边形个数为1,其余为多个时,则该多边形为环岛;否则为复合多边形。
因此,在交换格式驱动编写过程中,须判断所读到的第一个多边形的方向,并将其余多边形设为相逆方向存储。
四、交换格式地理数据转换
交换格式数据按要素类分层,每一类要素组成一个要素层,存储在一组文件中:以SX文件存储要素类的属性信息;以ZB文件存储要素类的地理信息;以TP文件存储要素间的拓扑信息;以MS文件存储要素类的描述信息。要素类中的所有点、线、面要素存储在同一文件中,以P、L、A标志区分,在每个类型标志后注明实际要素个数。其大致格式描述如下
OGR库则认为所操作的数据源符合简单要素模型规范要求。一个数据文件只存储一种几何类型的数据,即对应一个FeatureLayer,其类型可以由FeatureLayer的类型来获得,要素个数等信息也可以由FeatureLayer的属性信息来获得。其数据读取方式如下
由上可见,交换格式地理数据组织方式与OGR对数据源的要求不一致:交换格式中每个要素层所包含的几何要素为点、线、面3类,即一个交换格式文件要对应其他格式数据的3层;OGR库则认为一个要素层中的所有要素都为同一几何类型,所读取的数据文件结束即为当前几何类型的要素读取完毕。因此,要实现基于OGR的交换格式驱动,就必须进行判断,确定当前几何类型的要素读取是否结束,而不能单独依靠文件结束标志来判断当前几何类型要素是否读取完毕。此外,所编写的交换格式驱动应该能够真正地集成在OGR库中,以保证库的对外接口不变,不受OGR库版本更新以及接口变动的影响。交换格式地理数据转换流程如图3所示。
图3 交换格式驱动中地理数据转换流程
五、交换格式数据入库程序
BeyonDB数据库是面向国家空间信息基础设施建设的重大需求所研发的具有自主知识产权、企业级、跨平台、分布式、高安全的地理空间数据库管理系统平台。数据库能够在统一的数据库集成管理平台上进行空间数据、属性数据的一体化管理,对矢量数据、栅格数据进行一体化空间展现与处理。
基于OGR库的交换格式驱动主要就是用来帮助BeyonDB数据库实现对交换格式数据的支持。基于交换格式驱动实现地理实体的空间信息转换,通过 BeyonDB.NET Provider和 OpenAPI接口对BeyonDB中的各个元数据表进行操作,很好地设计与实现了BeyonDB对交换格式的支持(如图4所示)。
图4 交换格式入库功能的实现
六、结束语
基于OGR库的交换格式驱动通过对OGR库进行扩展,实现了交换格式数据与商用GIS数据格式之间的转换,而无需进行额外的程序开发,减轻了交换格式对用户的要求,降低了数据使用成本,扩展了数据使用的领域,提高了数据使用的效率与影响。在此基础上所开发的交换格式数据入库与提取程序,丰富了BeyonDB数据库所支持的空间数据种类,为BeyonDB在测绘行业内部的推广使用打下了坚实的基础。
[1] 易善桢,李琦,承继成.空间信息的共享与互操作[J].测绘通报,2000(8):17-19.
[2] 孙立坚,朱翊,刘纪平,等.GIS数据交换理论与系统架构的研究[J].测绘通报,2007(9):57-60.
[3] 孔毅,张志强,赵崇亮.基于ArcGIS的CAD数据入库研究[J].测绘通报,2010(5):58-60.
[4] 陈军,王东华,商瑶玲,等.国家1∶50 000数据库更新工程总体设计研究与技术创新[J].测绘学报,2010,39(1):11-14.
[5] Open Geospatial Consortium.OpenGIS Implementation Specification for Geographic Information-Simple feature access-Part 1:Common architecture(V1.2.0)[S].[S.l.]:Open Geospatial Consortium Inc,2006.
[6] Open Geospatial Consortium.OpenGIS Implementation Specification for Geographic Information-Simple feature access-Part 2:SQL option(V1.2.0)[S].[S.l.]:Open Geospatial Consortium Inc,2006.
Design and Implementation of an Interchange Format Driver Based on OGR
XU Yang,SUN Qun,FENG Kezhong,YU Le
0494-0911(2011)06-0054-03
P208
B
2010-12-14
徐 杨(1979—),男,江苏盐城人,博士生,工程师,主要从事地理空间数据库技术与应用研究。