地理Web服务

Web服务是WebGIS发展的一个重大进步,是现代WebGIS的核心技术和重要标志。它集GIS、程序组件和互联网的优点于一身,深刻改变了GIS开发和应用的方式。它绕过了本地数据转换和本地软件安装的复杂环节,使得不同的计算机系统和不同的部门之间可以在Web服务层面进行集成,为软件应用开发提供了一个新的基础模块,为跨部门的协调合作提供了一种新的方式,为国家空间数据基础设施(NSDI)提供了技术框架。越来越多的机构在把自己的数据和功能发布和共享为Web服务,供本单位、往往也供其他单位使用。这些服务即可以被组合到其他的WebGIS应用之中。

本章着重介绍Web服务的基础知识,包括Web服务的概念、影响、作用及优点,SOAP和REST风格的Web服务,Web服务的相关标准,如WMS、WFS、WCS、CSW、GML、KML 和 GeoRSS,以及 Web 服务的优化。

从Web站点到Web服务

Web服务的产生及优势

WebGIS在90年代初产生之后迅速发展,但早期的Web应用系统和软件, 包括WebGIS,大都是仅能独立使用的网站,这种系统在内部结构和外部开放方面都逐渐显示出其局限,难以充分发挥WebGIS的潜力。

局限1

系统之间缺乏良好的互操作性,每一个WebGIS是孤立的、封闭的系统,不同的系统之间无法互相调用对方的功能和共享信息,不能进行互操作。如图3. 1所示,假设系统A的某一个功能正是系统B所需要的,但因为系统A是封闭的,没有对外提供基于Web的编程接口,无论是系统B的客户端还是服务器端,均无法调用系统A的功能。反之亦然,系统A也不能调用系统B。

局限2

系统内部耦合度较强,应用模式不够灵活每个系统都是作为“独立解决方案”来开放的,系统中各个模块之间的接口是紧密的和局部的。当系统需要改进时,这种高度耦合的结构在源程序更改和系统维护上的代价比较高,不够灵活。

随着信息社会的发展,越来越多的现实应用需要调用、组合、或套嵌其他 WebGIS系统所提供的功能和信息,因此,如何使WebGIS变得开放,使不同的系统之间能够进行互相调用就变得非常重要。在90年代后期,这不仅是WebGIS领域面临的问题和需求,也是整个信息技术行业的需求,当时的MicroSoft、Oracle、IBM、万维网联盟(W3C)等机构都展开了对这方面的探索,研究发布了Web服务技术。

近年来,Web服务的技术不断改进,其定义也发生了变化。早期Web服务的定义大都涉及SOAP、XML和WSDL技术,现在SOAP已经不再是实现Web服务的唯一方式,REST风格的Web服务扩展了Web服务的概念。

Web服务是一种运行于Web服务器上的程序,它们具有可以被别的程序通过互联网协议(主要是HTTP)来调用的编程接口。Web服务技术代表了分布式计算的重要进展,它用远程服务器上的功能来代替本地计算机上的功能。

可以这样理解Web服务:桌面软件由一系列共同运行的本地程序构成,假定这些程序分布和运行于不同的Web服务器中,但它们之间仍然能够通信,并作为一个整体进行工作----这就是Web服务的初衷。

对Web网页和Web服务的比较有助于理解Web服务。Web服务与一般的网页不同:

  • 网页是供人理解和阅读的,主要采用HTML格式,它包含内容和样式(字体大小和颜色、页面的布局……)等。
  • Web服务是一种基于Web的编程组件,它是供客户计算机程序来调用的。它的结果主要采用XML或JSON等计算机程序能自动解析的格式,而不是供人直接阅读的。

完整的Web服务体系有三个部分:提供者、使用者和门户网站。服务提供者和使用者不必知道对方的存在。提供者可以把自己的Web服务信息注册登记到门户网站中,而使用者可以查询到这个门户网站,找到需要的服务,然后使用这些服务(图3.2)。

Web服务体系的三个组成部分及其相互关系

Web服务继承了Web程序和开发接口这两者的特性,与传统计算方式比,具有以下优势:

(1) 开放性

Web服务可以和Web上其他计算机软件交互,供其他系统调用,进行功能和信息的交换和共享,打破了早期Web应用孤立封闭的局限。

(2) 独立于编程语言和操作系统

Web服务是以Web为平台,以HTTP协议被远程调用的,它不和调用它的客户端程序一起编译。一个Web服务不管是使用什么编程语言开发的(如 Java、.NET或C++等)、部署在什么样的操作系统上(如Windows、Linux或MacOS等)、运行在什么样的Web应用服务器里(如IIS或Apache/Tomcat等),都能一样地被客户机所调用。客户机在调用一个Web服务时也没有被绑定任何编程语言,开发者可以自由选择.NET、Java、Python、JavaScript、Flex 或Silverlight 等开发语言。

(3) 松散耦合式的可集成性

客户软件和它所调用的Web服务不必运行在一个机器上,两者不必一定依赖对方而存在。当一个客户机对某一个Web服务不满意或者这个Web服务不能使用时,客户机可以用其他Web服务来代替它。只要这两个Web服务的接口相同,客户机仅需要指向这个新的Web服务的URL,而无需做其他改动。从Web服务提供者的角度讲,他可以改变或更新Web服务,如从J2EE迁移到.NET或者是相反的迁移,只要保持Web服务的接口不变,这些改变对调用者都是透明的,调用者不需要做任何改动(柴晓路,2002)。这种松散耦合的特点便于进行灵活的组合和套嵌,满足用户的业务需要。

(4) 发布和更新的统一性

当Web服务更新或发布新的版本时,只需要在服务器端更新,每个客户端程序调用到的自然是最新的Web服务,这样就不必到每个客户端分别进行软件包的安装和更新。这是Web服务优于桌面组件技术的一个重要方面。

地理空间Web服务的影响

目前,Web服务已经成为GIS的核心,它的出现对地理空间产业产生了很大的影响,为实现地理空间信息共享、互操作和跨部门协同合作提供了一个优秀的解决方案。

(1)是WebGIS产品分化和新市场形成的加速器

以Web服务为中心,地理信息界发布了新的产品或新的功能,来实现地理资源的制作(author)、服务的发布(publish )、服务的发现(discovery)和使用 (use)这一系列的工作流程。

Web服务是WebGIS的核心,WebGIS产品分化为支持地理空间Web服务的创作、发布、注册、查询和使用的多种产品

在服务器方面:如果你拥有大量的数据,你可以成为数据和地图服务的提供者。如果你具有独特的分析模型,你可以将它们作为专业地理处理服务发布。这些服务可以是免费的,也可以按次使用收费。

在客户端方面:如果你擅长开发,你可以选择开发Web服务的桌面客户端或手机客户端,在所支持的服务类型或可用性等方面显示出自己的优势。

在门户网站方面:你可以收集一定区域、一定专题或者符合一定标准的Web服务,把这些信息编目发布,并让需要这些服务的人们能查询。

(2)是GIS融入主流信息系统的基本组件

在地理Web服务之前,GIS与其他信息系统的集成往往要在“本地”实现,即把地理数据复制到本地,把GIS软件安装到本地,对GIS功能的调用很复杂也很有局限,这些原因多年来一直把GIS限制在一个小圈子里,阻碍着GIS与主流信息系统的无缝集成。地理Web服务隐藏了上述复杂性,其他的信息系统,如企业资源计划(ERP)和客户关系管理(CRM)系统,可以灵活方便地调用和集成远程的地理Web服务,从中获得地图、数据和地理分析功能。Web服务的开放性和灵活性将大大地拓宽GIS的市场。

(3)是实现互操作的一种新途径

GIS应用的挑战之一就是如何实现互操作,即让不同GIS软件厂商的产品能够一起工作。在Web服务技术以前,互操作主要在数据格式层面完成,也就是采用标准机构所制定的交换格式。不同厂家的软件需要能够输入、输出这些格式或直接读写这些数据格式。这种方法往往牵涉到数据的复制和本地软件的安装等,是脱节的和不灵活的。

Web服务使得GIS界可以把互操作提升到基于Web服务的层面,超越数据转换和转换工具的安装这些层面(Bacharach, 2005)。地理信息标准机构,如开放地理空间信息联盟(OGC)和国际标准化组织(ISO ),与时俱进,制定了一系列的Web服务标准。严格遵循这些标准,不同厂商的服务器和客户端之间就可以交叉使用,不必到考虑这些服务是哪家公司的产品发布的,也不必考虑是哪家公司的客户端在使用这些服务(参见第3. 3节)。

(4)是实现空间数据基础设施一个重要架构

空间数据基础设施(SDI)指的是地理信息的采集、处理、存储、发布、利用和保护所必需的技术、政策、标准和人力资源的总称。建设区域、国家、全球空间基础设施的关键是标准、共享、协作和协调。

Web服务体系在服务提供者和信息使用者之间建立了一个动态交流和集成的方式,是构建空间基础设施的关键。地理数据等信息可以把数据留在原有单位中,由他们进行数据维护,通过Web服务进行共享,当数据更新时,Web服务也随之更新,保证了Web服务的现势性。例如,一个地方政府可以不断地维护和更新其土地记录,同时把这些信息通过Web服务共享给其他单位。一个公共设施部门可以直接利用这个地图服务作为底图,而不需要去把其地图的原始数据复制安装到本地。另一方面,这个公共设施部门也可以把自己的基础设施信息以Web服务的方式共享给其他政府部门,以便市政府利用该信息进行土地利用规划和审批等业务需要。这种协同方式为不同机构之间的地理信息共享和协作提供了一个新的、灵活的技术框架(Dangermond,2008 ) 。

地理Web服务的功能

地理Web服务按照功能可以分为地图服务、数据服务、分析服务和元数据服务等几类。本节介绍这些服务类型的功能。

地图和要素服务

地图服务是最常见的地理Web服务形式。它允许客户端请求一定地理范围内的地图,它以图像格式,如JPEG、PNG或GIF等格式把地图返回给客户端。

地图服务的地图可以是动态制作的,也可以是预先做好的瓦块。瓦块地图服务可以大大地提高WebGIS应用的运行效率、缩短响应时间,主要用于内容相对静止或者更新频率较低的基础底图或地图。动态地图服务在接到客户端的请求后,从数据库中实时读取数据制作地图,所以尤其适用于数据更新频率较高的地图。地图服务可以是二维的或三维的。三维地图服务,也称为Globe服务,可以将地面高程作为第三维,展现自然地形;还可以将建筑物高度作为第三维,加上建筑表面的纹理模型,表现城市的轮廓或逼真街景;三维地图服务可以展现地形和城市建筑景观。图中所示的是美国费城的三维地图服务(致谢:PiCtometry国际公司和美国地质调查局)。

三维地图服务可以展现地形和城市建筑景观

还可以用某一属性字段的值作为第三维,突出该主题。三维地图服务也可以将某一属性的值作为第三维,突出显示该属性所表达的主题。图中所示的三维地图服务是将美国每个县租房人口的数量作为高程,反映租房人口的分布情况。(致谢:美国地质调查局和美国人口普查局)

三维地图服务也可以将某一属性的值作为第三维,突出显示该属性所表达的主题

三维地图服务需要在三维客户端中显示,用户可以进行缩放和旋转等操作。除了制图之外,地图服务往往还可以支持属性查询、空间查询和动态投影变换等功能。

地理要素服务(feature service)允许Web客户端对服务器端的地理数据库中的矢量地理数据进行读写操作,可以对数据库中地理要素及其坐标进行添加、编辑和删除。如图所示,市民可以在该地图网站上标注,标明他们在何时何地发现过濒临灭绝的鸟类,提供相关的信息,这些信息被存储到服务器端的地理数据库中,便于政府部门划定生态保护区。(致谢丨:美国地质调查局)

要素服务能够支持基于Web的在线编辑

要素服务允许设计者快速地在数字地图上勾勒出设计草图,并同时分享他们的方案,允许其他同事对之进行修改,能够有效地支持协同式的地理设计。要素服务还便于公众在Web地图上进行标注,分享他们的所见所闻,

促进公众参与地理信息系统(PPGIS)和自发式地理信息的发展。

搜索服务能够对GIS资源(例如,一个数据层或者整个企业地理数据库)的内容进行索引,并让Web用户可以通过关键字等方式查询搜索自己需要的GIS资源。搜索服务与本节后面将要介绍的元数据目录服务不同,虽然两者都可以支持GIS资源的搜索和发现,但前者索引的是地理数据本身,尤其是属性表,而元数据目录服务依赖的是地理数据的元数据。

影像服务主要是通过Web服务来提供栅格数据(如遥感影像和数字高程)。它支持栅格数据的提取、下载以及地图制作。例如,MapServer 允许遥感部门等把获取的大量影像不经预处理就可以发布成影像服务,并可以进行快速的实时处理,包括拼接、增强和衍生出多种影像产品,供Web客户端进行浏览和下载。

分析服务

地理编码服务:地理编码是把街道地址转换成地理坐标的一个过程。与之对应,反向地理编码是把地理坐标转换成相应的地址的一个过程。地理编码服务是以Web的形式发布地理编码或反向地理编码功能。目前,网上有许多免费的地理编码服务,如ArcGIS Online、Google、Microsoft等提供的服务。在有些情况下,如Google等免费系统中的地址数据过时或你希望能通过当地人所知道的地址别名进行匹配,你可以用ArcGIS Sever等产品来创建自己的地理编码服务。

网络分析服务:地理网络这里是指诸如街道和高速公路等组成的交通网,地下管线、管线接头、阀门开关所组织的管线网等。

网络分析服务可以提供以下功能:

1.计算最佳路径:给定起点和终点,计算从起点到终点的最短或最快路径,或者给定多个站点,计算能够走遍它们的最短或最快路径。路径服务应当考虑限速和转向规则,还可以考虑交通阻塞、交通信号灯等待时间和道路(因施工或事故)关闭等因素。

2.计算服务区:计算从某一个或多个点出发,在一定的行驶时间内所能到达的街区。服务区分析可以帮助用户评估一个地点的覆盖性或可达性,例如,可以帮助城市规划者选择最佳的消防站地址,以便它能在数分钟内覆盖指定的区域,或者帮助零售商选择最佳的商店地址,以便它能够服务较多的潜在顾客。

3.查找最近的设施:查找距离某点距离最近或开车时间最少的设施。这在基于位置的服务(LBS)中比较常用,如查找距某一手机用户最近的餐馆或者邮局。

4.几何服务:它可以进行几何变换、缓冲区计算、制图综合(要素化简)、地理要素的合并、切割、计算面积和长度及坐标投影转换等。

5.地理处理服务:地理处理服务可以把用户创建的多种功能和分析模型发布成Web服务。地理处理服务的功能很广泛,从简单的缓冲区分析和面叠加分析到复杂的回归分析和影像分类,从本地社区规划到全球气候变化分析,从模拟过去到预测未来。

元数据目录服务

元数据是关于数据的数据,它可以描述GIS数据和服务。元数据目录服务可以用于发布和搜索元数据,可以促进地理信息和服务的共享。例如,一个提供者可以发布关于他们数据和服务的元数据,而一个用户可以查询这一元数据服务,发现能满足其需要的数据和服务(详见第6章)。

Web服务的接口类型

本节介绍Web服务的两种主要接口类型,即SOAP风格的Web服务和REST风格的Web服务,它们也被称为SOAP API和REST API。需要强调的是,Web服务并不局限于这两种类型,那些通过HTTP传送格式化数据的Web程序,都应该被认为是Web服务。

SOAP风格的Web服务

SOAP的原名是简单对象访问协议(Simple Object Access Protocol),它使用一种封装过的XML进行信息交换。2003年,它被万维网联盟采用,成为一种推荐标准。后来大家认为“简单对象访问协议”这个全名容易让人误解,因此,万维网联盟在2007年放弃了这个全名,现在人们只是沿用SOAP这个简称而已。SOAP风格的Web服务采用HTTP Post和SOAP封装的XML在客户端和服务器之间发送请求和传递结果(图3.7)。

基于SOAP的Web服务依靠HTTP Post和SOAP封装的XML在客户端和服务器之间发送请求和传递结果

基于SOAP的Web服务把XML信息体封装在另外一个XML信封中。这种“XML套XML”的格式不便于人们手工创建SOAP请求和解析SOAP结果,因此SOAP服务的调用比较困难。当然,有一些工具可简化SOAP服务的调用。基于SOAP 的 Web 服务一般具有 WSDL( Web Service Description Language),即网络服务描述语言。它以XML的格式来描述一个Web服务所提供的具体编程接口,便于开发人员理解和使用这个Web服务。

ArcGIS Server发布的Web服务支持SOAP和REST两种接口

REST风格的Web服务

REST(representational state transfer;表述性状态转移或表象状态转移) 是Roy Fielding于2000年在其博士毕业论文中所提出的一种架构风格。Roy Fielding曾经参与过HTTP规范的制定,他认为SOAP没有充分利用HTTP的优势,他提出的这种REST风格的构架可以充分发挥HTTP的优点,降低开发的复杂性,提高系统的扩展性(Richardson and Ruby,2007)。REST刚被提出时没有获得过多关注,其概念和准则比较抽象,不同人的解释也不尽相同,在现实应用中并没有被完全遵守或实现。REST风格的Web服务通过HTTP发送数据,所发送的信息不采用SOAP封装。其最常见的实现方式是把请求的参数放在URL中,通过URL发送请求参数。REST风格的Web服务经常以JS0N和不经SOAP封装的XML向客户端返回结果。下图显示的用REST的形式来实现上图中相同的功能,可以看出,REST接口比SOAP接口更加简洁。

REST接口的服务

可以看出,这种目录式结构的URL层次直观、可预测且易于理解,不需要过多的文档,开发人员可以很容易地构建这些URL,指向他们所需要的Web资源。

REST服务中Web资源支持特定的操作,例如,一个地图服务可以进行制图和查询操作,地图服务中单个数据层可以进行查询操作。这些操作的结果可以JSON等格式返回给客户端。例如,通过REST接口请求某地图服务制作一幅美国地图,要求返回800像素 x 500像素的JPEG图像,URL请求大致是

::

http://server.mycompany.com/ArcGIS/rest/services/QSMap/MapServer/
export?
bbox= -185.33, 15.20, -9 .53 , 74 .08
&size = 800 , 500
&format = jpg
&dpi =96
&:f = image

利用REST来查询一个地图服务中加利福尼亚州每个县的中等家庭收入,要求返回JS0N格式,URL请求大致是

::

http://server.mycoinpany.com/ArcGIS/rest/services/USMap/MapServer/0/query?where=STATE_NAME='California'&OutFields=MEDHINC_CY&f=pjson

可以看出,REST中基本上所有的请求都是一个URL,比较容易理解。你可以采用很多种编程语言,如.NET、Java JavaScript和Flex等来产生这个URL字符串并发送这个URL请求。你甚至可以不用编程,直接把这个URL放到你的Web浏览器中就可以看到你要的地图等结果,因此,REST被认为是“Web的命令行”。

SOAP 和 REST 的比较

下面比较了 SOAP和REST类型的Web服务。SOAP类型的Web服务产生早,相关技术比较成熟,使用比较普遍,其接口定义明确而严谨,开发环境对其支持程度高。但它过于复杂,编程工作量和难度较大;没有充分利用HTTP的优势,传输效率低;SOAP的封装使传递的XML复杂和庞大,这样往往会降低信息传递和解析的效率乃至整个系统的性能。鉴于这些认识,人们逐渐转向了REST风格的Web服务,它简单而高效(Cappelaereet al.,2007)。在很多情况下,REST的简洁和高效胜过了采用SOAP所带来的严谨(Fu et al. ,2008)。

表3.1 比较SOAP类型的Web服务和REST类型的Web服务

SOAP类型的Web服务

  • 传输方式 , HTTP POST ;
  • 请求参数 , 放在XML中并以SOAP封装;
  • 响应结果 , 放在XML中并以SOAP封装 ;
  • 优点 , 产生早、成熟,接口严谨,功能 强大;
  • 缺点 , 重型、复杂、人门门槛高;SOAP 封装的XML信息传输效率和 解析效率低;不能充分利用 HTTP的优势, 不够严谨、略显随意。

REST类型的Web服务
- 主要是HTTP GET;虽然定义了 PUT、P0ST和 DELETE的语义和用法,但实际上很少使用 - 参数(键-值对)一般放在URL中
- 比较多样,JSON、XML(非SOAP封装的)和二 进制文件流等
- 轻型、简易、效率高,能充分利用Web的缓存 等优势,使用逐渐广泛

2002年,亚马逊公司发布了其电子商务交易的Web服务,同时提供了SOAP和REST两种Web服务接口供用户选择。几年之后,这些服务吸引了大量的使用者,据统计,亚马逊服务器所收到的请求中80%是基于REST的,而只当你在使用ArcMap和ArcGIS Explorer桌面版时,你在使用SOAP接口有20%是基于SOAP 的(Greenfield and Doman,2004)。REST 比 SOAP 的优越性体现在以下几个方面:

ArcGIS Server的Web服务同时具有SOAP和REST两种接口

  • 对服务提供商来说,可以降低创建服务的成本以及服务托管的经费;
  • 对基于Web服务做应用开发的开发者来说,可以减少人门难度、缩短学习时间、加快开发速度、降低开发费用;
  • 对管理者来说,REST提供了较好的系统架构,能获得较高的系统响应速度、较高的可靠性和可扩展性。

互操作和地理空间Web服务标准

在大型项目或国家级信息平台中经常涉及互操作。互操作就是让不同厂家的软件和数据能一起工作,而实现互操作的主要途径就是制定标准。Web服务的标准实质上就是规定请求和响应的具体格式,例如,请求中包含哪几个参数,每个参数是什么类型,响应的返回信息中包含什么结果等。本节介绍Web服务的标准,包括WMS、WMTS、WFS、WCS、WPS、CSW以及与Web服务相关的标准,包括KML和GeoRSS。

基于Web服务的互操作

互操作就是让不同厂家软件和数据能一起工作,通俗点说就是我能调用你的数据和功能,你能调用我的数据和功能。GIS互操作的实现技术已经走过了多个阶段(图3.11)。

实行GIS互操作的技术主要经历了文件格式转换、直接读取的插件和Web服务标准等阶段

早期的互操作往往涉及数据的转换,例如,把一种软件产品的数据转换成另外一种软件产品的数据格式,或者定义一种标准的文件格式,不同的软件产品都需要能输人和输出这种格式。后来,互操作采用了插件接口的技术,即在一种软件中安装一个插件,利用这个插件可以在一种软件中对其他软件格式的数据能进行直接读写,避免了数据的转出和转入。近些年来,互操作技术逐渐转向到Web服务标准这个层次上来,这种方法既避免了数据格式的转出和转入,又避免了在本地安装插件工具的麻烦。不同的厂家可以根据行业的Web服务标准独立开发自己的产品,只要他们产品的Web服务接口符合一定的业界标准,他们软件的数据和功能就通过Web服务来相互调用,实现互操作(图3.12)。

互操作依赖于标准

关于地理空间Web服务的标准化组织主要有如下几个。

以OGC的WMS标准为例,MapServer或GeoServer 发布的一个WMS在线地图服务,不仅可以被Esri的产品使用,也可以被Google Earth、NASA WorldWind、OpenLayers以及Gaia等支持WMS标准的客户端使用。每一个客户都知道在请求中应该发送什么参数,并能预期服务器的响应结果中有什么格式的结果。

Web服务的标准

本节主要介绍 OGC 的 WMS、WMTS、WFS、WCS、CSW、WPS 以及 OpenLS标准。读者可以访问OGC官方网站(http://www.opengeospatial.org )查阅这些规范的详细文档,查看哪些WebGIS软件经过了OGC认证和支持哪些标准。

(1) Web 地图服务(WMS—Web Map Service) WMS是OGC制定的一种在互联网上制作地图的Web服务规范,WMS生产的地图一般以图像格式呈现,如PNG、GIF或JPEG。任何一个声称符合WMS规范的Web服务都必须支持下面两个必要的请求:

GetCapabitities:能向客户端返回该Web服务的描述信息。返回结果的格式是XML,它描述该服务的名称、简介、关键词、覆盖范围、包含那些数据层、每层是什么坐标体系、具有哪些属性以及是否能被查询。这个元数据还包括该服务所能产生的地图图片文件格式、能支持的操作每个操作的URL等。例如,利用下面的URL请求,可以得到N0AA发布的大地海洋气象WMS服务的描述信息。

::

http://howcoast.noaa.gov/Wms/com.esri.wms.Esrimap/obs?service=wms&version=1.1.1&request=GetCapabilities

GetMap:能根据客户端的GetMap请求参数来制作一个地图。GetMap请求中需要的参数包括显示哪些图层、地图的长宽像素数和空间坐标体系等。有的WMS还支持风格化图层定义(styled layer descriptor,SLD),允许用户在URL请求中动态地指定各个数据层的显示符号。返回结果一般是PNG、GIF和JPEG等栅格格式的图片。例如,下面的GetMap请求可以让上述N0AA气象WMS服务生成一幅PNG格式的地图。

::

http://howcoast.noaa.gov/Wms/com.esri.wms.Esrimap/obs?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/fc>ng&TRANS PARENT =
TRUE&STYLES = AVERSION = 1 .1 .l&LAYERS = RAS\_G〇ES\_I4
,RAS\_G〇ES,RAS\_RIDGE\_NEXRAD,〇BS
\_MAR\_SWHFT,〇BS\_MAR\_SSTF,〇BS\_MET\_VIS,〇BS\_MET\_PRES,〇BS\_MET\_WIND,〇BS一 MET\_DP,OBS\_MET\_TEMP&WIDTH
= 1354&HEIGHT =968&SRS = EPSG:102100&BBOX = -10958012
.374959987,3324093 .486064869, -7646148 .81342075,5691806 .8742258595

WMS规范还制定了几个可选请求,例如

  • GetFeaturelnfb:查询地图上某一位置的信息,其典型的应用情况是用户在地图上点击一个点,服务器返回位于该点的地理要素的坐标信息和属性信息。

  • GetLegendGraphic:能根据客户端指定的图层,制作和返回该图层的图例,返回格式一般是PNG、GIF和JPEG等图片。

WMS规范的应用较广,被许多机构采用。例如,美国地质调查局(USGS)就提供了一系列WMS服务,包括国家大地图WMS服务(图3. 13)、国家地图集运输WMS服务、国家水文数据集WMS服务以及美国实时火灾(主要是指山林野火)WMS服务。美国国家航空航天局(NASA)对地观测系统(NEO, http://neo.sci.gsfc.nasa.gov/Search.html) WMS ( http://neowms.sci.gsfc.nasa.gov/wms/wms )等方式,动态提供多时间序列的、主要关于全球气候和环境变化的影像,包括海面温度、陆地表面温度、植被指数、降水量、一氧化碳浓度、地表覆被类型以及地表接受的太阳辐射量等。

在地图浏览器中显示NOAA发布的大地海洋气象WMS服务

(2) Web 地图瓦块服务(WMTS—Web Map Tile Service) WMTS是OGC制定的一种发布瓦块地图的Web服务规范。WMTS不同于WMS,两种相互补充。WMS主要属于动态地图服务,即地图是服务器在每次接到客户请求时立刻生成的,特别适用于数据在不断被更新的地图服务。WMTS的地图是服务器预先制作好的瓦块,这种方法可以提高Web服务的性能和伸缩性,特别适合于数据相对静态、不再更新或更新频率很低的数据。

WMTS规范定义了两个必要操作和一个可选操作。

  • GetCapabilities:获取服务的元数据。
  • GetTile:获取瓦块。
  • GetFeaturelnfo:可选,获取点选的要素信息。

(3) Web 要素服务(WFS—Web Feature Service) WFS是OGC 制定的一种在互联网上对矢量地理要素及数据进行操作,包括检索、插入、更新和删除等Web服务规范(OGC ,2005)。WFS定义了以下主要操作。

  • GetCapabilities:获取服务的兀数据。
  • DescribeFeatureType:获取WFS支持的要素类型的结构。
  • GetFeature:获取与一个查询条件相匹配的地理要素及其属性。
  • LockFeature:请求服务器在一项事务期间锁定一个或多个地理要素。
  • Transaction:请求服务器创建、更新或删除地理要素。

以上操作有必选的,也有可选的。根据所支持的操作,WFS主要可以分为以下两类。

  • 基本型 WFS(Basic WFS):只支持 GetCapabilities、DescribeFeatureType 和GetFeature操作,只能进行要素的查询和读取,所以又称为只读型WFS。
  • 事务型WTFS(TransactionWFS或WFS-T):除了基本WFS所支持的操作外,还支持transaction操作。它不仅能支持地理要素的读取,还支持地理要素的在线编辑和处理,也被称为读写型WFS。

在WFS请求和响应中,地理要素的信息传输主要是采用GML格式。2006年,OGC通过了GML简单要素专用标准(GML Simple Features Profile),以加快WFS请求和响应的速度,简化WFS的实施难度。WFS不仅可以用于制图和查询,而且可以用于地理数据的切割、投影转换和在线下载。例如,美国国家气象局气象研究实验室提供一个国家数字天气预报数据库(NDFD) WFS服务(图3.14)。这个服务允许公众、政府机构和企事业单位获取气温、露点、风、降水概率和降水量等数据。

(4) Web 覆盖服务(WCS_Web Coverage Service) WCS是OGC 制定的一种发布栅格地理数据的Web服务规范,它所返回的

美国国家气象局气象研究实验室提供的国家数字天气预报数据库WFS服务

栅格数据是原始数据(mw data),如数字高程中地面的高程值和卫星影像中的光谱值等WCS与WMS不同,因为WMS所返回的是经过视觉化处理的、已经失去原始值的图片。WCS与WFS的不同还在于WFS是针对矢量数据的,而WCS是针对栅格数据的。WCS规范规定了以下操作(OGC,2006b):

  • GetCapabilities:返回该服务的元数据。
  • DescribeCoverage:返回该服务中栅格数据层的详细描述信息,如时间信息、覆盖范围、坐标体系和所支持的输出格式等。
  • GetCoverage:服务器根据允许客户端所指定的数据层、时空范围、坐标体系、输出格式、内插方式以及对数据进行切割转换等操作,返回GeoTIFF、HDF-EOS或NIT等格式的数据。

美国国家冰雪数据中心(NSIDC)提供极地冰冻圈的WCS服务,用户可以获取有关结冰区域的数据,包括每月海洋结冰和集中区、积雪覆盖范围及雪水等深线等信息,以支持有关极地冰冠融化和气候变化的研究(Maurer,2007)。

(5) Web 处理服务(WPS—Web Processing Service) WPS是OGC为在互联网上进行地理分析而提供的一种Web服务规范 (OGC,2007c)。它制定了地理分析服务的输人和输出(即请求和响应)格式,还制定了客户端如何请求地理分析的执行。WPS所需要的地理数据可以通过互联网传输过去,也可以是服务器上已有的数据。WPS定义的主要操作有GetCapabilities、DescribeProcess和 Execute。

(6)其他Web服务标准 - Web目录服务(CSW—Catalog Service for Web):目录服务是一项共享地理空间信息的重要技术。 CSW支持搜索和发布地理空间元数据,它可以让使用者查询元数据,来发现他们所需要的地理数据和服务,也可以让提供者发布和更新元数据。 CSW有两种类型:只读型CSW和事务型CSW。 只读型 CSW支持 GetCapabilities、DescribeRecord、GetRecords、GetRecordByld以及GetDomain等操作,仅支持元数据的查询和阅读。 事务型CSW支持元数据的读和写,允许用户通过transaction和harvest操作,来发布、编辑和删除元数据(OGC, 2007b )。 ArcGIS Geoportal Server 等产品就提供了CSW接口。- 开放位置服务(OpenLS—Open Location Service):这是OGC 为基于位置的服务(LBS;见第5章)所提供的一系列的Web服务规范,包括黄页搜索、追踪手机用户的位置和导航服务等(OGC ,2004)。- 传感器网络整合框架(SWE—Sensor Web Enablement):SWE框架包括一系列Web服务标准:传感器观测服务(SOS )、传感器规划服务(SPS)以及传感器报警服务(SAS)。这些标准能够使用户发现和获取传感器网络的传感器数据。

Web服务的相关标准

本节主要介绍KML规范和GeoRSS规范,KML是一种地理数据和地图描述的混合格式,GeoRSS可以认为是一种地理数据格式。虽然它们本身并不是Web服务规范,但是在实际应用中,它们经常被作为一些Web服务返回结果的格式。

(1) KML( Keyhole Markup Language;钥匙孔标记语言) KML是谷歌公司和OGC 的一个基于XML的描述地理要素及其可视化的文件格式。KML最初由Keyhole公司创建,是其EarthViewer 3D所采用的文件格式。Keyhole公司于2004年被谷歌公司收购,其EarthViewer 3D被改名为 Google Earth。谷歌公司向OGC 申请把KML作为一个标准。经过OGC 成员的论证、修改和批准,KML于2008年正式成为 OGC 的一个官方标准。

一个KML文件可以描述一些地理要素,如点、线、多边形、图像和3D模型等,并可以定义它们的显示符号、相机位置(即观察者所在的地点和高度、视线的方向、俯视或仰视的角度)。KMZ文件是压缩过的KML文件,这样一方面可以减小文件的大小,另一方面可以包含其他类型的文件如KML中符号和链接所需要的图片。下面是一个简单的KML的例子。它首先定义了一个带有特定图标的样式,然后定义了一个地名注记,并用这个图标来显示。

::

<? xml version = "1.0 " encoding = "UTF-8 "? >
<kml xmlns = "http://earth .google .com/kml/2 .2 " >
<Document >
<name > Placemark .kml < /hame >
<Style id = " sh\_ylw^>ushpin" >
<IconStyle >
<scale >1.3 < /scale >
<Icon >
<href >http: //Inaps .google .com/fnapfiles Ami/pushpin/ ylw-pushpin.png < /href >
</Icon >
<hotSpot x = "20" y = "2" xunits = "pixels" yunits = "pixels"/>
</IconStyle >
</Style >
<Placemark >
<name > New York < /hame >
<LookAt >
<longitude > -73 .98695099776447 < /Longitude >
<latitude >40 .75578596910464 < Aatitude >
<altitude >0 < /altitude >
crange >1838 .244767541828 < 々ange >
<tilt >64 .84948240920286 < /tilt >
<heading > -0 .00395616889357744 </heading >
</LookAt >
<styleUrl > #sh\_ylw-pushpin < /styleUrl >
<Point >
<coordinates > -73 .98695099776447, 40 .75578596910464, 0 </coordinates >
</^oint >
</Placemark >
</Document >
<Ami >

KML经常被用于公共信息发布。例如,美国地质调查局用KML发布接近实时的地震信息,美国国家海洋与大气管理局利用KML发布天气预报,包括恶劣天气警报、雷达影像和传感器观测数据等。下图显示的是用Google Earth显示KML格式的飓风行进路线。致谢:谷歌公司,LeadDog Consulting,Tele Atlas North America, Inc.,Scripps Institution of Oceanography,美国国家海洋与大气管理局,美国海军,美国地理空间情报局,General Bathymetric Chart of the Oceans 和 Europa Technologies

Google Earth显示2008年古斯塔夫飓风路径的KML

(2) GeoRSS

RSS是简易资讯聚合(Really Simple Syndication)的简称,也被称为丰富站点摘要(Rich Site Summary)或 RDF 站点摘要(Resource Description Framework Site Summary)。它是互联网上发布信息,特别是具有实效性的信息(如新闻和火灾简讯等)的一种主要格式。RSS家族包括RSS和ATOM格式,前者出现于1999年,后者出现于2003年。它们都是简单的XML格式,只有几个为数不多的标签,来描述每一条信息的名称、摘要、全文链接和发布时间等,非常容易理解和使用,得到了广泛应用。订阅者可以将自己感兴趣的多个RSS “聚合”到RSS阅读器软件中,为自己提供方便的“一站式”服务,而不必分别到各个网站上一遍一遍地查看它们是否更新了。

RSS被很多新闻媒体、社交网站以及政府官方网站作为一种发布新消息的方法。例如,CNN(美国有线新闻网)、纽约时报、路透社、《科学》杂志、Twitter(推特,美国一个微博客网站)、Y〇uTube(著名视频网站)均采用这种技术及时发布信息。世界卫生组织(WHO)以RSS格式发布最新的流行病和传染病( http://twitter.com/statuses/user—timeline/14499829.rss );美国政府在其电子政 务门户网站( http://USA.gov )上发布有上千个RSS;利用RSS,联邦紧急管理署发布与突发性事件相关的新闻和图片;美国人口普查局发布如当前人口统计相关的新闻;疾病控制和预防中心发布最新的疾病发病率和死亡率报道。

美国政府在其电子政务门户网站( http://USA.gov )上发布有上千个RSS

随着RSS的流行,人们希望不仅能看到发生了什么,而且希望能看到事件是在哪里发生的。GeoRSS是一个在RSS和其他XML中添加位置信息的标准(OGC,2006c)。GeoRSS 有三种格式:W3C Geo、OGC GeoRSS-Simple 和GeoRSS-GMLO

  • W3C Geo:只能描述点状要素,采用WGS 84经纬度坐标。这一标准虽然还被使用着,但它已经是一种过时的标准,不推荐使用。
  • OGC GeoRSS-Simple:能够描述基本的几何形状(包括点、线、矩形和多边形)及其属性(包括要素类型、要素名称、关系标签、高程以及半径)。名副其实,GeoRSS-Simple的设计简洁明了,其坐标参考系通常是WGS 84经 纬度。
  • OGC GeoRSS-GML:比GeoRSS-Simple支持更多的地理要素。如果不标明坐标参考系,其坐标缺省是WGS84经纬度,但此规范允许定义和采用其他的坐标体系。

GeoRSS通过对RSS的扩展,成为在Web上请求、共享和集成地理信息的一种简洁格式。GeoRSS也普遍用在 Mashup 应用 软件中。下面是一些GeoRSS应用的例子。

  • Twitter提供接近实时的“谁说了什么,发生在哪里”的GeoRSS信息,允许用户在地图上显示这些微博客内容。
  • Flickr在线相册提供了一个REST接口,以GeoRSS的格式返回一个给定区域的照片信息。例如,http://api. flickr. com/services/feeds/geo/United + States/Califomia/Hollywoocl这个URL可以返回美国好莱玛地区的照片信息。
  • 全球灾难警报和协调系统( http://www.gdacs.org )提供一个接近实时的GeoRSS源,及时报告全球正在发生的自然灾难,如地震、热带飓风和洪水。
  • USGS 用 GeoRSS 格式播报地震信息。其中,加利福尼亚州的地震数据几分钟更新一次,全球其他地方每半小时更新一次。
  • GloballncidentMap.com网站提供一系列实时的GeoRSS,内容包括儿童遭绑架的警报、危险品状况、恐怖主义以及其他威胁。

GloballncidentMap.com以GeoRSS的格式提供一系列有关公共安全和恐怖威胁的事件,本例利用ArcGISViewer for Flex来显示这些事件及其位置。(注:情报源较多,不便取得许可,本图为模仿图;致谢:TmnsitSecurityReport.com和美国国家公园管理局)

GloballncidentMap.com以GeoRSS的格式提供一系列有关公共安全和恐怖威胁的事件

标准化机构面临的挑战

GIS产品和应用开发人员希望标准简单易用,但是标准化机构往往需要考虑多种情况,这样制定出来的标准具有较好的包容性,但也往往导致标准太复杂而不易被采用。OGC的Sam Bacharach (2006)曾用如下比喻解释简化GML(地理标记语言)标准的必要性: “你注意过孩子们是如何利用64色蜡笔的吗? 一些孩子仅将红、蓝、绿、黄、黑等几种颜色检出就可以作画了。这几种颜色简单易用,尽管不多,但已经提供了一个可以解决问题的方案,足以描绘一个在后园游泳池里玩耍的小狗的图画。”

这个比喻不仅解释了简化GML的重要性,也解释了标准化机构所面临的一个挑战,即如何把握简单、易用与完整、全面之间的平衡。

另外,业界希望标准化机构能早日制定标准,以供业界采用。而标准化机构有其谨慎的工作流程,从制定方向、邀请提案、项目组或成员递交草案到成员审阅、修改和表决等,需要一定的时间才能制定一个标准。这样往往导致标准的出现滞后。等标准发布时,不同的厂商已经开发出了自己的方案,与标准并不兼容,这些厂商还需要再额外投人,对产品做些修改或编写一些转接程序,以实现对标准的支持。

标准的重要性不容置疑,尤其是政府项目招标工程中,往往要求投标产品对国际标准的支持,以实现系统的开放性和可扩展性。OGC网站上列出了通过其认证的产品厂家、软件名称、所支持的OGC标准的名称和版本(见http:// www.opengeospatial. org/resource/products/compliant)。

Web服务的优化

本节介绍如何提高Web服务质量(quality of service,QoS)。服务质量主要包含如下几个重要指标。

  • 性能:描述系统的反应效率,通常以响应时间来衡量。
  • 伸缩性:描述系统在用户数量增加的情况下,能否保持较高的性能,通常以所能同时支持的用户数量来衡量。
  • 可用性:描述一个系统的可访问和可操作程度,通常以系统运行时间的百分比来衡量。一个系统的可用性是99.99%,那么该系统最多每天只能有9秒的停机时间(包括故障造成意外停机和系统维护所需的人为停机)
  • 安全性:描述系统的保密能力和防御能力。

预处理(缓存)

预处理,又称缓存,是指系统预先生成地图或执行其他任务,把结果存储起来以备后用,而不是在系统运行中接到用户请求时再实时生成地图或执行任务。如图3.18所示,如果有缓存,Web服务器可以从缓存中快速找回结果,而不再需要到数据库中读取数据,实时完成制图和进行其他处理。缓存减少了 GIS服务器和数据库服务器的负担,是提高WebGIS服务质量的一种有效途径。

Web服务器可以从缓存中快速找到结果,迅速响应用户请求,从而减小对GIS服务器和数据库的压力,提高服务的质量缓存技术主要用作生成地图

地图缓存,也称为地图瓦块或切片,是按照一系列的比例尺,预定生成一系列的地图切片(或称瓦块),以便快速显示。

制作地图缓存的主要原因有: 

  • 提髙系统的性能、伸缩性和可用性:缓存减少了服务器的负担,用户可以获得快速的响应,从而可以节约用户的时间。
  • 提高制图质量:可以使用高级的符号和复杂的图层,预先生成高质量的地图。
  • 行业惯例:在目前的Web地图应用中,基础底图广泛采用了缓存,这已经成了行业的惯例,也改变用户对WebGIS的期望,他们期望所有的WebGIS都能提供缓存这种较好的用户体验。

在创建缓存之前,需要做一些规划,例如,使用哪种坐标系、采取哪种瓦块方案。瓦块方案包括比例尺级别、每一级的比例尺、瓦块的尺寸(如256像素x256像素)、瓦块的起点坐标、瓦块区域以及图片格式(如JPEG、PNG 8、PNG 24或者 PNG 32)。如果你的地图将与 ArcGIS Online、Google Maps 或者 Microsoft Bing Maps —起使用,那么,你的地图应该采用与它们相同的坐标系,即WGS 84 Web墨卡托,你的瓦块方案也应该与它们相匹配。缓存的创建可能需要很长的时间完成,这取决于地图的复杂程度和瓦块方案,特别是比例尺的级数和比例尺的大小,比例尺最大的几层一般占据制作缓存的绝大部分时间。缓存最适合不经常变化的地图,如街道地图、影像地图、地形图以及其他基础底图。如果你的数据经常变化,可以采用定期更新缓存来保证瓦块的现势性,也可以不采用瓦块,而米用动态地图的方法。

算法和系统的优化

WebGIS应当仔细考虑软件算法和软、硬件系统的优化问题,以到达最佳性能。每一项GIS任务都有多种不同的实现方法,发现和采用最优的算法可以大大提高系统的性能。例如,在地图缓存不可行或者不是最优方案的情况下,动态绘制地图就显得必要,而动态生成地图一般是比较慢的。GIS数据库调试也是WebGIS的一个重要组成部分。一些基本的技术包括把地理数据统一成需要的投影(如Web墨卡托);创建索引,包括空间索引和属性索引;保持高效的表空间;清理表空间和服务器驱动盘的碎片;把索引甚至数据预先加载到内存中;及时更新数据库的统计信息(以便数据库在执行查询时能选择最佳的执行途径)。系统的配置方案需要考虑有多少用户、可能有多少人在同时使用这个系统、他们分别在利用这个系统做什么工作、系统的数据量有多大、数据量将来如何增长、项目要求的响应速度和可用性是多少,根据这些因素配置足够的软件和硬件。

故障转移和负载平衡

故障转移和负载平衡是两种通过冗余配置来提高系统可靠性和可用性的部署方式。故障转移是指当一个服务器发生故障或需要维修时,系统能自动或人工地将Web用户的请求重新指向到另一个服务器。负载平衡是把用户的请求分配给两个或多个服务器,让多个服务器共同分担系统的工作。大型WebGIS系统应当考虑故障转移和负载平衡。站点使用有一个Web网关来接受传人的请求,并把这些请求分配给多个GIS服务器,实现负载平衡。如果一个GIS服务器计算机变得不可用,Web网关可以将请求分配给余下的GIS服务器,这样形成一个“高可用性”的架构。

降低对互联网带宽的压力

Web服务接收客户端的请求并把结果返回给客户端,两者之间的数据传输,特别是地理数据的传输,往往需要相当大的互联网带宽;否则,Web服务的质量将受到影响。以下方法可以降低对互联网带宽的压力,从而可以提高Web服务的质量。

  • 利用浏览器端的缓存:浏览器端与服务器端的缓存不同。服务器端的缓存主要是预先生成地图瓦块或其他结果, 而浏览器端的缓存主要是指对那些已经下载到浏览器中的内容,不要再次下载。 浏览器端的缓存内容往往是以URL为标识的,因而REST风格的Web服务便于系统充分利用浏览器端的缓存来提高系统的性能。
  • 采用HTTP压缩:启用Web服务器的压缩选项,对Web服务的请求和结果进行压缩, 然后再传递,这样可以降低50%数据传输量,提高系统的传输效率。
  • 选择适当的数据格式:例如,在很多情况下,JS0N和AMF比XML更为轻巧,比XML更便于传输。

Web服务的安全保护

很多地理Web服务是公开的和免费的,但一些企业和政府等机构所发布的Web服务可能包含涉及本单位机密、涉及客户隐私或需要收费的内容,这些Web服务需要保护起来。如下是一些保护Web服务安全的基本技术。

  • 使用专网和虚拟专用网:在此方案中,Web服务及其用户共同处于某单位的内网中, 通过防火墙等方法与外网隔绝,外网用户无法访问。虚拟专用网(VPN)在互联网上创建一个安全的通道。 通过VPN,即使客户端不在单位办公室里,依然可以登录内网,使用内网上的Web服务。
  • 身份验证:通过用户角色和权限来保护Web服务。用户身份可以采用轻型目录访问协议(LDAP)、 Windows Active Directory等来管理。
  • 安全令牌(token):—个令牌是一个加密字符串,包含加密的授权信息。令牌通过申请或在用户登录时获得。
  • 安全超文本传输协议(HTTPS):HTTPS对Web服务和客户之间的传输数据加密,避免信息被截获和篡改。
  • 反向代理:以代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给客户端。 这样,代理服务器就可以把GIS服务器隐藏在内网中,在GIS服务器和可能的恶意攻击之间提供了一道屏障, 提供了一个保护层。

Web服务技术是分布式计算和GIS中的重要进展,是现代WebGIS的核心。地理空间Web服务是GIS应用从封闭的系统向开放的、松散耦合的架构转变的推动力,是建立地理聚合应用的组件、云GIS提供服务的一种重要形式,是下一代空间数据基础设施的基础,提供了一种基于地理信息的协同方式。政府和企业等可以把他们的数据和功能提供成Web服务,建设成一个Web服务生态体系,在此基础上可以孕育大量的具有新价值的应用,这种互相协作的形式可以使地理空间领域的投资取得最大化的社会效益。