简介
OGC Web
地图服务(WMS
)规范定义了一个HTTP
接口,用于从服务器请求地理参考的地图图像。GeoServer
支持WMS 1.1.1
(使用最多的WMS
版本)以及WMS 1.3.0
。
GeoServer
还支持样式化图层描述符(SLD
)标准对WMS
规范的某些扩展,以控制地图输出的样式。
WMS可以做什么
WMS
提供了用于请求地理空间地图图像的标准接口。这样做的好处是WMS
客户端可以从多个WMS
服务器请求图像,然后将它们组合到一个用户视图中。该标准保证了这些图像都可以像现实中那样完全重叠。许多服务器和客户端支持WMS
。
功能
名称 | 描述 |
---|---|
Exceptions | 发生异常 |
GetCapabilities | 检索有关服务的元数据,包括支持的操作和参数以及可用层的列表 |
GetMap | 检索指定区域和内容的地图图像 |
GetFeatureInfo | 检索地图上像素位置的基础数据,包括几何和属性值 |
DescribeLayer | 指示WFS或WCS检索有关该图层的其他信息。 |
GetLegendGraphic | 检索地图生成的图例 |
下面就详细介绍一个每个功能类型。
Exceptions
WMS
可以报告异常的格式。支持的异常值为:
格式 | 表达式 | 描述 |
---|---|---|
XML格式 | EXCEPTIONS=application/vnd.ogc.se_xml | Xml输出。(默认格式) |
图形 | EXCEPTIONS=application/vnd.ogc.se_inimage | 生成图像(在geoserver的图层预览功能中发生异常会使用) |
空白 | EXCEPTIONS=application/vnd.ogc.se_blank | 生成空白图像 |
局部图 | EXCEPTIONS=application/vnd.gs.wms_partial | 这是一个GeoServer供应商参数,仅适用于getMap请求。返回渲染过程引发异常时渲染的所有内容。可以与WMS配置限制一起使用,以返回部分图像,即使由于超过这些限制之一而被终止的请求也是如此。它也可以与timeout vendor参数一起使用。 |
JSON格式 | EXCEPTIONS=application/json | 简单的Json表示形式。 |
JSONP | EXCEPTIONS=text/javascript | 返回以下格式的JsonP:paddingOutput(…jsonp…)。请参阅WMS供应商参数以更改回调名称。请注意,默认情况下禁用此格式(请参阅影响WMS的全局变量)。 |
GetCapabilities
该操作请求有关由WMS
服务器提供的操作,服务和数据的元数据。
GetCapabilities
操作的参数为:
参数名 | 是否必须 | 描述 |
---|---|---|
service | 是 | 服务名称。值是WMS |
version | 是 | 服务版本。值是一个1.0.0,1.1.0,1.1.1,1.3.0。 |
request | 是 | 操作名称。值是GetCapabilities。 |
GeoServer
为GetCapabilities
操作提供以下特定于供应商的参数。它们在WMS
供应商参数部分中有完整记录。
参数名 | 是否必须 | 描述 |
---|---|---|
namespace | 否 | 将响应限制为给定名称空间中的层 |
format | 否 | 以某种格式请求功能文档 |
rootLayer | 否 | 标记以启用/禁用标准“根”顶层图层元素。值是对还是错。如果为false,则仅当存在多个顶级层时才包括Root元素,如果只有一层,则它将是根层本身。指定后,将以相同的行为覆盖全局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操作的支持。 |
Request | 列出可用的坐标系和图层。在GeoServer中,图层以“名称空间:图层”的形式命名。每一层都提供服务元数据,例如标题,摘要和关键字。 |
GetMap
GetMap
操作是获取到服务器生成的地图。他的请求参数可以控制在地图上显示的一个或多个图层和样式,地图范围的边界框,目标空间参考系统以及输出的宽度,高度和格式。
响应是地图图像或其他地图输出工件,具体取决于请求的格式。GeoServer
提供了多种输出格式,以WMS
输出格式描述。
GetMap
操作的标准参数为:
参数名 | 是否必须 | 描述 |
---|---|---|
service | 是 | 服务名称。值是WMS。 |
version | 是 | 服务版本。值可以是1.0.0,1.1.0,1.1.1,1.3.0。 |
request | 是 | 操作名称。值是GetMap。 |
layers | 是 | 要在地图上显示的图层。值是层名称的逗号分隔列表。 |
styles | 是 | 渲染图层的样式。值是样式名称的逗号分隔列表,如果需要默认样式,则为空。列表中的样式名称可能为空,以使用默认的图层样式。 |
srs/crs | 是 | 地图输出的空间参考系统。格式是EPSG:nnn 。 crs是WMS 1.3.0中使用的参数。 |
bbox | 是 | 地图范围的边界框。格式是 minx,miny,maxx,maxy以SRS 为单位。 |
width | 是 | 地图输出的宽度(以像素为单位)。 |
height | 是 | 地图输出的高度,以像素为单位。 |
format | 是 | 地图输出的格式。有关支持的值,请参阅WMS输出格式。 |
transparent | 否 | 地图背景是否应该透明。值是true或false。默认为false |
bgcolor | 否 | 地图图像的背景色。格式是RRGGBB。默认为FFFFFF(白色)。 |
exceptions | 否 | 报告异常的格式。默认值为application/vnd.ogc.se_xml。 |
time | 否 | 地图数据的时间值或范围。有关更多信息,请参见GeoServer WMS中的时间支持。 |
sld | 否 | 引用StyledLayerDescriptor XML文件的URL,该URL 可以控制或增强地图图层和样式 |
sld_body | 否 | URL编码的StyledLayerDescriptor XML文档,用于控制或增强地图图层和样式 |
下面的示例是在SRS:'EPGS:4326'
中使用默认样式,将图层输出为PNG
的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
使用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>
time
参数允许按时间切片和空间图块过滤数据集以进行渲染。
GetFeatureInfo
GetFeatureInfo
操作是请求地图上给定位置要素的空间和属性数据。它与WFS GetFeature
操作类似,但是在输入和输出方面都不太灵活。由于GeoServer
提供了WFS
服务,因此建议尽可能不要使用GetFeatureInfo
。
GetFeatureInfo
操作的一个优点是他的请求使用来自返回的WMS
图像的(x,y
)像素值。对于有时候获取不到地理参考坐标,这个操作还是很方便的。
GetFeatureInfo
操作的标准参数是:
参数名 | 是否必须 | 描述 |
---|---|---|
service | 是 | 服务名称。值是WMS。 |
version | 是 | 服务版本。值是一个1.0.0,1.1.0,1.1.1,1.3.0。 |
request | 是 | 操作名称。值是GetFeatureInfo。 |
layers | 是 | 同GetMap操作 |
styles | 是 | 同GetMap操作 |
srs/crs | 是} 同GetMap操作 | |
bbox | 是 | 同GetMap操作 |
width | 是 | 同GetMap操作 |
height | 是 | 同GetMap操作 |
query_layers | 是 | 用逗号分隔的一层或多层查询列表。 |
info_format | 否 | 功能信息响应的格式。有关值,请参见下文。 |
feature_count | 否 | 要返回的最大特征数。默认值为1。 |
x / i | 是 | 地图上查询点的X坐标,以像素为单位。左侧为0。 i是WMS 1.3.0中使用的参数键。 |
y / j | 是 | 地图上查询点的Y坐标,以像素为单位。0是顶部。 j是WMS 1.3.0中使用的参数键。 |
exceptions | 否 | 报告异常的格式。默认值为application/vnd.ogc.se_xml。 |
GeoServer
支持多种GetFeatureInfo
响应输出格式。默认的格式是服务器上定义的HTML
格式。为了最大程度地控制和定制,客户端应使用GML3
并对原始数据本身进行样式设置。支持的格式为:
格式 | 表达式 | 描述 |
---|---|---|
文本 | 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模板。有关如何对HTML输出进行模板化的信息,请参见GetFeatureInfo模板。 |
JSON格式 | info_format=application/json | 简单的Json表示形式。 |
JSONP | info_format=text/javascript | 返回JSONP形式:parseResponse(...json...)。请参阅WMS供应商参数以更改回调名称。请注意,默认情况下禁用此格式(请参阅影响WMS的全局变量)。 |
GeoServer
为GetFeatureInfo
操作提供以下特定于供应商的参数。
参数名 | 是否必须 | 描述 |
---|---|---|
buffer | 否 | 查询点周围搜索半径的宽度。 |
cql_filter | 否 | 过滤返回的数据,采用ECQL格式 |
filter | 否 | 以OGC过滤器格式过滤返回的数据 |
propertyName | 否 | 要返回的特征属性 |
exclude_nodata_result | 否 | 设置为true时,当要素的查询像素值为nodata时,将返回NaN。 |
下面的示例是从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
操作的标准参数是:
参数名 | 是否必须 | 描述 |
---|---|---|
service | 是 | 服务名称。值是WMS。 |
version | 是 | 服务版本。值是1.1.1。 |
request | 是 | 操作名称。值是DescribeLayer。 |
layers | 是 | 同GetMap |
exceptions | 否 | 报告异常的格式。默认值为application/vnd.ogc.se_xml。 |
GeoServer
支持多种DescribeLayer
响应输出格式。最常用的格式是服务器样式的HTML
模板。支持的格式为:
格式 | 表达式 | 描述 |
---|---|---|
文本 | output_format=text/xml | 与默认值相同。 |
GML 2 | output_format=application/vnd.ogc.wms_xml | 默认格式。 |
JSON格式 | output_format=application/json | 简单的Json表示形式。 |
JSONP | output_format=text/javascript | 返回以下格式的JsonP:paddingOutput(…jsonp…)。请参阅WMS供应商参数以更改回调名称。请注意,默认情况下禁用此格式(请参阅影响WMS的全局变量)。 |
对图层组上的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
可以查看这篇文章 https://docs.geoserver.org/stable/en/user/services/wms/get_legend_graphic/index.html#get-legend-graphic