网络地图服务(WMS)¶
我们如何在网上发布地图?¶
如果我们使用HTTP请求,所有这些都可能是有效的:
让我们就URL格式达成一致¶
如果我们同意如何对URL进行编码,下面的httpget请求将从西班牙巴斯克地区的一个省获得地图
http://b5m.gipuzkoa.net/ogc/wms/gipuzkoa_wms?
service=wms&
version=1.3.0&
request=getmap&
layers=udal_barrutiak_limites_municipales&
styles=&
crs=epsg:23030&
bbox=530000,4740000,610000,4820000&
width=600&
height=600&
format=image/png
http://b5m.gipuzkoa.net/ogc/wms/gipuzkoa_wms?
service=wms&
version=1.3.0&
request=getmap&
layers=udal_barrutiak_limites_municipales&
styles=&
crs=epsg:23030&
bbox=530000,4740000,610000,4820000&
width=600&
height=600&
format=image/png
WMS¶
OGC网络地图服务接口标准(WMS)定义了一组接口(例如,如何编码URL的规则)用于在互联网上请求地图图像。
WMS使客户机很容易根据需要请求更改参数(如尺寸和坐标参考系)的图像。
WMS服务器¶
提供有关服务可以生成哪些地图的信息
生成地图
回答有关地图内容的查询
收益¶
WMS客户端可以从多个WMS服务器请求图像,然后将它们组合成一个视图供用户使用。
该标准保证这些图像可以使用一个通用的地理空间坐标参考系相互叠加。
数百台服务器和客户机支持WMS。
与其他OGC标准的关系¶
OGC Web地图图块服务接口标准(WMTS):WMTS标准更适合只需要静态映射的高度可伸缩系统(许多并发请求)。它用可缓存的静态地图块来补充WMS标准。WMS服务器可以用作WMTS服务的数据源或呈现引擎。
OGC Web功能服务(WFS):WFS标准更适合于空间数据的扩展查询功能。它提供对地理要素数据的编程访问。WMS和WFS经常一起使用。同时发布WMS和WFS的组织通常使用相同的数据源。
WMS运行概述¶
WMS操作¶
GetCapabilities
GetMap
GetFeatureInfo (可选)
DescribeLayer (可选)
GetLegendGraphic (可选)
GetCapabilities¶
返回有关WMS服务器的元数据,包括如何生成WMS请求以及可以使用哪些参数。
元数据包括支持的图像格式和层的可用性。
每个层的元数据包括:边界框、坐标系、数据的URI以及图层是否不透明。
GetCapabilities演示¶
This is a link to a GetCapabilities request.
http://metaspatial.net/cgi-bin/ogc-wms.xml?
SERVICE=WMS&
VERSION=1.3
REQUEST=GetCapabilities&
GetCapabilities参数¶
有三个参数(和值)被传递到WMS服务器, SERVICE=WMS
, VERSION=1.3
和 REQUEST=GetCapabilities
.
SERVICE
参数告诉服务器WMS请求即将到来。VERSION
参数告诉服务器正在请求哪个版本的WMS。REQUEST
参数告诉服务器请求的操作是 GetCapabilities 操作。
GetCapabilities参数和接受值¶
Parameter |
Required |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
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>
...
</Style>
</Layer>
GetCapabilities层样式部分¶
<Layer queryable="0" opaque="0" cascaded="0">
...
<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¶
返回地图图像。
GetMap请求中指定的参数包括:地图的宽度和高度、坐标参考系、渲染样式和图像格式。
指定参数值所需的信息,例如
layers
,styles
和Spatial 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
来自GetMap请求的示例图像¶

GetMap-请求¶
...
LAYERS=DTM,Overview,Raster_250K,Topography,nationalparks,Infrastructure,Places
...
CRS=EPSG:27700&
BBOX=424735.97883597884,96026.984126984...
WIDTH=400&
HEIGHT=300&
FORMAT=image/png&
BGCOLOR=0xffffff&
TRANSPARENT=TRUE&
EXCEPTIONS=XML
该服务提供七个地图层:DTM、Overview等。
坐标参考系EPSG:27700是国家电网参考系统。
返回的图像是PNG透明格式,宽度400像素,高度300像素,背景颜色为白色(十六进制代码=0xffffff)。
GetMap-请求-示例2¶
没有概述层的GetMap <http://metaspatial.net/cgi-bin/ogc-wms.xml?VERSION=1.3.0&REQUEST=GetMap&SERVICE=WMS&LAYERS=DTM,Raster_250K,Topography,nationalparks,Infrastructure,Places&CRS=EPSG:27700&BBOX=424735.97883597884,96026.98412698413,467064.02116402116,127773.01587301587&WIDTH=400&HEIGHT=300&FORMAT=image/png> _。

LAYERS=DTM,Raster_250K,Topography,nationalparks,Infrastructure,Places
GetMap透明度/透明度¶
地图图像可以覆盖其他服务器的地图。在这些情况下,以支持透明度(如alpha通道)的格式请求顶层图像可能会有帮助。然后我们可以看到下面的地图图像。

GetMap比例限制¶
重要的是要了解每个层在未显示时都可能有缩放限制。例如,同时显示“Overview”和“Raster k”是没有意义的,因为它们包含相同的数据,但具有不同的泛化级别。因此,它们具有互斥的比例限制,因此它们永远不会返回到一个图像中。缩放限制由服务器设置,不必由客户端配置。
<Name>Raster_250K</Name>
<MaxScaleDenominator>60000</MaxScaleDenominator>
<MinScaleDenominator>250000</MinScaleDenominator>
<Name>Overview</Name>
<MinScaleDenominator>250000</MinScaleDenominator>
GetMap-缩放¶
客户端可以通过计算BBOX(边界框)参数的新值来“放大”和“缩小”地图。这同样适用于所有地图导航功能,如平移或选择一个全新的区域。
需要注意的是,服务器只向客户机返回图像,而不返回有关大小、坐标系、比例等的其他信息
挤压的地图¶
宽高比不是1:1时发生?例如 WIDTH=200&HEIGHT=300?

重投影贴图¶
更改参数: CRS 原稿是左边的=EPSG:22770和在右侧CRS上=爱普生:4326。

获取参数¶
Parameter |
Required |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
要在地图上显示的图层。值是以逗号分隔的层名称列表。 |
|
是的 |
要在其中渲染层的样式。值是以逗号分隔的样式名列表,如果需要默认样式,则为空。样式名在列表中可能为空,以使用默认层样式。 |
|
是的 |
地图输出的空间参考系统。值的形式为 |
|
是的 |
地图范围的边界框。值是 |
|
是的 |
地图输出的宽度,以像素为单位。 |
|
是的 |
地图输出的高度,以像素为单位。 |
|
是的 |
映射输出的格式。 |
|
不 |
地图背景是否应透明。值为 |
|
不 |
地图图像的背景色。值的形式为 |
|
不 |
报告异常的格式。默认值为 |
|
不 |
地图数据的时间值或范围。 |
|
不 |
引用StyledLayerDescriptor XML文件的URL,该文件控制或增强地图图层和样式设置 |
|
不 |
URL编码的StyledLayerDescriptor XML文档,用于控制或增强地图图层和样式设置 |
GetFeatureInfo¶
返回与地图图像坐标相关的信息(例如数据)。支持此操作的层被标记为“可查询”。
它类似于wfsgetfeature操作,但是在输入和输出方面都不太灵活。
唯一的优势
GetFeatureInfo
请求使用来自返回的WMS图像的(x,y)像素值。对于不能执行真正地理参考的天真客户机来说,这更容易使用。
GetFeatureInfo¶
在查询对象之前,我们需要查看地图。我们使用GetMap请求来获取地图图像:
http://metaspatial.net/cgi-bin/ogc-wms.xml?
VERSION=1.3.0&
REQUEST=GetMap&
SERVICE=WMS&
LAYERS=Overview,Raster_250K,nationalparks,Topography,Infrastructure,osm_points&
WIDTH=400&
HEIGHT=300&
CRS=EPSG:27700&
BBOX=427966.6666666667,106800,431833.3333333333,109700&
FORMAT=image/png&
EXCEPTIONS=XML
结果如下:¶

在下一步中,用户必须单击地图。假设用户点击了位置:::
X=231
Y=280
然后客户端执行此请求¶
http://metaspatial.net/cgi-bin/ogc-wms.xml?
VERSION=1.3.0&
REQUEST=GetFeatureInfo&
SERVICE=WMS&
LAYERS=osm_points&
QUERY_LAYERS=osm_points&
WIDTH=400&
HEIGHT=300&
CRS=EPSG:27700&
BBOX=427966.6666666667,106800,431833.3333333333,109700&
INFO_FORMAT=text/html&
EXCEPTIONS=XML&
X=231& Y=280
链接到 GetFeatureInfo 请求。
GetFeatureInfo-HTML中的响应¶
如果请求的功能在服务器中找到,它将返回它们。在本例中,服务器找到一个名为“the Crown Stirup”的酒吧和一个名为“Ye Old Crown and Stirup”的公共汽车站,并在HTML文件中返回它们。

GetFeatureInfo-GML中的响应¶
<osm_points_feature>
<gml:boundedBy>
<gml:Box srsName="EPSG:27700">
<gml:coordinates>
430172.215950,107071.994504 430172.215950,107071.994504
</gml:coordinates>
</gml:Box>
</gml:boundedBy>
<osm_id>503420358</osm_id>
<timestamp>2009-09-20T16:44:15Z</timestamp>
<name>Ye Old Crown and Stirrup</name>
<type>bus_stop</type>
</osm_points_feature>
</osm_points_layer>
标记层,告诉客户端GetFeatureInfo可用¶
在GetCapabilities文档中,层应该具有 queryable="1"
<Layer queryable="1" opaque="0" cascaded="0">
<Name>osm_points</Name>
<Title>OpenStreetMap point objects</Title>
<CRS>EPSG:4326</CRS>
GetFeatureInfo-参数¶
Parameter |
Required |
Description |
---|---|---|
|
是的 |
服务名称。值是 |
|
是的 |
服务版本。价值是 |
|
是的 |
操作名称。值是 |
|
是的 |
要查询的层的逗号分隔列表` |
|
不 |
功能信息响应的格式(MIME类型)。 |
|
不 |
要返回的最大功能数。默认值为1。 |
|
是的 |
地图上的像素列点。0是左侧。 |
|
是的 |
地图上的像素行。0是顶部。 |
|
不 |
报告异常的格式。默认值为 |
获取功能信息- INFO_FORMAT
参数¶
Format |
Syntax |
Notes |
---|---|---|
TEXT |
info_format=文本/plain |
简单文本输出。(默认格式) |
GML 2 |
info_format=应用程序/vnd.ogc.gm公司 |
仅适用于简单功能 |
GML 3号 |
info_format=应用程序/vnd.ogc.gml/3号.1.1条 |
适用于简单和复杂的功能 |
HTML |
info_format=text/html |
使用在服务器上定义的HTML模板。 |
JSON |
info_format=application/json格式 |
简单的JSON表示。 |
GetLegendGraphic¶
以图像的形式返回地图图像的图例,为地图元素提供可视指南。
通过GetLegendGraphic获得传奇¶
链接到 GetLegend 请求。
http://metaspatial.net/cgi-bin/ogc-wms.xml?
version=1.3.0&
service=WMS&
request=GetLegendGraphic&
sld_version=1.1.0&
layer=nationalparks&
format=image/png&
STYLE=default

DescribeLayer¶
返回有关请求层的附加信息。
错误的请求¶
如果请求错误,服务器将返回错误消息。
请求指定客户端希望如何接收请求。例如:
EXCEPTIONS=XML
错误信息¶
如果客户机通过制定错误的请求而导致错误,服务器将返回错误消息。例如,如果请求一个不存在的层,服务器将返回以下信息:
<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
<ServiceExceptionReport version="1.3.0" xmlns="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/ogc
http://schemas.opengis.net//wms/1.3.0/exceptions_1_3_0.xsd">
<ServiceException code="LayerNotDefined">
msWMSLoadGetMapParams(): WMS server error.
Invalid layer(s) given in the LAYERS parameter.
A layer might be disabled for this request.
Check wms/ows_enable_request settings.
</ServiceException>
</ServiceExceptionReport>
INIMAGE错误消息¶
前一条消息的一个问题是客户端无法在图像显示窗口中显示该消息。为了防止这种情况发生,我们可以将错误消息(EXCEPTIONS参数)的格式更改为INIMAGE。在这种情况下,我们可以看到打印到图像中的错误消息:
INIMAGE错误消息¶

例外情况¶
当来自客户端的请求不正确时,WMS服务器将报告异常。
Format |
Syntax |
Notes |
---|---|---|
XML |
|
错误用XML描述。 |
PNG |
|
错误将作为图像返回。 |
空白 |
|
返回一个空白图像。 |
JSON |
|
错误报告为简单的JSON表示。 |