【关键字】GML;KML;语言规范;转换
【出 处】 2018年 1期
【收 录】中文学术期刊网
【作 者】王志红1,张亦汉2,王成1
【单 位】
【摘 要】 摘要:KML是一种采用XML语法与格式的语言,被Google Earth和Google Map使用,用于描述和保存地理信息。GML从发展开始到现在,内容越变越多,以及更复杂的Schema,对软件开发带来了
摘要:KML是一种采用XML语法与格式的语言,被Google Earth和Google Map使用,用于描述和保存地理信息。GML从发展开始到现在,内容越变越多,以及更复杂的Schema,对软件开发带来了难度。而KML强调的是显示数据,其空间数据的几何属性远没有GML那么复杂。鉴于GML的一些缺陷,KML将成为GML的一个竞争对手。本文介绍了GML和KML的语言规范,以及实现GML向KML转换的方法和示例。由于KML目前所体现出来的商业价值,更多的软件供应商将会投入KML的怀抱。
关键词:GML;KML;语言规范;转换
Abstract: KML,a language that use XML syntax and format,is used for the information describing and geographical feature preserving by Google Earth and Google Map. From the beginning of development to present,content of GML became more and more,and with more complicated schema,that is really a difficulty to software exploitation. But KML being emphasizing on data visualization, whose spatial data geometry attribute is less complicated compared with GML. According to some defect of GML, KML will become a competitor with GML. This article has introduced GML and KML language standards,as well as exchange between them and a demonstration was gave. Because of commercial value of KML at present, more software vendors will embrace into KML.
Key words:GML; KML; Language specification; Conversion
0 引言
Google Earth诞生于2005,它将地球表面的卫星图像和航拍图片结合在一起,形成全景三维的世界地图,该款软件一经推出,便引起了极大的反响。Google Earth的主要优点是提供了全球范围的地理影像数据库,尤其是不少地区拥有了0.6m以上精度的高清影像。Google Earth在全球有着越来越大的影响力,但是其并没有提供足够强大的接口进行二次开发,只提供了基于XML语法格式的KML语言,通过KML 将矢量数据和标记添加到Google Earth客户端进行显示。
GML (Geography Markup Language)即地理标识语言,它由OGC于1999年提出,并得到了许多公司的大力支持,如Oracle、Galdos、MapInfo、CubeWerx等。GML能够表示地理空间对象的空间数据和非空间属性数据。GML可以在地理空间Web领域完成了同样的任务。GML技术的出现是地理空间数据管理方法的一次飞跃。
作为XML格式的标记语言,KML拥有XML的所有优点和特性。与GML专注于地理信息的结构与内容不同,KML关注于地理信息的显示和表达。KML是以位置为中心的,而GML是以要素为中心的;GML应用模式中定义的要素对象可以没有几何属性,而KML则必须有。KML是一种面向客户端设计的数据形式,它以超文本的方式标记属性数据,更便于客户端的表现。本文主要研究KML标识语言的规范,及其与GML之间的交换。
1 KML与GML
1.1 KML简介
Google Earth的出现给传统GIS带来了巨大的冲击, Google Earth具有全球高清地理影像数据和较快的影像网络传输速度等优势,并且已经开始渗透到人们日常生活的许多方面,人们对Google Earth的关注和使用程度也越来越高,基于Google Earth客户端平台进行相关研究和应用的探索也越来越多。Google Earth提供的KML是一种基于XML语法格式的文件,通过KML 文件可以用来描述和保存地理信息如点、线、图片、折线,并在Google Earth客户端之中显示。
KML全称是Keyhole Markup Language,是一个基于XML语法和文件格式的文件,用来描述和保存地理信息如点、线、图片、折线并在Google Earth客户端之中显示。 KML 2.0提供以下功能:
1)指定一个地点的图标和标注来区分每一个地点。
2)为每一个视图指定明确的视角来创建不同的特写镜头 。
3)使用指定到屏幕或地理位置的图片标注 。
4)为特定种类的标注定义显示样式 。
5)为标注指定基于简单HTML语法的描述,支持超级链接和图片的显示 。
6)使用目录(folders)对标注进行树形的分类管理。
7)基于时间戳记的标注可以用来进行动态的播放 。
8)从本地或远程的网络地址动态的加载KML文件 。
9)当Google Earth客户端视图变化时,自动将视图信息发送给指定的源服务器并从服务器获取相关的标注信息。
KML被Google Earth客户端显示的过程和HTML网页被网络浏览器显示的过程类似,与HTML相似, KML也使用一种基于标签(名称和属性)的语法格式来描述地理标注信息,可以说, Google Earth Viewer是一个KML文件浏览器。
1.2 GML简介
GML是基于XML(Extensible Markup Language)的地理信息的传输、存储编码, 它包括了空间的和非空间的地理特征和地理范畴。OGC协会在2000年推出了GML1.0版本的规范,目前的版本为3.2.1。GML通过特征集合(FeatureColletcion)来表示基本的地理要素, 它们可以相互嵌套来表示异常丰富的空间信息。它具有如下特征:
⑴ GML 跟XML一样, 它的数据和表示分离。GML 使用者只需考虑使用GML 描述空间数据和数据的存储、提取。
⑵ GML 可以实现空间数据的分布式存储。通过XLink 和Xpointer, 可以实现分布式存储。
⑶ GML 可以集成非空间数据。GML 使用纯文本描述空间数据, 使用XLink 技术, 可以方便的与使用XML 描述的非空间数据集成。
2 GML标记语言规范
2.1 GML核心模式
GML最新版本3.2.1核心模式有29种;下面介绍GML的几个主要核心模式:
⑴要素模式(Feature Schema)
要素模式用来对现实世界的基本实体进行建模, 比如一条河流、一栋建筑。它包含的地理实体的空间属性和非空间属性。要素模式主要通过feature.xsd 描述, 它共过include 引入了geometryBasic2d.xsd 模式和temporal.xsd 模式。它定义了一些复杂类型(ComplexType), 如FeatureArrayPropertyType、AbstractFeatureCollectionType等。通过这些, 它为创建GML 要素和要素集
合提供了一个框架。
⑵几何模式(Geometry Schema)
GML3.1 的几何模式支持基本的点(Point)、多边形(Polygon)等几何基元及它们对应的三维几何模型。它还包括聚合类型, 如MultiPoint, 复合类型, 如CompositeCure。用户在定义自己的几何类型时, 一般都从这些基本类型导出。GML 几何模块分为以下五个文件模块:geometryAggregates.xsd、geometryBasic0d1d.xsd、geometryBasic2d.xsd、geometryComplexes.xsd、geometryPrimitives.xsd。
⑶坐标参考系统模式(Coordinate Reference System Schema)
该模式定义了子类型gml:_ReferenceSystem 和用来构造特定坐标参考系统的元素。它通过include 引入了coordinateSystems.xsd、datums.xsd 和coordinateOperations.xsd。这些模式定义了ISO 19111 定义的空间参考系统。
⑷时态模式(Temporal Schema)
时态模式是描述地理数据时态特征的元素, 其目的是使GML 能对具有运动属性的实体进行建模。它通过TimeInstant 和TimePeriod 两个时态基元来描述实体的时态特征,通过DynamaicFeatureType和DynamicFeatureCollectionType 来定义动态实体和动态实体集[1]。
⑸Coverage 模式(Coverage Schema)
Coverage 模式支持从时空领域到属性领域的地图绘制。GML3.1 种的Coverage模式包括Coverage 和Grids 两种机制。
2.2 GML应用模式建模规则
使用GML模型及其模式组件, 用户可以在自己的应用模式中定义其问题领域中的地理要素。用户在应用模式开发过程中, 除了要遵循GML语义模型和句法规则外, 还要考虑一些技术性问题。
1) 模式的应用:用户在开发自己的应用模式时, 需要引用的核心模式, 有时需要引用已有的应用模式,提供了和两个元素来实现模式之间的引用。当引用相同命名空间的模式时, 使用元素当引用不同命名空间的模式时, 使用训元素。
2) 要素集的定义及元素声明
应用模式的所有地理要素集必须在该模式中被声明为全局元素, 即这些地理要素必须是XML模式
3)几何类型定义
定义新的几何类型时, 必须为全局XML元素, 可以从基础几何类型或gml:AbstractGeometryType导出,建议避免从gml:AbstractGeometryType直接导出, 因为这样做只能提供非常有限的信息给GML处理软件,尽可能选择最具体的几何类型。
4)复杂要素建模
复杂要素是由多个要素组成的, 如一个城市包括学校、车站、政府大楼、商业地和体育馆等设施, 这些就组成了城市的基本要素。在GML建模中, 可以将这类要素建模为复杂要素(包含各成员要素), 也可以将这类要素建模为一个具有复杂几何的简单要素。
5) 空间信息的组织
地理要素通常都有几何属性和拓扑属性, 在地理要素建模时, 这两种空间信息的表达有两种方式一是几何属性和拓扑属性分开表达, 二是几何属性嵌人拓扑属性。在具体建模时, 选择哪种表达方式, 取决于应用的目的。
3 KML标记语言规范
Google Earth 客户端支持了大量的显示标签用来创建和保存成KML文档。可以先用文本编辑器修改KML文档,然后在Google Earth客户端中打开看显示的效果,和修改一个HTML文档并在浏览器之中观看效果是一样的。对于更高级的程序,可以使用CGI脚本生成KML文件。
3.1 KML语法规则
和任何程序和脚本语言一样,KML有一些必须遵循的语法规则。
1) 文档结构:
①XML标签必须关闭 ;
②XML标签是大小写敏感的 ;
③对于KML语法,首字母大写的标签是复合标签,否则就是单一标签,在实体和标签介绍之中有更多相关信息;
④XML标签必须正确嵌套 ;
⑤XML文档必须只有一个根标签 ;
⑥对于KML文件,这意味着你可以使用
⑦属性必须用引号包围起来;
⑧CR/LF(回车符)被认为是插入一个新行(在HTML描述之中,被转化为
) ;
⑨XML的注释方法和HTML是一样的 ;
2)标记类型
有两种基本的KML标记类型: 单一标签和复合标签.复合标签的标签名首字母是大写的,而单一标签都是小写的,复合标签能够作为其他标签(单一标签或复合标签)的父元素,而单一标签只能是其他复合标签的子元素,而自身不能包含其他元素。
3)字符串
在KML文件中的任何字符串,例如 name 和 description标签中的值,都可以是utf-8或者Unicode编码的字符串。
4)KML标签列表
Google Earth客户端之中支持的KML基本标签主要有:
3.2 KML示例
这个文件里有一个
4 GML与KML之间的交换
在GML与KML的集成应用中,GML与KML之间的数据转换意义显著。GML作为数据源,需将其转换为KML并在GoogleEarth等客户端软件中显示。同时,客户端更新后的KML数据需要转换为GML在服务器端进行存储。鉴于GML、KML都是基于XML的标记语言,采用XSLT(可扩展样式表转换语言),可有效而直接的实现二者之间的转换。XSLT专门设计用于对XML数据的转换与显示。由于XML文档关注于数据的描述,XSLT则为XML数据的转换提供了技术支撑,为一种XML数据格式向另一种XML数据格式、XML向HTML等的转换提供了有效的转换方法。
可扩展类型语言转换(XSLT)是一种在专门处理软件中,用来为XML文档进行转换的类XML的语言。虽然这个处理涉及到“转换”,但不改变原始文档;而且,一个新的XML文档在源文档内容的基础上被创建出来。然后, 这个新文档可能被处理器串行化(输出)为标准的XML语法或者其他格式,如HTML或KML。XSLT最常用于不同XML格式文档间的转换,或者XML数据到网页,或者GML数据到KML文档的转换。
4.1 GML向KML的转换
针对GML数据,编写向KML转化的XSLT代码,然后采用XSLT转化器即可实现向数据的转换。
对于如下GML示例数据:
xmlns:app="http://www.cdut.edu.cn/app"
xmlns:gml="http://www.opengis.net/gml">
编写如下XSLT转换代码,通过XSLT转换器即可实现上述GML数据向KML的转换。
xmlns:xsl"http://www.w3.org/1999/XSL/Transform"
xmlns="http://earth.google.com/kml/2.2"
xmlns:gml="http://www.opengis.net/gml">
5 小节
作为GIS领域的一个新产物, Google Earth独有的高清晰影像数据是目前其他GIS产品所不能比拟的, 对Google Earth的利用开发还需要我们进行不断的摸索和探索。将空间数据转换成KML 的方法为我们利用Google Earth进行商业开发提供了正确、科学的思路。GML数据如欲通过KML, SVG等方式图形化表达,需进行数据交换。由于GML和KML皆为XML格式数据,XSLT可有效而直接的实现它们之间的交换,本文给出了GML与KML交换的示例。KML的更多应用有待更深入的研究。
参考文献:
[1] http://code.google.com/intl/zh-CN/apis/kml
[2] http://www.opengeospatial.org/standards/kml/ 07-147r2_OGC_KML_2.2.pdf
[3] http: / /www. googleearthhacks. com / Google Earth Hacks Home.
[4] http: / / earth. google. com / Google Earth Home.
[5] 刘祥磊,童小华,马静.一种将GIS矢量数据精确转换成KML的方法.测绘通报,2009年第3期
[6] 刘祥磊,马静.基于ArcEngine的ArcGIS矢量数据到KML文件转换方法研究. 国土资源遥感,2007.9
[7] 兰小机,闾国年,张书亮.GML3.0在城市道路网络建模中的应用研究.计算机应用研究,2007.9