WMS-操作

背景

历史

2000年4月WMS 1.0.0版,2001年6月1.1.0版,2002年1月1.1.1版。OGC在2004年1月发布了WMS版本1.3.0。

版本

1.3是当前最新版本

测试套件
测试套件可用于:
启动位置

实现可以在OGC数据库中找到。 here

使用

通过一个高度可配置的界面,WMS标准使地图图像(但不是源数据)以标准图像格式提供。政府机构使用本标准出版各种官方地图制图。其他大型组织使用此标准使独立部门能够更轻松地进行内部交互。任何使用这个标准的人都可以使用它来覆盖来自许多不同来源的地图图像,而不管底层的软件是什么。

WMS为请求地理空间地图图像提供了一个标准接口。这样做的好处是WMS客户机可以从多个WMS服务器请求图像,然后将它们组合成一个视图供用户使用。该标准保证这些图像可以使用一个通用的地理空间坐标参考系相互叠加。许多服务器和客户端支持WMS。

与其他OGC标准的关系

  • OGC Web地图图块服务接口标准(WMTS):WMTS标准更适合只需要静态映射的高度可伸缩系统(许多并发请求)。它用可缓存的静态地图块来补充WMS标准。WMS服务器可以用作WMTS服务的数据源或呈现引擎。

  • OGC Web功能服务(WFS):WFS标准更适合于空间数据的扩展查询功能。它提供对地理要素数据的编程访问。WMS和WFS经常一起使用。同时发布WMS和WFS的组织通常使用相同的数据源。

  • OGC样式的图层描述符接口标准(SLD):SLD标准允许用户修改地图图像的地图外观。它是OGC WMS标准的可选功能。

  • OGC符号编码(SE):SE标准描述了如何定义地图符号。它用于修改地图图像的制图外观。它是OGC WMS和SLD标准的可选功能。

本节提供有关客户端能够对WMS服务器执行的WMS请求类型的详细信息。

WMS操作

Operation

Description

GetCapabilities

检索有关服务的元数据,包括支持的操作和参数,以及可用层的列表。

GetMap

检索指定区域和内容的地图图像。

GetFeatureInfo (可选)

检索地图上像素位置的基础数据,包括几何图形和属性值。

DescribeLayer (可选)

指示WFS或WCS以检索有关层的其他信息。

GetLegendGraphic (可选)

检索地图的图例。

GetCapabilities

请求

WMS服务器响应 GetCapabilities 请求返回有关服务的元数据,包括支持的操作和参数,以及可用层的列表。

GetCapabilities请求的示例如下:

http://metaspatial.net/cgi-bin/ogc-wms.xml?
SERVICE=WMS&
VERSION=1.3
REQUEST=GetCapabilities&

This is a link to a GetCapabilities request.

有三个参数(和值)被传递到WMS服务器, SERVICE=WMSVERSION=1.3REQUEST=GetCapabilities .

  • SERVICE 参数告诉服务器WMS请求即将到来。

  • VERSION 参数告诉服务器正在请求哪个版本的WMS。

  • REQUEST 参数告诉服务器请求的操作是 GetCapabilities 操作。

WMS标准要求请求始终包含这三个参数。下表总结了执行请求所需的参数和值。

GetCapabilities操作的参数

Parameter

Required

Description

SERVICE

是的

服务名称。值是 WMS

VERSION

是的

服务版本。价值是 1.0.01.1.01.1.11.3

REQUEST

是的

操作名称。值是 GetCapabilities

响应

响应是一个功能XML文档,其中包含WMS服务的详细描述。它包含三个主要部分:

章节能力文件

Service

包含服务元数据,如服务名称、关键字和操作服务器的组织的联系信息。

Request

描述WMS服务提供的操作以及每个操作的参数和输出格式。

Layer

列出可用的坐标系和图层。在某些服务器(如Geoserver)中,层的命名形式为“名称空间:层". 每层提供服务元数据,如标题、摘要和关键字。

GetCapabilities层样式部分

GetCapabilites响应包含 部分,其中详细说明了该层可用的样式。在下面的示例中,可用的样式是 违约 .

<Layer queryable="0" opaque="0" cascaded="0">
  <Name>nationalparks</Name>
  <Title>National Parks</Title>
  <EX_GeographicBoundingBox>
    <westBoundLongitude>-4.43064</westBoundLongitude>
    <eastBoundLongitude>1.99728</eastBoundLongitude>
    <southBoundLatitude>50.3532</southBoundLatitude>
    <northBoundLatitude>55.5917</northBoundLatitude>
  </EX_GeographicBoundingBox>
  <BoundingBox CRS="EPSG:27700"
         minx="246828" miny="56378.4" maxx="652374" maxy="633117"/>
  <Style>
    <Name>default</Name>
    <Title>default</Title>
    <LegendURL width="110" height="22">
      <Format>image/png</Format>
      <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
         xlink:type="simple"
         xlink:href="..."/>
    </LegendURL>
  </Style>
</Layer>

GetMap

请求

WMS服务器响应 GetMap 请求返回指定区域和内容的地图图像。

核心参数指定要显示在地图上的一个或多个图层和样式、地图范围的边界框、目标空间参照系统以及输出的宽度、高度和格式。指定参数值所需的信息,例如 layersstylesSpatial Reference Systems (SRS) 可从能力文件中获得。

响应是一个映射图像或其他映射输出工件,具体取决于请求的格式。

GetMap请求的一个示例是:

http://metaspatial.net/cgi-bin/ogc-wms.xml?
VERSION=1.3.0&
REQUEST=GetMap&
SERVICE=WMS&
LAYERS=DTM,Overview,Raster_250K,Topography,nationalparks,Infrastructure,Places&
STYLES=,,,,,,&
CRS=EPSG:27700&
BBOX=424735.97883597884,96026.98412698413,467064.02116402116,127773.01587301587&
WIDTH=400&
HEIGHT=300&
FORMAT=image/png&
BGCOLOR=0xffffff&
TRANSPARENT=TRUE&
EXCEPTIONS=XML

This is a link to a GetMaprequest.

getMap请求使用来自英国的数据访问服务器。请求指定一组没有特定样式(STYLES=,,,,,,)的层。此服务器有七个地图层:

  1. 数字地形模型

  2. 概述(概述1:1m)

  3. 栅格K(栅格1:250K)

  4. 地形(从OS VectorMap 1:50k地区获得的地形数据的选择)

  5. 国家公园(大不列颠国家公园)

  6. 基础设施(从OS VectorMap区1:50k获得的地形数据的选择)

  7. 命名地点(选择OS VectorMap District 1:50k的地形数据)

坐标参考系(CRS)是EPSG:27700,即全国地网参考系统。图像以PNG透明格式返回,宽度为400,高度为300像素背景色为白色(十六进制代码=0xffffff)。

下表总结了参数和值。

GetMap操作的标准参数

Parameter

需要?

Description

service

是的

服务名称。值是 WMS

version

是的

服务版本。价值是 1.0.01.1.01.1.11.3

request

是的

操作名称。值是 GetMap

layers

是的

要在地图上显示的图层。值是以逗号分隔的层名称列表。

styles

是的

要在其中渲染层的样式。值是以逗号分隔的样式名列表,如果需要默认样式,则为空。样式名在列表中可能为空,以使用默认层样式。

srs or crs

是的

地图输出的空间参考系统。值的形式为 EPSG:nnn . crs 是WMS 1.3.0中使用的参数键。

bbox

是的

地图范围的边界框。值是 minx,miny,maxx,maxy 以SRS为单位。

width

是的

地图输出的宽度,以像素为单位。

height

是的

地图输出的高度,以像素为单位。

format

是的

映射输出的格式。

transparent

地图背景是否应透明。值为 truefalse . 默认是 false

bgcolor

地图图像的背景色。值的形式为 RRGGBB . 默认是 FFFFFF (白色)。

exceptions

报告异常的格式。默认值为 application/vnd.ogc.se_xml

time

地图数据的时间值或范围。

sld

引用StyledLayerDescriptor XML文件的URL,该文件控制或增强地图图层和样式设置

sld_body

URL编码的StyledLayerDescriptor XML文档,用于控制或增强地图图层和样式设置

另一个WMS请求示例如下:

http://localhost:8080/geoserver/wms?
request=GetMap
&service=WMS
&version=1.1.1
&layers=topp%3Astates
&styles=population
&srs=EPSG%3A4326
&bbox=-145.15104058007,21.731919794922,-57.154894212888,58.961058642578&
&width=780
&height=330
&format=image%2Fpng

请求指定 topp:states 要在SRS中输出为PNG映射图像的层EPGS:4326和使用默认样式 population .

WMS请求也可以通过HTTP POST以XML文档的形式发送,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ogc:GetMap xmlns:ogc="http://www.opengis.net/ows"
            xmlns:gml="http://www.opengis.net/gml"
   version="1.1.1" service="WMS">
   <StyledLayerDescriptor version="1.0.0">
      <NamedLayer>
        <Name>topp:states</Name>
        <NamedStyle><Name>population</Name></NamedStyle>
      </NamedLayer>
   </StyledLayerDescriptor>
   <BoundingBox srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
      <gml:coord><gml:X>-130</gml:X><gml:Y>24</gml:Y></gml:coord>
      <gml:coord><gml:X>-55</gml:X><gml:Y>50</gml:Y></gml:coord>
   </BoundingBox>
   <Output>
      <Format>image/png</Format>
      <Size><Width>550</Width><Height>250</Height></Size>
   </Output>
</ogc:GetMap>

响应

GetMap请求的响应是一个映像。

../../_images/getmap-demo1.png

如果请求错误,服务器将返回错误消息。

时间

这个 TIME 参数允许按时间切片和空间分片过滤数据集以进行渲染。WMS GetMap请求的时间属性在WMS规范的版本1.3中描述。

指定时间

用于在WMS时间参数中指定时间的格式基于 ISO-8601 . 精度可能因服务器而异。

参数为:

TIME=<timestring>

时间遵循一般格式:

yyyy-MM-ddThh:mm:ss.SSSZ

在哪里?

  • yyyy :4位数年份

  • MM :2位月

  • dd :2位数的一天

  • hh :2位数小时

  • mm :2位数分钟

  • ss :2位秒

  • SSS :3位毫秒

日值和日内值用大写字母分隔 T ,整个字符串的后缀是 Z ,指示 UTC 对于时区。(WMS规范未规定其他时区。)

WMS服务器将应用 TIME 中所有临时启用的层的值 LAYERS GetMap请求的参数。

不带时态组件的层将正常服务,允许客户端在时态数据的同时包含政治边界等参考信息。

GetMap请求中Time参数的时间值示例

描述

时间规范

2001年12月12日下午6:00

2001-12-12T18:00:00.0Z

1993年5月5日下午11:34

1993-05-05T11:34:00.0Z

指定绝对间隔

客户机可以通过指定开始时间和结束时间(用一个 / 性格。

在这个场景中,开始和结束是 包容的 ;也就是说,来自指定范围的端点的样本将包含在渲染图块中。

绝对时间间隔的时间值示例

描述

时间规范

2002年9月

2002-09-01T00:00:00.0Z/2002-09-30T23:59:59.999Z

2010年12月25日

2010-12-25T00:00:00.0Z/2010-12-25T23:59:59.999Z

指定相对间隔

客户机可以通过指定具有相关持续时间的开始或结束时间(由 / 性格。

间隔的一端必须是时间值,但另一端可以是ISO 8601标准定义的持续时间值。特殊关键字 PRESENT 可用于指定相对于当前服务器时间的时间。

相对间隔的时间值示例

描述

时间规范

2002年9月

2002-09-01T00:00:00.0Z/P1M

2010年12月25日

2010-12-25T00:00:00.0Z/P1D

2010年12月25日前一整天

P1D/2010-12-25T00:00:00.0Z

当前时间前36小时

PT36H/PRESENT

减少精度时间

WMS规范还允许通过省略一些时间字符串来截断时间规范。通常服务器将时间视为一个长度等于 指定的最精确单位 在时间串中。例如,如果时间规范省略除“年”以外的所有字段,则它标识从该年年初开始的一年长的范围。

缩短精度时间的时间值示例

描述

缩短精度时间

等效范围

2002年9月

2002-09

2002-09-01T00:00:00.0Z/2002-09-30T23:59:59.999Z

2010年12月25日

2010-12-25

2010-12-25T00:00:00.0Z/2010-12-25T23:59:59.999Z

减少精度时间和范围

指定范围时,也允许缩短精度时间。范围包括在内。有效地将上述间隔的开始时间和结束时间包括在内。

具有范围的降低精度时间的时间值示例

描述

缩短精度时间

等效范围

2002年9月至12月

2002-09/2002-12

2002-09-01T00:00:00.0Z/2002-12-31T23:59:59.999Z

2010年12月25日下午12点至6点

2010-12-25T12/2010-12-25T18

2010-12-25T12:00:00.0Z/2010-12-25T18:59:59.999Z

指定时间列表

某些服务器(例如GeoServer)也可以接受离散时间值的列表。这对于某些应用程序非常有用,例如动画,其中一次等于一帧。

列表的元素用逗号分隔。

如果列表间距均匀(例如,每天或每小时采样),则可以使用斜线分隔的开始时间、结束时间和期间,将列表指定为一个范围。

具有时间值的列表示例

描述

列表符号

等效范围表示法

2012年8月12日至14日每天中午

时间=2012-08-12T12:00:00.0Z,2012-08-13T12:00:00.0Z,2012-08-14T12:00:00.0Z

时间=2012-08-12T12:00:00.0Z/2012-08-18:T12:00:00.0Z/P1D

1999年9月1日、10月1日和11月1日午夜

时间=1999-09-01T00:00:00.0Z,1999-10-01T00:00:00.0Z,1999-11-01T00:00:00.0Z

时间=1999-09-01T00:00:00.0Z/1999-11-01T00:00:00.0Z/P1M

指定周期性

周期性也以ISO-8601格式规定:大写P后跟一个或多个间隔长度,每个间隔长度由一个数字和一个字母组成,用于标识时间单位:

单位

缩写

Y

M

D

小时

H

分钟

M

S

值的年/月/日组必须与小时/分钟/秒组分隔 T 性格。如果省略小时、分钟和秒,则T本身可以省略。此外,可以完全忽略包含0的字段。

允许使用分数值,但仅限于包含的最具体值。

期间必须平均划分为由开始/结束时间定义的间隔。因此,如果开始/结束时间表示12小时,则允许1小时,但5小时不会。

例如,下面列出的多个表示都是等效的。

  • 一小时:P0Y0M0DT1H0MS、PT1H0MOS或PT1H

  • 90分钟:P0Y0M0DT1H30mS、PT1H30M或P90M

  • 18个月:P1Y6M0DT0H0MS、P1Y6M0D、P0Y18M0DT0H0MS或P18M

GetFeatureInfo

请求

WMS服务器响应 GetFeatureInfo 请求返回地图上像素位置的基础数据,包括几何体和属性值。它类似于wfsgetfeature操作,但是在输入和输出方面都不太灵活。一个优点 GetFeatureInfo 请求使用返回的WMS图像中的(x,y)像素值。对于无法执行真正地理引用的天真客户机来说,这更容易使用。

GetFeatureInfo操作的标准参数为:

GetFeatureInfo操作的参数

Parameter

Required

Description

SERVICE

是的

服务名称。值是 WMS

VERSION

是的

服务版本。价值是 1.0.01.1.01.1.11.3

REQUEST

是的

操作名称。值是 GetFeatureInfo

QUERY_LAYERS

是的

要查询的层的逗号分隔列表`

INFO_FORMAT

功能信息响应的格式(MIME类型)。

FEATURE_COUNT

要返回的最大功能数。默认值为1。

i

是的

地图上的像素列点。0是左侧。 x 是WMS 1.1.0中使用的参数键。

j

是的

地图上的像素行。0是顶部。 y 是WMS 1.1.0中使用的参数键。

EXCEPTIONS

报告异常的格式。默认值为 application/vnd.ogc.se_xml .

示例格式如下:

格式 INFO_FORMAT GetFeatureInfo请求中的参数

Format

Syntax

Notes

TEXT

info_format=text/plain

简单文本输出。(默认格式)

GML 2

info_format=application/vnd.ogc.gml

仅适用于简单功能

GML 3号

info_format=application/vnd.ogc.gml/3.1.1

适用于简单和复杂的功能

HTML

info_format=text/html

使用在服务器上定义的HTML模板。

JSON

info_format=application/json

简单的JSON表示。

请求功能信息的示例 topp:states HTML格式的层是:

http://localhost:8080/geoserver/wms?
request=GetFeatureInfo
&service=WMS
&version=1.1.1
&layers=topp%3Astates
&styles=
&srs=EPSG%3A4326
&format=image%2Fpng
&bbox=-145.151041%2C21.73192%2C-57.154894%2C58.961059
&width=780
&height=330
&query_layers=topp%3Astates
&info_format=text%2Fhtml
&feature_count=50
&x=353
&y=145
&exceptions=application%2Fvnd.ogc.se_xml

GeoJSON格式的功能信息请求示例如下:

http://localhost:8080/geoserver/wms?
&INFO_FORMAT=application/json
&REQUEST=GetFeatureInfo
&EXCEPTIONS=application/vnd.ogc.se_xml
&SERVICE=WMS
&VERSION=1.1.1
&WIDTH=970&HEIGHT=485&X=486&Y=165&BBOX=-180,-90,180,90
&LAYERS=COUNTRYPROFILES:grp_administrative_map
&QUERY_LAYERS=COUNTRYPROFILES:grp_administrative_map
&TYPENAME=COUNTRYPROFILES:grp_administrative_map

结果将是:

{
"type":"FeatureCollection",
"features":[
   {
      "type":"Feature",
      "id":"dt_gaul_geom.fid-138e3070879",
      "geometry":{
         "type":"MultiPolygon",
         "coordinates":[
            [
               [
                  [
                     XXXXXXXXXX,
                     XXXXXXXXXX
                  ],
                  ...
                  [
                     XXXXXXXXXX,
                     XXXXXXXXXX
                  ]
               ]
            ]
         ]
      },
      "geometry_name":"at_geom",
      "properties":{
         "bk_gaul":X,
         "at_admlevel":0,
         "at_iso3":"XXX",
         "ia_name":"XXXX",
         "at_gaul_l0":X,
         "bbox":[
            XXXX,
            XXXX,
            XXXX,
            XXXX
         ]
      }
   }
],
"crs":{
   "type":"EPSG",
   "properties":{
      "code":"4326"
   }
},
"bbox":[
   XXXX,
   XXXX,
   XXXX,
   XXXX
]
}

例外情况

当客户端向WMS服务器发出的请求未正确执行时,服务器需要报告异常。WMS服务器可以报告异常的格式如下表所示。

例外情况

Format

Syntax

Notes

XML

application/vnd.ogc.se_xml

错误用XML描述。

PNG

application/vnd.ogc.se_inimage

错误将作为图像返回。

空白

application/vnd.ogc.se_blank

返回一个空白图像。

JSON

application/json

错误报告为简单的JSON表示。