|
1引言
地理信息科学经过多年的发展在各政府部门和研究机构以及其他相关单位已经积累了大量的空间数据,但是这些部门都是采用不同软件厂商或自己开发的地理信息系统软件来管理和运用这些数据,这样造成数据和操作很难实现共享。因为各软件厂商采用的不同数据结构来存储空间数据。CML规范的推出很好的解决了空间数据格式不同造成不能共享的问题。正是由于GML的优秀性能和特点,引来大批的学者投入到GML空间数据的相关研究当中来,笔者认为,对于所有有关GML空间数据的规范的研究,不管是它的存储、索引或是查询等等研究工作,第一步要做的工作就研究GML规范。因此本文就此对GMI规范进行了研究。研究了CML规范的发展历程,对它的数据模型进行了深入研究分析,探讨了它的应用模式以及建模规则,对规范的不足之处给予了总结,展望了GML发展前景,最后针对GML规范提出了作者自己的见解和建议。
2 GML发展
OGC先后推出了3个版本的CML,GML 1.0版本于2000年4月正式推出,GML 2.0版本于2001年2月推出,GML 2.12版本于2002年9月推出,2003年l月推出GML 3.0版本。
GML 1.0: GML 1.0版是基于XML DTD和RDF,这是一种虽然笨拙但很有用的结合。DTD历史悠久并被广泛采用,但是不支持类型继承、基本语义模型和名字空间。RDF则较少使用,却支持名字空间、分布式Schema的综合、类型继承和一个简单的语义模型。GML 1.0以以下3种Profile发布给用户:
Profile 1:适用于单纯基于DTD的解决方案,而不准备开发自己的应用DTD,或期望获得的数据依赖于已有的DTD集的情况。Profile 1需要用到GML特征和GML几何DTD。
Profile 2:适用于单纯基于DTD的解决方案,但准备开发自己的应用DTD,或期望获得用参考DTD编码的数据情况。Profile 2要求使用者利用GML的几何DTD创建一个专用的特征DTD。
Profile 3:适用于那些准备使用RDF和RDF Schema的开发者。这些开发者需要对地理空间类型结构有更强控制。Profile 3要求使用者利用GML RDF Schema的定义创建一个专用的RDF Schema说明,同时也允许用户使用以某种方式从RDF Schema导出的DTD或DTD元素。
GML 2.X:GML最大的进步是推出了完全基于Schema的GML数据结构模型。近年来,XML Schema已发展得非常成熟,它同时支持名字空间、分布式Schema的综合、类型继承,并已出现大量支持XML Schema的工具和解译器。因此,GML 2.X版能够享受Schema带来的好处,使GML技术更加灵活,越来越多的用户已开始使用GML 2.X版。2.X提供给用户的不是3个Profile而是3种基本的模式。feature.xsd、geometry.xsd和xlinks.xsd三个基本XML Schema。任何基于CML的应用都在这三个模式的基础上进行扩展。feature.xsd定义了基本的要素/属性模型。GMI以要素(Feature)为描述空间空间数据的基本单位,而地物特征又由非空间属性和空间属性组成。Geometry.xsd提供了详细的基本空间几何组件定义。GML的Geometry Schema既包含了用于抽象几何元素和具体点、线、多边形空间几何元素的类型定义,也包含了复杂要素类型的定义。Xlinks.xsd提供了用于实现链接功能的XLink属性。该Schema中定义了前两个基本schema中要用到的链接属性。通过这些链接属性,GMIJ能够将位于不同数据源的地物特征,通过链接的方式组织在一个文件中。他们分别属于对应的命名空间,这三个模式相当于提供给用户3个基本的类。用户可以声明或定义自己的类型,用以命名和区分重要的地物特征和地物集合特征。
GML3.X GML 3.0是对GML 2.X的扩充,并目向后兼容。Schema集合的组织具有了模块化特点,即用户能够有选择地使用所需部分,减化和缩小了执行的尺寸,提供了面向WEB应用、基于对象的地理数据描述语击。此外,3.0版增加了对复杂的几何实体、拓扑、空间参照系统、元数据、时问特征和动态数据等的支持,使其更加适合描述现实世界问题,如基于位置服务的行程安排和高速公路设计等。GML 3.0版新增的主要特性包括:
① 增加了复杂的空间几何元索,如曲线、表面、实体等,允许使用几何元素集合;
② 支持拓扑的存储,可表示定向的节点、边、面和三维实体;
③ 引入了空间参照系统,给出了描述空间系统的框架,并预定义了许多公用方案;
④ 提供建立元数据与特征(属性)间联系的易于扩充的框架机制;
⑤ 增加了时间特征和描述移动物体的能力,具有标准的年、月、日、时、分、秒模式和位置、速度、方位、加速度等动态特征;
⑥ GML的扩展机制。
GML作为一个“开放的”标准,并没有强制采用它的用户使用确定的XML标识,而是提供了一套基本的几何对象tag、公共的数据模型,以及采用自建和共享应用Schema的机制。所有兼容CML的系统,必须使用GML提供的几何地物tag来表示地物特征的几何属性,但可以通过限制、扩展等机制来创建自己的应用Schema。

3 GML的数据模型
因为GML3.0版本提出了许多新的模型并向下兼容,所以本文就只对GML3.X的数据模型进行的讨论。这是必要的也是充分的。CML3.0提供了一套核心模式和一个基于对象/属性(Object/properties)或要素/属性(Features/ properties)的简单语义模型,大大增加了GML描述地理空间数据的能力。同以前的版本比较,GML3.0提供了更加丰富的模式组件。包括要素模式、几何模式、拓扑模式、时态模式、坐标系统模式、覆盖模式、观测模式、和数值模式等。下面分别讨论。
3.1基本模式(gmlbase)
Gmlhase模式定义了CML类分层结构的根类型,并提供GML的公共对象gml_GML。所有的GML对象都必须从GML的根类型(gml:AbstractGMLType)演化而来。这就告诉我们,所有的对象都必须服从GML的类/属性模型。每个GML对象由于继承了:AbstractGMLType类型而具有了下列可选的属性:gml:name(表示对象的一个描述名称);gml:description(表示关于对象的一种自由文本形式的描述);gml:metaDataProperty(包括一个元数据的属性包(package),它包括元数据属性,此元数据数据包的默认名是gml:MetaInfo)。
3.2要素模式(feature.xsd)
要素模式feature.xsd,为创建GML要素和要素集合提供了一个框架。一个GML数据集往往是一个要素集合。要素模式包括几何模式(geometry.xsd)。GML模型中的要素是现实世界的对象或概念,并提供一个元素(要素类型)和描述该类型并被编码成元素的特性关联集。要素应用模式为某一特定的应用领域或用户群定义地理要素和要素集合。采用GML来描述要素,必须首先设计其数据模式(schema)和结构。GMLSchelna是对GML文档结构的抽象描述,定义文档中元素和属性的基本数据类型如整型、日期类型等,以及由多种数据类型组合而成的复杂类型,同时允许对元素、属性、数据类型定义的继承,其目的在于一方面定义数据的结构,以供应用程序参照这个模式来生成数据文档;另一方面利用在模式中指定的数据类型,应用程序可以检查文档的有效性,保证文档是有效的,且保证其中的信息和预期的数据类型相匹配。当没有限制要素其他类型的包含要求时GML的应用可以用gml:FeatureColleetion包含在应用模式中定义的要素。GML的应用模式可以定义专用的要素集合类型和全局元素来作为描述该应用领域的特定要素集合文档的根元素,该应用领域要求排除那些没有在该领域中定义的要素。
3.3几何模式(geometry.xsd)
GML3.0版本提供了丰富的几何定义模型,而GML2.x版本中只给出了一个几何定义模型(geometry.xsd),GML3.0共给出了5个几何模型:geometryBbasic0d1d.xsd geometryBasic2d.xsd、geometryPrimitives.xsd、geometryAggregates.xsd和geometryComplexes.xsd,其中geomeryBasic0dld.xsd的部分类型和元素是为了兼容以前的GML2.x版本,geometryBasic2d.xsd、geometryAggregates.xsd、geometryPrimitives.xsd、geometryComplex.xsd完全是由新的类型和元素组成。GML 2.X(如图2-3)的几何模式支持的几何基元仅有:Point、LineString、LinearRing、Box、Polygon及相应的聚合类型:MultiPoint、MultiLineString、MultiPolygon。GML 3.0支持包括、points、curves、surfaces及solids在内的三维几何模型,在其几何模式中增加许多新的类型,包括:Arc、Circle、CubicSpline、Ring、OrientableCurve、Orientablesurface及solid,还有聚合类型如MultiPoint、MultiCurve、MultiSurface、MultiSolid和复合类型如CompositeCurve、CompositeSurface、CompositeSolid等。一个几何元素可有一个标识属性("gml:id"),一个名字(属性"name")和一个描述(属性"description")。它可与-空间参考系联系起来(属性"srsName")。
几何模型分为基本几何(primitive geometry)、聚合几何(aggregate geometries)、复杂几何(complex geometries)和组合几何(composite geometries)。
①基本几何是开的,就是说它们不包含边界点;曲线(curves)不包含终点,面(surfaces)不包含边界曲线,体(solids)不包含边界面。
②聚合几何是几何元素的任意聚合。它们被假定为没有任何附加的内部结构,是许多指定类型的几何的聚合。应用模式可按自己的表达方式为需要多个几何对象描述的要素使用聚合。
③复杂几何是基本几何的闭集,即它们包含边界。
④组合几何可以看作是基本几何和复杂几何,如CompositeCurve、CompositeSurface和CompositeSolid。
3.4拓扑模式(Topology. xsd)
GML对空间对象的拓扑描述是GML3.0新增的一个内容,使得GML能更真实的描述现实地理世界,因为在现实地理世界中,每个地理空间对象并不是孤立的存在,彼此之间总是存在着这样或那样的关系。基本拓扑对象按空间维数可以划分为四类:节点(Node)、边(Edge)、面(Face)和拓扑实体(Toposolid),空间拓扑关系是由这些基本拓扑对象和它们之间的关系来描述的,基本拓扑对象表达的对应的基本几何对象是:Point、Curve、Surface和Solid。
基本拓扑对象之间的拓扑关系描述主要有:边的公共结点、面的公共边以及三维实体的公共面等。
3.5时态模式(TemPoralSchema)
时态模式扩展了GML的核心元素,使其包括描述地理数据时态特征的元素。它提供一种框架用于描述动态要素的时间变化。用XML模式或一个要素集合的生命周期来表达这些结构。时态模式由两个相关的方案组成:主方案和一个更为专门化的方案。前者提供了诸如原型的基本元素,是用来表示时刻和时段的;后者定义了表示动态要素的类型。时态模式包括描述几何和拓扑、时态参考系统和地理数据时态特征的组件。基本的时空模型致力于提供要素层(feature-level)和属性层(attribute-level)的时间戳(time:tal-nping);并且支持跟踪移动目标。
3.6层模式(CoverageSchema)
一个层是从一个时空域到一个值域的映射,后者即为属性值集合。值域可以是一个包含离散列表、整数或浮点值和多维矢量空间的任意集合。一个层是作为一个GML要素实现的。因此,我们可以考虑一个“温度分布要素”,或一个“遥感影像要素”,或一个“土壤分布要素”。层在GML3.1.0中有两个支持模式:coverage.xsd和ghds.xsd。Coverages.xsd提供了基本的GML3.10覆盖模型。Grids.xsd提供了用于描述网格化的覆盖的网格几何结构,它可用于其它应用。由于篇幅和时间的限制,本文就不在此讨论其它模式。
4 GML应用模式的建模规则
GML核心模式定义了构建地理要素的基本组件,而没有也不可能提供具体要素如道路、河流、建筑物等的定义,GML的作用是提供一种机制让用户来定义这些具体的地理要素。使用GML模型及其模式组件,用户可以在自己的应用模式(GML ApplicationSchema)中定义其问题领域中的地理要素。用户在应用模式开发过程中,除了要遵循GML语义模型和句法规则外,还要考虑一些技术性问题。
4.1模式的引用
用户在开发自己的应用模式时,需要引用GML的核心模式,有时需要引用已有的应用模式,XMLSchema提供了include和import两个元素来实现模式之间的引用。当引用相同命名空间的模式时,使用indude元素;当引用不同命名空间的模式时,使用import元素。
4.2要素(集)的定义及元素声明
应用模式的所有地理要素(集)必须在该模式中被声明为全局元素,即这些地理要素必须是XML模式<schema>元素的直接子元素。这样的全局元素的内容模型必须直接或间接地从gml:AbstractFeatureType(gml:AbstractFeatureCollectionType)派生。
4.3几何类型定义
定义新的几何类型时,必须为全局XML元素,可以从基础几何类型或gml:AbstractGeometryType导出,建议避免从gml:AbstractGeometryType直接导出,因为这样做只能提供非常有限的信息给GML处理软件,尽可能选择最具体的几何类型。例如要定义某种新的曲线类型,用户可以从gml:AbstractCurveTyPe导出,或从gml:AbstractCurveType某一具体的子类如gml:ArcStringType导出。
4.4复杂要素建模
复杂要素是由多个要素组成的,如一个城市包括学校、车站、政府大楼、商业地和体育馆等设施,这些就组成了城市的基本要素。在GML建模中,可以将这类要素建模为复杂要素(包含各成员要素),也可以将这类要素建模为一个具有复杂几何(complex geometry)的简单要素。选择哪种建模方式,取决于应用的目的。
4.5空间信息的组织
地理要素通常都有几何属性和拓扑属性,在地理要素建模时,这两种空间信息的表达有两种方式:一是几何属性和拓扑属性分开表达,二是几何属性嵌入拓扑属性。在具体建模时,选择哪种表达方式,取决于应用的目的。如果建模的目的只是为了制图,那么选择第一种组织方式比较有利,因为应用程序能够比较容易地提取出几何数据。如果应用建模的目的是要实现大量的空间查询、空间分析,那么选择第二种组织方式比较有利,因为应用程序比较容易地分析拓扑数据,并将其与几何数据相关联。对于要素集的拓扑组织,可以将要素集的拓扑基元连同其几何实现提取出来,组织为TopoComplex,然后成员要素可以引用相应的拓扑和几何基元。
5 GML规范的缺点与相关意见以及GML发展前景展望
OGC推出GML的目的如下:
(1)提供适用于Internet环境的空间信息编码方式,用于数据传输和存储;
(2)能够扩展,用以支持对空间信息的多样化需求,不管是用于对空间信息的单纯描述,还是进行更深层次的分析使用;
(3)以一种可扩展和标准化的方式为基于Web的GIS建立良好的基础;
(4)允许对地理空间数据进行高效率编码;
(5)提供了一种容易理解的空间信息和空间关联的编码方式;
(6)实现空间和非空间数据的内容和表现形式的分离;
(7)易于将空间信息和非空间信息进行整合;
(8)易于将空间几何元素与其它空间或非空间元素连结起来;
(9)提供一系列公共地理建模对象,从而使各自独立开发的应用之间互操作成为可能。
目前版本的GML虽然提供了许多的模式来解决复杂的问题,在实际的运用中几乎能解决地理信息所面临的所有问题。但是当前的规范还对一些复杂问题的解决没有提供相应的模式,比如:空间三维拓扑、时空拓扑、与GPS和RS结合方面显得不够。希望在以后的版本中能够扩充有关内容的模式:
GML作为一种全新的地理空间数据编码标准,它遵循国际OGC组织推荐规范,该标准的制定是建立在已被大多数组织或团体所接受的公共地理模型基础之上,同时,由于GML内在的可传输型和可访问性使得其对地理空间数据共享具有十分的意义。再者,GML是基于XML的空间数据编码规范,它具有纯文本、自我描述、中立于任何软件厂商、可以在Web浏览器中显示、可以很容易与非空间数据集成等特征。它为空间数据的建模、存储和处理提供了可操作的规范,真正解决地理空间数据的建模存在的问题。目前,GML已经成为事实上的空间数据编码、传输、存储、发布的国际标准,其应用开发已得到了许多系统和软件厂商以及政府机构、学术机构的支持。相信基于GML的GIS将成为下一代GIS的主流。
参考文献:
[1]Geography Markup Language(GML)vl.0, OGC Document Number: 00-029 Date:12-May-2000
[2]Geography Markup Language(GML)2.0 OGC Recommendation Paper, 20 February 2001.
[3]OpenGIS Geography Markup Language(GML) Implementation Specification, version 2.1.2.
[4]《Geography Markup Language(GML) Implementation Specification Version:3.00》,open GIS Consortium. inc 2004.
[5]兰小机,闾国年,姜永发,等.基于GML的空间数据建模研究[J].工程勘察,2004(6)
[6]兰小机.胡川.等/基于Petri网的面向对象型空间数据库概念设计模型[J].大地测量与地球动力学,2007(6) |