4.3. web地图服务的开放规范

在上一课中,您了解了存储在计算机上作为文件和数据库的数据的一些开放格式。现在,让我们检查一些用于绘制地图的web服务的开放规范。

4.3.1. 什么是规范文件?

回想第1课,web服务接收用户请求并发送回响应。为了让web服务跨平台工作,请求和响应的语法需要一致,并在所谓的“规范”文档中公开描述。当软件开发人员创建支持web服务的服务器或客户机时,他们将规范文档视为圣经;为了使web服务正常工作,必须严格遵守这一契约。

要了解规范的外观,请花一分钟浏览Open Geospatial Consortium(OGC)WMS specification (特别是第7节)。不要太担心这一切意味着什么。我们将在后面的课程中深入讨论其中的一些内容。请注意,如果要与服务通信,您和服务器必须使用明确定义的方法和参数。

因为规范必须描述Web服务的每种方法和参数,所以它们看起来可能是冗长而复杂的文档。幸运的是,您几乎不必直接使用该规范,因为您将使用相对用户友好的服务器,并且客户端的设计旨在消除使用Web服务的复杂性。例如,在本课程的稍后部分,您将使用GeoServer创建WMS,并使用QGIS在地图上显示WMS。为此,您不必参考WMS规范,因为这些程序负责制定请求并处理响应。但是,可以肯定的是,GeoServer和QGIS的开发人员在编写源代码时必须仔细检查WMS规范。

4.3.2. OGC W*S规范

OGC是一个为空间数据和web服务开发开放规范的行业联盟。OGC由来自私人公司、政府组织、非政府组织和大学的代表组成。

OGC已经为以web格式命名的GIS web服务生成了一系列规范 _____ 服务(有时缩写为W*S)。例如:

  • Web地图服务(WMS)返回服务器绘制的地图的栅格化图像。这不允许进行太多复杂的分析,但它对于可视化非常有用,因此WMS已经成为W*S服务中最广泛实现和支持的。

    基本的WMS动态地绘制地图,但是WMS规范的附加部分提供了从服务器请求预先绘制的图像瓦片的语法。首先,我们将使用动态绘制的WMS。

  • Web特征服务(WFS)返回允许空间分析和编辑的矢量几何和属性。矢量特征使用地理标记语言(Geography Markup Language,GML)在XML中进行通信,GML本身是OGC定义的用于传输矢量特征数据的开放规范。

  • Web Coverage Services(WCS)返回称为coverages的数据块(不要与以前的向量Arc/INFO coverages混淆),这些数据块通常用于栅格显示和分析。

  • Web处理服务(WPS)允许用户在服务器上调用地理处理操作。

几乎所有的自由和开放源码软件地理信息系统服务器和一些专有服务器都设计了它们的web服务,以便通过OGC规范进行通信。此外,许多用于开发web地图的客户端api,例如OpenLayers和fluel,都支持WMS作为web地图层。像QGIS这样的桌面GIS程序支持使用WMS作为层。实际上,按钮

../../_images/ogc_qgis.png

允许您将WMS、WCS和WFS web服务添加(从左到右)为QGIS中的层。

4.3.3. 地理服务REST规范

2010年,专有的GIS软件公司Esri发布了一个名为GeoServices REST规范的开放文档(现在是GeoServices API )描述其ArcGIS服务器web服务默认使用的请求和响应模式。(尽管我提到可以在ArcGIS服务器服务上启用OGC通信,但此选项不是默认选项。)

GeoServices REST规范使用了与web服务通信的RESTful模式。OGC服务提供了一个简单的方法列表,这些方法通常返回XML(当它们不返回图像时),REST则在url的可导航层次结构中公开信息,这些url可以返回HTML、JSON、图像或其他数据类型的聚焦包。例如,使用REST和GeoServices REST规范,可以调用http://<server>/MapServer/layers/ 来获取地图服务中的层列表,并调用http://<server>/MapServer/layers/0来获取有关服务中第一个层(索引为0)的信息,依此类推。

尽管ArcGIS服务器已经使用这种通信模式好几年了,Esri最终还是将规范作为一个开放文档放到了网上,这样开发人员就会感到被鼓励(或者至少在法律上被允许)实现支持这种模式的客户机和服务器。

2013年,该规范引发了一些争议,当时该文件的一个稍微修改过的版本(删除了Esri参考)被提交表决,作为OGC规范通过。包括Esri在内的支持者认为,OGC缺乏一个灵活、RESTful的替代W*S规范的方法(这一课之前链接到了2013年Esri用户会议的问答项目,阐述了这一论点,但此后这篇文档就被离线了)。Opponents expressed concern 关于功能重叠与现有的服务类型,并声称,OGC通过该规范将给予ESRI在竞争合同中的不公平优势。这场骚动的意义重大,足以让投票过程中的规范被拉出来。

尽管GeoServices REST规范不是OGC规范,但我在本课中提到它是一个由专有软件供应商自愿开放的规范示例,目的是鼓励互操作性和供应商平台的扩展。如果您使用某个人在ArcGIS服务器上托管的web服务进行任何开发,那么很可能在您的职业生涯中的某个时刻会遇到此规范。