WMS参考¶
介绍¶
OGC Web Map Service (WMS)规范定义了一个HTTP接口,用于从服务器请求地理参考地图图像。GeoServer支持WMS 1.1.1(最广泛使用的WMS版本)和WMS 1.3.0。
相关的OGC WMS规范如下:
OGC Web Map Service Implementation Specification, Version 1.1.1
OGC Web Map Service Implementation Specification, Version 1.3.0
geoserver还支持对由样式化层描述符(sld)标准制定的WMS规范的一些扩展,以控制地图输出的样式。这些定义见:
大规模杀伤性武器的好处¶
WMS提供了一个标准接口,用于请求地理空间地图图像。这样做的好处是,WMS客户机可以从多个WMS服务器请求图像,然后将它们组合为一个用户视图。该标准保证这些图像可以彼此叠加,就像它们在现实中一样。许多服务器和客户机支持WMS。
操作¶
WMS请求可以执行以下操作:
Operation |
Description |
检索有关服务的元数据,包括支持的操作和参数,以及可用层的列表 |
|
检索指定区域和内容的地图图像 |
|
检索地图上像素位置的基础数据,包括几何图形和属性值。 |
|
指示WFS或WCS以检索有关层的其他信息。 |
|
检索为地图生成的图例 |
GetCapabilities¶
这个 GetCapabilities 操作请求有关WMS服务器提供的操作、服务和数据(“功能”)的元数据。
getCapabilities操作的参数为:
Parameter |
必修的? |
Description |
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
geoserver为getCapabilities操作提供以下特定于供应商的参数。它们完全记录在 WMS供应商参数 部分。
Parameter |
必修的? |
Description |
|
不 |
限制对给定命名空间中的层的响应 |
|
不 |
以特定格式请求功能文档 |
|
不 |
用于启用/禁用标准根顶级层元素的标志。值为真或假。如果为false,则仅当存在多个顶级层时才包含根元素,如果只有一个顶级层,则它将是根层本身。如果指定,将覆盖相同行为的全局WMS设置或层/组设置。 |
getCapabilities请求的一个示例是:::
http://localhost:8080/geoserver/wms?
service=wms&
version=1.1.1&
request=GetCapabilities
有三个参数传递给WMS服务器, service=wms
, version=1.1.1
和 request=GetCapabilities
. 这个 service
参数告诉WMS服务器即将发出WMS请求。这个 version
参数引用正在请求的WMS版本。这个 request
参数指定getCapabilities操作。WMS标准要求请求始终包含这三个参数。geoserver放宽了这些要求(如果省略,通过设置默认版本),但是为了符合标准,应该始终指定这些要求。
响应是一个功能XML文档,它是对WMS服务的详细描述。它包含三个主要部分:
Service |
包含服务元数据,如服务名称、关键字和操作服务器的组织的联系信息。 |
Request |
描述WMS服务提供的操作以及每个操作的参数和输出格式。如果需要,可以将geoserver配置为禁用对某些WMS操作的支持。 |
Layer |
列出可用的坐标系和图层。在geoserver中,层以“namespace:layer”的形式命名。每一层都提供服务元数据,如标题、摘要和关键字。 |
GetMap¶
这个 GetMap 操作请求服务器生成映射。核心参数指定要在地图上显示的一个或多个图层和样式、地图范围的边界框、目标空间参考系统以及输出的宽度、高度和格式。指定参数值所需的信息,如 layers
, styles
和 srs
可从能力文件中获得。
响应是映射图像或其他映射输出工件,具体取决于请求的格式。geoserver提供了多种输出格式,如 WMS输出格式 .
getmap操作的标准参数是:
Parameter |
必修的? |
Description |
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
要在地图上显示的图层。值是以逗号分隔的层名称列表。 |
|
是的 |
要在其中渲染层的样式。值是以逗号分隔的样式名列表,如果需要默认样式,则为空。样式名在列表中可能为空,以使用默认层样式。 |
|
是的 |
地图输出的空间参考系统。值的形式为 |
|
是的 |
地图范围的边界框。值是 |
|
是的 |
地图输出的宽度,以像素为单位。 |
|
是的 |
地图输出的高度,以像素为单位。 |
|
是的 |
映射输出的格式。参见 WMS输出格式 用于支持的值。 |
|
不 |
地图背景是否应透明。值为 |
|
不 |
地图图像的背景色。值的形式为 |
|
不 |
报告异常的格式。默认值为 |
|
不 |
地图数据的时间值或范围。参见 地理服务器WMS中的时间支持 更多信息。 |
|
不 |
一个引用 StyledLayerDescriptor 控制或增强地图图层和样式的XML文件 |
|
不 |
已编码的URL StyledLayerDescriptor 控制或增强地图图层和样式的XML文档 |
geoserver为getmap操作提供了许多有用的特定于供应商的参数。这些记录在 WMS供应商参数 部分。
WMS请求示例 topp:states
要在SRS EPGS:4326中输出为PNG地图图像的层,使用默认样式为:::
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
该标准将许多参数指定为强制参数,geoserver提供 WMS反射镜 允许任选地指定它们中的许多。
试验这个特性是了解getmap参数的一个好方法。
使用getmap xml文档的wms请求示例如下:
<?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>
时间¶
从geoserver 2.2.0开始,geoserver支持WMS getmap请求的时间属性,如WMS规范版本1.3.0所述。此参数允许按时间片和空间块过滤数据集以进行渲染。参见 地理服务器WMS中的时间支持 有关其用途的信息。
GetFeatureInfo¶
这个 GetFeatureInfo 操作请求地图上给定位置的要素的空间和属性数据。与WFS相似 GetFeature 操作,但在输入和输出方面的灵活性较低。由于geoserver提供WFS服务,我们建议使用它,而不是 GetFeatureInfo
只要可能。
唯一的优势 GetFeatureInfo
请求使用返回的WMS图像中的(x,y)像素值。对于无法执行真正地理引用的天真客户机来说,这更容易使用。
GetFeatureInfo操作的标准参数为:
Parameter |
必修的? |
Description |
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
见 GetMap |
|
是的 |
见 GetMap |
|
是的 |
见 GetMap |
|
是的 |
见 GetMap |
|
是的 |
见 GetMap |
|
是的 |
见 GetMap |
|
是的 |
要查询的一个或多个层的逗号分隔列表。 |
|
不 |
功能信息响应的格式。请参见下面的值。 |
|
不 |
要返回的最大功能数。默认值为1。 |
|
是的 |
地图上查询点的X坐标,以像素为单位。0是左侧。 |
|
是的 |
地图上查询点的Y坐标,以像素为单位。0是顶部。 |
|
不 |
报告异常的格式。默认值为 |
注: 如果要针对某个图层组发送GetFeatureInfo请求,则该图层组中的所有图层都必须设置为“可查询”才能获得结果(请参见 WMS Settings on Layers page )
geoserver支持 GetFeatureInfo
回答。服务器样式的HTML是最常用的格式。为了最大限度地控制和定制,客户机应该使用GML3并为原始数据本身设置样式。支持的格式包括:
Format |
Syntax |
Notes |
TEXT |
|
简单文本输出。(默认格式) |
GML 2 |
|
仅适用于简单功能(请参见 复杂的特征 ) |
GML 3号 |
|
适用于简单和复杂的功能(请参见 复杂的特征 ) |
HTML |
|
使用服务器上定义的HTML模板。参见 HTML输出格式 有关如何模板HTML输出的信息。 |
JSON |
|
简单的JSON表示。看见 GeoJSON输出格式 有关如何模板化JSON输出的信息。 |
JSONP |
|
以以下形式返回JSONP: |
geoserver为getFeatureInfo操作提供以下特定于供应商的参数。它们完全记录在 WMS供应商参数 部分。
Parameter |
必修的? |
Description |
|
不 |
查询点周围搜索半径的宽度(像素)。 |
|
不 |
以ECQL格式筛选返回的数据 |
|
不 |
以OGC筛选器格式筛选返回的数据 |
|
不 |
要返回的功能属性 |
|
不 |
当设置为true时,a NaN 将在功能的查询像素值为nodata时返回。 |
请求功能信息的示例 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
]
}
DescribeLayer¶
这个 DescribeLayer 操作主要由了解基于SLD的WMS的客户端使用。为了制作SLD,需要了解数据的结构。WMS和WFS都有这样的操作,因此 DescribeLayer 操作只是将客户机路由到适当的服务。
DescribeLayer操作的标准参数为:
Parameter |
必修的? |
Description |
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。值是 |
|
是的 |
操作名称。值是 |
|
是的 |
见 GetMap |
|
不 |
报告异常的格式。默认值为 |
geoserver支持 DescribeLayer
回答。服务器样式的HTML是最常用的格式。支持的格式包括:
Format |
Syntax |
Notes |
TEXT |
|
与默认值相同。 |
GML 2 |
|
默认格式。 |
JSON |
|
简单的JSON表示。 |
JSONP |
|
以以下形式返回JSONP:paddingOutput(...JSONP...)。看见 WMS供应商参数 更改回调名称。请注意,此格式在默认情况下处于禁用状态(请参见 影响WMS的全局变量 )。 |
层上XML(默认)格式的示例请求是:
http://localhost:8080/geoserver/topp/wms?service=WMS &version=1.1.1 &request=DescribeLayer &layers=topp:coverage
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE WMS_DescribeLayerResponse SYSTEM "http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd">
<WMS_DescribeLayerResponse version="1.1.1">
<LayerDescription name="topp:coverage" owsURL="http://localhost:8080/geoserver/topp/wcs?" owsType="WCS">
<Query typeName="topp:coverage"/>
</LayerDescription>
</WMS_DescribeLayerResponse>
在层组上以JSON格式描述功能的一个示例请求是:::
http://localhost:8080/geoserver/wms?service=WMS
&version=1.1.1
&request=DescribeLayer
&layers=sf:roads,topp:tasmania_roads,nurc:mosaic
&outputFormat=application/json
结果将是:::
{
version: "1.1.1",
layerDescriptions: [
{
layerName: "sf:roads",
owsURL: "http://localhost:8080/geoserver/wfs/WfsDispatcher?",
owsType: "WFS",
typeName: "sf:roads"
},
{
layerName: "topp:tasmania_roads",
owsURL: "http://localhost:8080/geoserver/wfs/WfsDispatcher?",
owsType: "WFS",
typeName: "topp:tasmania_roads"
},
{
layerName: "nurc:mosaic",
owsURL: "http://localhost:8080/geoserver/wcs?",
owsType: "WCS",
typeName: "nurc:mosaic"
}
]
GetLegendGraphic¶
这个 GetLegendGraphic 操作提供了一种将图例图形作为图像生成的机制,超出了WMS功能的legendrl引用范围。它根据服务器上定义的样式或用户提供的SLD生成一个图例。有关此操作和GeoServer支持的各种选项的详细信息,请参阅 GetLegendGraphic .
例外情况¶
WMS可以报告异常的格式。支持的异常值为:
Format |
Syntax |
Notes |
XML |
|
XML输出。(默认格式) |
INIMAGE |
|
生成图像 |
BLANK |
|
生成空白图像 |
PARTIALMAP |
|
这是Geoserver供应商参数,仅适用于GetMap请求。返回渲染进程引发异常时渲染的所有内容。可以与 WMS Configuration Limits 返回部分图像,即使请求因超过这些限制之一而终止。它还可以与 |
JSON |
|
简单的JSON表示。 |
JSONP |
|
以以下形式返回JSONP:paddingOutput(...JSONP...)。看见 WMS供应商参数 更改回调名称。请注意,此格式在默认情况下处于禁用状态(请参见 影响WMS的全局变量 )。 |