没有合适的资源?快使用搜索试试~ 我知道了~
地理图形标记语言GML的架构及范例
4星 · 超过85%的资源 需积分: 32 26 下载量 151 浏览量
2011-10-10
16:16:57
上传
评论 1
收藏 147KB DOC 举报
温馨提示
试读
20页
地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例地理图形标记语言GML的架构及范例
资源推荐
资源详情
资源评论
GML 架构及范例
地理图形标记语言 GML 的架构及范例
一、前言
在信息高速公路的时代,如何能在不同的 GIS 系统间实时分享资料,是刻不容缓的问题,现在该问
题已经有了一个很好解决方案,那就是以 XML 为基础的 GIS 编码标准,称为地理图形标记语言
GML(Geography Markup Language)。
GML 是由开放式地理信息系统联盟(OpenGIS Consortium,简称 OGC)所发展,专为地理信息而发
展的,以 XML 为基础的编码标准,其与生俱来的转换及存取能力,将地理空间信息的管理开启一个全新
的领域(请参考 黄旭初[2002],『新世代的 GIS 编码标准-地理图形标记语言 GML』,国土信息系统
通讯第 42 期)。
由于 GML 在 GIS 领域,将对『资料交换』课题的扮演关键的角色,GIS 的参与者实有必要对 GML
的内容有深入的了解,本文将介绍 GML 的架构,并以范例说明。
二、GML 基本架构
(一)以 XML 技术为基础
GML 目前的正式版本是 2.1.1 版,它以 XML 技术为基础,并使用最新的 XML Schema 文件定义技术,
XML Schema 具有 DTD 所没有的型态继承(type inheritance)、名称空间( namespaces)等,且其使用
XLink 来表现地理空间实体间的关系,使得实体间关系的建立不仅限于同一数据库,甚至可横跨网际网络,
因此 GML 2.1.1 版已足以建构分布式的 GIS 数据库。
(二)以 simple feature 为处理的单元
GML 使用『地理图形实体(称为 feature)』来描述这个世界,基本上一个 feature 是由一系列的属
性(properties)及几何图形(geometries)所组成,属性的内容包括名称(name)、型态( type)、值的
叙述(value description)等,几何图形(geometries)则由基本几何区块(例如点、线、及多边形)所组
成,为了简化,GML 的初始规格限定在平面的简单几何图形(称为 simple feature,包括点、线、及多边
形),在不久的将来,将会扩展至 3D 的几何图形及位相资料。
GML 的编码可以容许相当复杂的 feature,一个 feature 的几何图形可以由许多几何图形元素所组成
(称为 Geometric Collection),也可以包含不同型态的几何图形。例如一个无线电转播塔可以同时有一个
点的属性(它的位置点)及一个以多边形所构成的面的属性(它所涵盖的区域)。
(三)GML 的内容
GML 2.1.1 版 以 XML 技 术 为 基 础 ,并 使用 XML Schema 文 件 定 义技 术 ,目 前 GML 以 Feature
Schema、Geometry Schema、Xlinks Schema 等三个基本的 schema 来定义它的内容,分述如下:
1. Feature Schema(feature.xsd)
Feature Schema 定义 feature 的内容及结构。图 1 是以 UML 来描述 Feature schema 的内容及结构,从
图中可以看到几何图形的属性(geometric property)被当作一个关联类别(association class),来将一个
feature 与一个几何图形(geometry)连结,例如 PointProperty 用来连结一个点(point)的几何图形。详细
的 Feature schema 内容请参考 GML2.1.1 规格书(位于 http://opengis.net/gml/02-009/GML2-11.html)之附录
A。
第 1 页 共 20 页
GML 架构及范例
图 1. Feature schema 之 UML 图标
2. Geometry Schema(geometry.xsd)
Geometry schema 有 关几何图形元 素 的 类 型 的定义,包 括 点 ( point ) 、 线 ( line )、多 边 形
(polygon)等简单几何图形,及复合类型(complex type)的几何图形。图 2 是以 UML 来描述 Geometry
schema 的内容及结构。
Feature schema 使用<include>元素来将几何图形结构 Geometry schema 带进来,使得在定义 feature
type 时可以引用:
<include schemaLocation= geometry.xsd />
详细的 Geometry schema 内容请参考 GML 2.1.1 规格书之附录 B。
图 2. Geometry schema 之 UML 图标
GML 定义了几个基本的几何图形属性(Geometric property),用来将 feature 与几何图形连结,有关基
本的几何图形属性表列如下。
3. XLinks Schema(xlink.xsd)
提供 XLink 属性来作为数据链结使用。Geometry schema 使用<import>元素来引用 XLink。详细的
XLinks schema 内容请参考 GML 2.1.1 规格书之附录 C。
Feature schema、Geometry schema 及 XLink schema 三个基本 schema 之间的关系可用图 3 来表示。
图 3. Feature schema、Geometry schema 及 XLink schema 等三个基本 schema 之间的关系。
三、以 GML 编码的范例
(一)无几何图形的数据的编码
本节以最简单的范例介绍起,假设有个非空间资料的 feature type 称为 员工 (Employee),他有姓名、
年龄、及别名等属性,其中别名可能有 0 个或 1 个以上,若以 XML 来对"员工"这个 feature type 编码,则
可能的 XML instance 如下:
<Employee>
<name>黄旭初</name>
<Age>41</age>
<nickName>小黄</nickName>
<NickName>阿初</nickName>
</Employee>
在尚不考虑 GML 的状况下,本实例的 XML schema 应定义如下:
<element name="Employee" type="ex:EmployeeType" />
<complexType name="EmployeeType">
<sequence>
<element name="name" type="string"/>
<element name="age" type="integer"/>
<Element name="nickName" type="string" minOccurs="0"maxOccurs="unbounded"/>
</Sequence>
</complexType>
若要引用 GML 的 Feature schema,必须先确认哪些元素扮演 feature type 及其属性(property)的角色,
第 2 页 共 20 页
GML 架构及范例
在本例中 员工 是一个 feature type,年龄是一个属性(property),则上例改写成 GML 的语法如下:
<element name="Employee" type="ex:EmployeeType" substitutionGroup="gml:_Feature" />
<ComplexType name="EmployeeType">
<complexContent>
<extension base="gml:AbstractFeatureType">
<sequence>
<element name="name" type="string"/>
<element name="age" type="integer"/>
<element name="nickName" type="string" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
而 且 GML 的 Feature schema 中 有 一 些 已经 定 义 好 的 属 性 ( 例 如如 GML feature ID (fid ) 及 其
description 属性等),可以在制作 XML instance 的时候使用,举例如下:
<Employee fid="D1123">
<Gml:description>内政部信息中心的员工</gml:description>
<name>黄旭初</name>
<age>41</age>
<nickName>小黄</nickName>
<nickName>阿初</nickName>
</Employee>
(二)坐标及坐标范围的编码
几何图形的坐标可以用一系列的<coord>元素组、或<coordinates>元素的单一字符串来编码,两种方
法都可以对 1、2、3 度空间的坐标编码,其中<coord>元素可以使用 XML 解析器(parser)来验证其正确
性。
<coord>元素在 GML 的 Geometry schema 中定义如下:
<element name="coord" type="gml:CoordType" />
<complexType name="CoordType">
<sequence>
<element name="X" type="decimal"/>
<element name="Y" type="decimal" minOccurs="0"/>
<element name="Z" type="decimal" minOccurs="0"/>
</sequence>
</complexType>
<Coord>元素中资料组的组数由数据类型决定,例如点(point)资料只含有一组坐标组,如下:
<Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<coord><X>5.0</X><Y>40.0</Y></coord>
</Point>
(例中 srsName="http://www.opengis.net/gml/srs/epsg.xml#4326 是空间参考系统。)
而<coordinates>与<coord>的作用一样,但更具有弹性,使用者可以定义坐标值之间的间隔符号
(delimiter), <coordinates>元素在 GML 的 Geometry schema 中定义如下:
<Element name="coordinates" type="gml:CoordinatesType"/>
<complexType name="CoordinatesType">
第 3 页 共 20 页
GML 架构及范例
<simpleContent>
<extension base="string">
<Attribute name="decimal" type="string" use="default" value="."/>
<attribute name="cs" type="string" use="default" value=","/>
<attribute name="ts" type="string" use="default" value=" "/>
</extension>
</simpleContent>
</complexType>
<Coordinates>的坐标值是储存在一个字符串内,其中预设的小数点是 "."、坐标值的间隔符号是 ","、
坐标组的间隔符号是 Unicode 的空白(#x20),使用者可以依其需要改变上述之间隔符号。
同样以点资料为例,以<coordinates>编码坐标如下:
<Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<coordinates>5.0,40.0</coordinates>
</Point>
(三)基本几何图形的编码
几何图形的坐标都是定义在某种空间参考系统(Spatial Reference System,缩写为 SRS)中,GML
2.1.1 版中没有规定 SRS 的细部规格,目前 OGC 已经提出一份建议规格进行讨论,应该很快就会公布,
几何图形类型(geometry type)的 srsName 属性是用来指向 SRS 的定义。
几何图形类型(geometry type)的 gid 属性是几何图形元素的唯一辨识码,属于选择使用的项目,依规
定,gid 的值是字符串且第一个字符不能是数字。
GML 中所定义的基本 几何 图形 元素(primitive geometry element)包括坐标范围(Box )、点
(Point)、线串( LineString)、线环( LinearRing)、及多边形( Polygon),分述如下:
1. Box:用来对 feature 的坐标范围编码,第一组坐标是坐标范围的极小值,第二组坐标是坐标范围的
极大值,举例如下:
<Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<coord><X>0.0</X><Y>0.0</Y></coord>
<coord><X>100.0</X><Y>100.0</Y></coord>
</Box>
2. Point:点元素只有一组坐标,举例如下,
<Point gid="P1" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<coord><X>56.1</X><Y>0.45</Y></coord>
</Point>
3. LineString:由两组以上的点坐标所构成的直线串,举例如下:
<LineString>
<Coord><X>0.0</X><Y>0.0</Y></coord>
<coord><X>20.0</X><Y>35.0</Y></coord>
<coord><X>100.0</X><Y>100.0</Y></coord>
</LineString>
若第一点坐标值与最后一点坐标值一样,则这是一个封闭的线串。
4. LinearRing:线环是封闭的直线串,其第一点坐标值与最后一点坐标值一样,它是被用来建构多
第 4 页 共 20 页
剩余19页未读,继续阅读
资源评论
- sunquncsu2015-09-19很不错,值得参考
- 碎觉觉2013-11-22不够全面,谢谢分享。
- hehandong05512013-09-05非常好的资料
- dulimingsylvan2013-10-09是一个很简单的东西,还是不够全面
- cugliang2012-02-12虽然gml的版本比较老,但是仍旧适合学习使用,谢谢
untutor
- 粉丝: 7
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功