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请求类型的详细信息。
Operation |
Description |
---|---|
|
检索有关服务的元数据,包括支持的操作和参数,以及可用层的列表。 |
|
检索指定区域和内容的地图图像。 |
|
检索地图上像素位置的基础数据,包括几何图形和属性值。 |
|
指示WFS或WCS以检索有关层的其他信息。 |
|
检索地图的图例。 |
GetCapabilities¶
请求¶
WMS服务器响应 GetCapabilities 请求返回有关服务的元数据,包括支持的操作和参数,以及可用层的列表。
GetCapabilities请求的示例如下:
https://ows.terrestris.de/osm/service?
REQUEST=GetCapabilities&
SERVICE=WMS&VERSION=1.3.0
This is a link to a GetCapabilities request.
有三个参数(和值)被传递到WMS服务器, SERVICE=WMS
, VERSION=1.3
和 REQUEST=GetCapabilities
.
SERVICE
参数告诉服务器WMS请求即将到来。VERSION
参数告诉服务器正在请求哪个版本的WMS。REQUEST
参数告诉服务器请求的操作是 GetCapabilities 操作。
WMS标准要求请求始终包含这三个参数。下表总结了执行请求所需的参数和值。
Parameter |
Required |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
响应¶
响应是一个功能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 请求返回指定区域和内容的地图图像。
核心参数指定要显示在地图上的一个或多个图层和样式、地图范围的边界框、目标空间参照系统以及输出的宽度、高度和格式。指定参数值所需的信息,例如 layers
, styles
和 Spatial Reference Systems (SRS)
可从能力文件中获得。
响应是一个映射图像或其他映射输出工件,具体取决于请求的格式。
GetMap请求的一个示例是:
https://ows.terrestris.de/osm/service?
REQUEST=GetMap&
SERVICE=WMS&
VERSION=1.3.0&
LAYERS=OSM-WMS&
STYLES=&
CRS=EPSG:4326&
BBOX=51.49451,-0.11377,51.53267,-0.06971&
WIDTH=400&
HEIGHT=300&
FORMAT=image/png&
TRANSPARENT=TRUE
This is a link to a GetMap request.
getMap请求访问Terrestris提供的服务器。该请求检索根据OpenStreetMap数据创建的地图
坐标参考系(CRS)是EPSG:4326,这是1984年世界大地坐标系(WGS84)坐标参考系。图像以PNG透明格式返回,宽度为400,高度为300像素。
下表汇总了可用的参数和值。
Parameter |
需要? |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
要在地图上显示的图层。值是以逗号分隔的层名称列表。 |
|
是的 |
要在其中渲染层的样式。值是以逗号分隔的样式名列表,如果需要默认样式,则为空。样式名在列表中可能为空,以使用默认层样式。 |
|
是的 |
地图输出的空间参考系统。值的形式为 |
|
是的 |
地图范围的边界框。值是 |
|
是的 |
地图输出的宽度,以像素为单位。 |
|
是的 |
地图输出的高度,以像素为单位。 |
|
是的 |
映射输出的格式。 |
|
不 |
地图背景是否应透明。值为 |
|
不 |
地图图像的背景色。值的形式为 |
|
不 |
报告异常的格式。默认值为 |
|
不 |
地图数据的时间值或范围。 |
|
不 |
引用StyledLayerDescriptor XML文件的URL,该文件控制或增强地图图层和样式设置 |
|
不 |
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请求的响应是一个映像。

如果请求错误,服务器将返回错误消息。
时间¶
这个 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请求的参数。
不带时态组件的层将正常服务,允许客户端在时态数据的同时包含政治边界等参考信息。
描述 |
时间规范 |
---|---|
2001年12月12日下午6:00 |
|
1993年5月5日下午11:34 |
|
指定绝对间隔¶
客户机可以通过指定开始时间和结束时间(用一个 /
性格。
在这个场景中,开始和结束是 包容的 ;也就是说,来自指定范围的端点的样本将包含在渲染图块中。
描述 |
时间规范 |
---|---|
2002年9月 |
|
2010年12月25日 |
|
指定相对间隔¶
客户机可以通过指定具有相关持续时间的开始或结束时间(由 /
性格。
间隔的一端必须是时间值,但另一端可以是ISO 8601标准定义的持续时间值。特殊关键字 PRESENT
可用于指定相对于当前服务器时间的时间。
描述 |
时间规范 |
---|---|
2002年9月 |
|
2010年12月25日 |
|
2010年12月25日前一整天 |
|
当前时间前36小时 |
|
减少精度时间¶
WMS规范还允许通过省略一些时间字符串来截断时间规范。通常服务器将时间视为一个长度等于 指定的最精确单位 在时间串中。例如,如果时间规范省略除“年”以外的所有字段,则它标识从该年年初开始的一年长的范围。
描述 |
缩短精度时间 |
等效范围 |
---|---|---|
2002年9月 |
|
|
2010年12月25日 |
|
|
减少精度时间和范围¶
指定范围时,也允许缩短精度时间。范围包括在内。有效地将上述间隔的开始时间和结束时间包括在内。
描述 |
缩短精度时间 |
等效范围 |
---|---|---|
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后跟一个或多个间隔长度,每个间隔长度由一个数字和一个字母组成,用于标识时间单位:
单位 |
缩写 |
---|---|
年 |
|
月 |
|
天 |
|
小时 |
|
分钟 |
|
秒 |
|
值的年/月/日组必须与小时/分钟/秒组分隔 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操作的标准参数为:
Parameter |
Required |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
要查询的层的逗号分隔列表` |
|
不 |
功能信息响应的格式(MIME类型)。 |
|
不 |
要返回的最大功能数。默认值为1。 |
|
是的 |
地图上的像素列点。0是左侧。 |
|
是的 |
地图上的像素行。0是顶部。 |
|
不 |
报告异常的格式。默认值为 |
示例格式如下:
Format |
Syntax |
Notes |
---|---|---|
TEXT |
|
简单文本输出。(默认格式) |
GML 2 |
|
仅适用于简单功能 |
GML 3号 |
|
适用于简单和复杂的功能 |
HTML |
|
使用在服务器上定义的HTML模板。 |
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 |
|
错误用XML描述。 |
PNG |
|
错误将作为图像返回。 |
空白 |
|
返回一个空白图像。 |
JSON |
|
错误报告为简单的JSON表示。 |