2.3. 地理Web服务

Web服务是WebGIS发展的一大进步,是现代WebGIS的核心技术和重要标志。它结合了地理信息系统、程序组件和互联网的优点,深刻地改变了地理信息系统的开发和应用方式。它绕过了本地数据转换和本地软件安装的复杂环节,实现了不同计算机系统和不同部门在Web服务级别的集成,为软件应用开发提供了新的基础模块,为跨部门协调与合作提供了新途径,为国家空间数据基础设施(NSDI)提供了技术框架。

越来越多的组织发布和共享自己的数据,并将其功能作为自己的组织(通常是其他组织)的Web服务,可以将这些服务组合到其他WebGIS应用程序中。

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

2.3.1. 从网站到Web服务

Web服务的出现及其优势

WebGIS在20世纪90年代初出现后发展迅速,但早期的Web应用系统和软件,包括WebGIS,大多是只能独立使用的网站。该系统在内部结构和外部开放性方面的局限性逐渐显现,难以充分发挥WebGIS的潜力。

>限制1>>系统之间缺乏良好的互操作性,每个WebGIS都是一个孤立封闭的系统,不同的系统无法调用彼此的功能和共享信息,无法互操作。>假设系统A的某个函数正是系统B所需要的,但是由于系统A是封闭的,并且不提供基于Web的编程接口,所以系统B的客户端和服务器都不能调用系统A的函数,反之亦然,系统A也不能调用系统B。

>限制2

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

随着信息社会的发展,越来越多的实际应用需要调用、组合或嵌套其他WebGIS系统提供的功能和信息。因此,如何使WebGIS开放起来,使不同的系统之间可以相互调用,就变得非常重要。

在20世纪90年代末,这不仅是WebGIS领域面临的问题和需求,也是整个信息技术行业的需求。当时,微软、甲骨文、IBM、万维网联盟(W3C)等机构都在这方面展开了探索,研究和发布Web服务技术。

近年来,Web服务技术不断完善,其定义也发生了变化。早期Web服务的定义主要涉及到SOAP、XML和WSDL技术。现在,SOAP不再是实现Web服务的唯一方式。REST样式的Web服务扩展了Web服务的概念。

Web服务是在Web服务器上运行的程序,该服务器具有可由其他程序通过Internet协议(主要是HTTP)调用的编程接口。Web服务技术代表了分布式计算的一项重要进步,它用远程服务器上的功能取代了本地计算机上的功能。

Web服务可以这样理解:桌面软件由一系列共同运行的本地程序组成,这些程序被认为是分布式的,运行在不同的Web服务器上,但仍然能够相互通信并作为一个整体工作-这就是Web服务的初衷。

比较网页和Web服务有助于理解Web服务。Web服务不同于普通网页:

  • 网页是供人类理解和阅读的,主要是以HTML格式,它包含内容和风格(字体大小和颜色,页面布局...)等。

  • Web服务是由客户端计算机程序调用的基于Web的编程组件。

    它的结果主要是一种可以由XML或JSON等计算机程序自动解析的格式,而不是直接由人类读取的格式。

完整的Web服务体系由提供者、用户和门户三部分组成。服务提供商和用户不必知道彼此的存在。提供商可以在门户中注册他们的Web服务信息,用户可以查询门户,找到他们需要的服务,并使用这些服务(如下所示)。

_images/imgvze23.png

Web服务继承了Web程序和开发接口的特点。与传统的计算方法相比,Web服务具有以下优势:

  1. 开放性

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

  1. 独立于编程语言和操作系统

Web服务基于Web平台,并使用HTTP协议进行远程调用,它不是由调用的客户端程序编译。

无论使用哪种编程语言(如Java、.NET或C++等)、部署在什么操作系统(如Windows、Linux或MacOS等)上、以及哪种Web应用服务器(如IIS或APACHE/Tomcat等),客户端都可以以同样的方式调用Web服务。客户端在调用Web服务时不绑定任何编程语言,开发人员可以自由选择.NET、Java、Python、JavaScript、Flex或Silverlight等开发语言。

  1. 松耦合可集成性

客户端软件和它调用的Web服务不必在同一台计算机上运行,这两者并不一定相互依赖。

当客户端对某个Web服务不满意或该Web服务无法使用时,客户端可以用其他Web服务替换。

只要两个Web服务的接口相同,客户端只需要指向新Web服务的URL,而不需要其他更改。

从Web服务提供者的角度来看,它可以更改或更新Web服务,例如从J2EE迁移到.NET,反之亦然。只要Web服务的接口保持不变,这些更改对调用者来说就是透明的。它不需要做任何改变(柴晓路,2002)。松耦合功能便于灵活组合和嵌套,满足用户业务需求。

  1. 发布和更新的一致性

当更新Web服务或发布新版本时,只需要在服务器端进行更新,每个客户端程序都会调用最新的Web服务,因此不需要在每个客户端单独安装和更新软件包。这是Web服务相对于桌面组件技术的一个重要方面。

2.3.2. 地理空间Web服务的影响

目前,Web服务已经成为地理信息系统的核心,它的出现对地理空间产业产生了巨大的影响,为实现地理空间信息共享、互操作和跨部门协作提供了极好的解决方案。

  1. 它是WebGIS产品差异化和新市场形成的加速器

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

Web服务是WebGIS的核心。WebGIS产品分为支持创建、分发、注册、查询和使用地理空间Web服务的各种产品。

在服务器端:如果有大量数据,可成为数据和地图服务的提供者。如果有独特的分析模型,则可以将其发布为专业的地理处理服务。这些服务可以是免费的,也可以是按次付费的。

在客户端:如果擅长开发,可选择为Web服务开发桌面客户端或移动客户端,显示在支持的服务类型或可用性方面的优势。

在门户网站方面:可收集符合一定标准的特定领域、特定主题或Web服务,对这些信息进行编目和发布,并允许需要这些服务的人进行查询。

  1. 它是将地理信息系统集成到主流信息系统的基本组成部分

在地理Web服务之前,地理信息系统与其他信息系统的集成往往是在本地实现的,即将地理数据复制到本地,在本地安装GIS软件,调用GIS功能非常复杂和有限。这些原因多年来一直将地理信息系统限制在一个小圈子里,阻碍了地理信息系统与主流信息系统的无缝集成。

地理Web服务隐藏了上述复杂性,而其他信息系统,如企业资源规划(ERP)和客户关系管理(CRM)系统,可以灵活、方便地调用和集成远程地理Web服务,以获取地图、数据和地理分析功能。Web服务的开放性和灵活性将极大地拓展地理信息系统的市场。

  1. 这是一种实现互操作的新方法。

如何实现互操作,即让不同的地理信息系统软件厂商的产品协同工作,是地理信息系统应用面临的挑战之一。在Web服务技术出现之前,互操作主要是在数据格式层面完成的,即采用标准组织制定的交换格式。

不同厂家的软件需要能够输入和输出这些格式,或者直接读写这些数据格式。

这种方法往往涉及数据复制和本地软件安装,相互脱节,缺乏灵活性。

Web服务使GIS社区能够将互操作性提升到基于Web服务的级别,而不仅仅是在这些级别上进行数据转换和安装转换工具(Bacharach,2005)。开放地理空间联盟(OGC)、国际标准化组织(ISO)等地理信息标准机构与时俱进,制定了一系列Web服务标准。

严格遵循这些标准,不同制造商的服务器和客户端可以互换使用,而不必考虑哪些公司的产品发布了这些服务,或者哪些公司的客户正在使用这些服务。

  1. 它是实现空间数据基础设施的重要框架

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

Web服务系统在服务提供者和信息用户之间建立了一种动态的通信和集成方式,这是建设空间基础设施的关键。

地理数据和其他信息可以将数据保留在原始单元中,他们可以维护数据并通过Web服务进行共享。当数据更新时,Web服务也会更新,这确保了Web服务的当前状态。

例如,地方政府可以持续维护和更新其土地记录,同时通过Web服务与其他单位共享这些信息。公用事业部门可以直接使用该地图服务作为底图,而不必在本地复制和安装其地图的原始数据。

另一方面,这个公共设施部门还可以通过Web服务的形式与其他政府部门共享其基础设施信息,以便市政府可以将这些信息用于土地利用规划审批等业务需求。这种协作方法为不同机构之间的地理信息共享和协作提供了一种新的、灵活的技术框架(Dangermond,2008)。

2.3.3. 地理Web服务的特点

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

地图和要素服务

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

地图服务的地图可以是动态制作的,也可以是预先制作的切片。切片地图服务可以极大地提高WebGIS应用程序的运行效率,缩短响应时间。它主要用于基本底图或内容相对静态或更新频率较低的地图。

动态地图服务在收到客户端的请求后,实时从数据库中读取数据来制作地图,因此特别适合数据更新频率较高的地图。

地图服务可以是二维的也可以是三维的。3D地图服务,也称为Globe服务,可以用地面高程作为第三维度来展示自然地形;它也可以以建筑物的高度作为第三维度,添加建筑物表面的纹理模型,来表达城市的轮廓或逼真的街道场景;3D地图服务可以呈现地形和城市建筑景观。

还可以使用属性字段的值作为第三个维度来突出显示主题。3D地图服务还可以使用属性的值作为第三个维度,突出显示该属性所表达的主题。

3D地图服务需要在3D客户端显示,用户可以进行缩放、旋转等操作。

除了制图,地图服务通常还可以支持属性查询、空间查询和动态投影转换等功能。

要素服务允许Web客户端在服务器端地理数据库中读写矢量地理数据,并可以在数据库中添加、编辑和删除地理要素及其坐标。

如图所示,市民可以在地图网站上进行标记,指明何时何地发现濒危鸟类,并提供相关信息。这些信息存储在服务器端地理数据库中,以方便政府部门划定生态保护区。

要素服务允许设计师在数字地图上快速绘制设计草图并同时分享他们的方案,允许其他同事对其进行修改,有效地支持协同地理设计。要素服务还使公众更容易在网络地图上进行标记并分享他们的所见所闻。

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

搜索服务可以索引GIS资源的内容(例如,一个数据层或整个企业级地理数据库),并允许Web用户通过查询关键字等方法来搜索他们需要的GIS资源。

搜索服务不同于将在本节后面介绍的元数据目录服务。虽然两者都可以支持地理信息资源的搜索和发现,但前者对地理数据本身进行索引,特别是属性表,而元数据目录服务依赖于地理数据的元数据。

影像服务主要通过Web服务提供栅格数据(如遥感影像和数字高程)。它支持栅格数据的提取、下载和地图制作。

例如,MapServer允许遥感部门将大量获取的图像发布为图像服务,而无需进行预处理,并且可以进行快速的实时处理,包括拼接、增强和派生各种图像产品,供Web客户端浏览和下载。

分析服务

地理编码服务:地理编码是将街道地址转换为地理坐标的过程。

反向地理编码是将地理坐标转换为相应地址的过程。地理编码服务是以Web的形式发布地理编码或反向地理编码功能。

目前,有许多免费的在线地理编码服务,例如由ArcGIS Online、Google、Microsoft和其他公司提供的服务。在某些情况下,例如Google等免费系统中的地址数据已过时,或者希望能够通过当地人已知的地址别名进行匹配,可使用ArcGIS Sever等产品创建自己的地理编码服务。

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

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

  1. 计算最佳路径:给定起点和终点,计算从起点到终点的最短或最快路径,或给定多个站点,计算可以通过它们的最短或最快路径。路线服务应考虑限速和转弯规则,以及交通拥堵、红绿灯等待时间和道路封闭(因施工或事故)等因素。

  2. 计算服务面积:计算在一定的行驶时间内,从某一个或多个点可以到达的街区。服务区分析可以帮助用户评估一个位置的覆盖范围或可达性,例如,它可以帮助城市规划者选择最佳消防站位置,以便在几分钟内覆盖指定的区域,或者帮助零售商选择最佳位置。最好的商店地址,这样才能服务更多的潜在客户。

  3. 找到最近的设施:找到离某个地点最近或开车时间最短的设施。这通常用于基于位置的服务(LBS),例如查找距离手机用户最近的餐厅或邮局。

  4. 几何服务:可进行几何变换、缓冲区计算、地图合成(要素简化)、地理要素合并裁剪、面积和长度计算、坐标投影变换。

  5. 地理处理服务:地理处理服务可以将各种用户创建的函数和分析模型发布为Web服务。

地理处理服务可以执行从简单的缓冲区分析和多边形叠加分析到复杂的回归分析和图像分类,从本地社区规划到全球气候变化分析,从模拟过去到预测未来的各种功能。

元数据目录服务

元数据是关于能够描述GIS数据和服务的数据的数据。

元数据目录服务可用于发布和搜索元数据,从而促进地理信息和服务的共享。

例如,提供者可以发布有关其数据和服务的元数据,而用户可以查询此元数据服务以找到满足其需求的数据和服务。

2.3.4. Web服务的接口类型

本节介绍Web服务的两种主要接口类型,即SOAP样式的Web服务和REST样式的Web服务,它们也称为SOAP API和REST API。

应该强调的是,Web服务并不局限于这两种类型。那些通过HTTP传输格式化数据的Web程序应该被视为Web服务。

SOAP样式的Web服务

SOAP的最初名称是简单对象访问协议,它使用封装的XML进行信息交换。2003年,它被万维网联盟采纳为推荐标准。简单对象访问协议的全称被认为具有误导性,因此万维网联盟在2007年放弃了全名,现在人们只使用首字母缩写SOAP。

SOAP样式的Web服务使用HTTP Post和SOAP封装的XML在客户端和服务器之间发送请求和交付结果。

_images/imgvze28.png

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

基于SOAP的Web服务将XML消息体封装在另一个XML文档中。这种“XML-in-XML”格式不方便人们手动创建SOAP请求和解析Soap结果,因此很难调用Soap服务。当然,有一些工具可以简化对SOAP服务的调用。基于SOAP的Web服务通常有Web服务描述语言(WebService Description Language)。

它以XML格式描述了Web服务提供的具体编程接口,便于开发人员理解和使用该Web服务。

REST风格的Web服务

REST(表象状态转移)是罗伊·菲尔丁在2000年的博士论文中提出的一种体系结构风格。Roy Fiding参与了HTTP规范的制定。他认为,SOAP没有充分利用HTTP的优势。他提出的REST风格的架构可以充分发挥HTTP的优势,降低开发的复杂性,并提高系统的可伸缩性(Richardson和Ruby,2007)。

当REST第一次被提出时,它并没有得到太多关注。它的概念和原则比较抽象,不同的人有不同的理解。它还没有在实际应用中得到充分的遵循或实施。

REST样式的Web服务通过HTTP发送数据,并且发送的信息没有封装在SOAP中。最常见的实现是将请求参数放在URL中,通过URL发送请求参数。REST风格的Web服务通常以JSON和XML格式向客户端返回结果,而不使用SOAP。

下图以REST的形式显示了上图中的相同函数。可以看出,REST接口比SOAP接口更简洁。

_images/imgvze30.png

REST接口的服务

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

REST服务中的Web资源支持特定的操作。例如,地图服务可以执行映射和查询操作,而地图服务中的单个数据层可以执行查询操作。

这些操作的结果可以以JSON等格式返回给客户端。例如,请求地图服务通过REST接口制作美国地图,并返回 800x500 像素,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在地图服务中查询加州各县的家庭收入中位数,请求返回JSON格式,URL请求大致为:

可以看出,REST中的所有请求基本上都是一个URL,更容易理解。

可使用许多编程语言(如.NET、Java JavaScript和Flex)来生成URL字符串并发送URL请求。

甚至可以将这个URL直接放到网络浏览器中,而不需要编程,就可以看到想要的结果,比如地图。因此,REST被认为是“Web的命令行”。

2.3.5. SOAP和REST的比较

下面比较了Web服务的SOAP和REST类型。SOAP类型的Web服务产生较早,相关技术比较成熟,应用也比较广泛。接口定义清晰严谨,开发环境高度支持。

但过于复杂,编程工作量和难度大,没有充分利用HTTP的优势,传输效率低;

SOAP的封装使得传输的XML文件复杂庞大,常常降低信息传输和解析的效率,甚至影响整个系统的性能。

鉴于这些认识,人们逐渐转向简单而高效的REST风格的Web服务(Cappelaere等人,2007)。在许多情况下,REST的简单性和效率超过了采用SOAP带来的严格性(Fu等人,2008年)。

比较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(未封装的)和二进制文件流等。

  • 轻便、简单、效率高,可以充分利用Web缓存等优点,并逐渐得到广泛应用

  • 对于服务提供商来说,它可以降低创建服务的成本和服务托管的成本

  • 对于基于Web服务进行应用程序开发的开发人员来说,可以降低难度,缩短学习时间,加快开发速度,降低开发成本。

  • 对于管理者来说,REST提供了更好的系统架构,可以获得更高的系统响应速度、更高的可靠性和可扩展性。