WMS服务 与 GetCapabilities 访问

Web地图服务(Web Map Service,WMS)生成关于地理空间数据的“地图”,属于 OGC 发布的规范。地图是地理数据的可视化描述,而不是地理数据本身。Web地图服务提供了在互联网上通过Web客户端统一访问由地图服务器支持的接口。

说明

基本Web地图服务提供 GetCapabilitiesGetMapGetFeaturelnfoDescribeLayer 4个接口,用来支持创建和显示已注册和分层的、类似地图的视图信息,这些视图同时来自远程和异构的多个服务源。

当请求一个地图时,客户端可以指定在地图上显示的信息、图层样式、边界范围、投影或空间参照系以及输出格式、图像的尺寸、背景透明度及颜色等。当生成具有相同的BBox(边界矩形)、SRS(空间参照系)和尺寸的地图时,可以叠置这些地图以进一步生成复合地图。WMS支持分布式地图服务网络的创建,这样客户端可以生成自定义地图。

基本的Web地图服务主要提供以下功能:

  1. 可以提供其他程序关于地图服务的信息:它可以做什么以及可以进一步查询到什么。
  2. 可以以图片、图形元素集或地理要素数据集的形式动态构建一幅地图。
  3. 回答关于地图内容的基本查询。
  4. 高级Web地图服务器支持与层叠地图服务器(Cascading Map Servers)和样式层描述器的联合。

层叠地图服务器将多个独立的地图服务器的内容聚合到一个服务器中,而且为其他服务器提供诸如输出格式转换、坐标变换等功能。

样式层描述器(Styled-Layer Descriptor,SLD)允许用户定义要素数据的符号,而不是既定的命名图层及其样式。SLD是对WMS的扩展,支持SLD的WMS服务从WFS获取要素,然后使用由用户提供的样式信息绘制地图。样式层描述器增加了基本WMS不支持的操作: DescribeLayerGetLegendGraphicGetStylesPutStyles

这里说明使用 MapServer 发布 WMS 服务。前面部分说明的,一个 Mapfile 对应一幅地图。通过 WMS 访问,则可以更加灵活地访问 Mapfile 中的图层信息。把 Mapfile 的地图设计功能,增强为服务功能。

访问WMS服务

由于每一个WMS是独立的,因此必须提供关于各自功能的描述。这种“服务元数据”使每客户机可以将合法请求公式化,并能够构造一个可查询的目录,以便引导客户机找到指定的WMSes。GetCapabilities 允许一个客户端(或客户代理)请求一个WMS表露其制图内容和处理功能。返回结果是一份XML文档,用来描述服务信息内容和可以请求的参数;在特定的WMS情况下,返回关于服务自身的一般信息以及可用地图的具体信息。

这个 Mapfile 配置了 WMS 服务。Mapfile mfb1.map 的内容为:

01 MAP
02     IMAGETYPE "PNG"
03     EXTENT -180 -90 180 90
04     SIZE 600 300
05     SHAPEPATH "/gdata"
06     IMAGECOLOR 255 255 255
07     WEB
08         METADATA
09             "wms_title" "WMS Demo Server"
10             "wms_onlineresource" "//webgis.cn/cgi-bin/mapserv?map=/owg/mfb1.map&"
11             "ows_onlineresource" "//webgis.cn/cgi-bin/mapserv?map=/owg/mfb1.map&"
12             "wms_srs" "EPSG:4269 EPSG:4326"
13             "wms_enable_request" "* !GetFeatureInfo"
14         END
15     END
16     LAYER
17         NAME "topo"
18         DATA "land_shallow_topo_8192.tif"
19         STATUS OFF
20         TYPE RASTER
21         PROCESSING "BANDS=1,2,3"
22         PROJECTION
23             "init=epsg:4326"
24         END
25     END
26     LAYER
27         NAME "states"
28         DATA "wcountry.shp"
29         STATUS OFF
30         TYPE POLYGON
31         CLASS
32             NAME "The Upper Great Lakes States"
33             STYLE
34                 COLOR 232 232 232
35                 OUTLINECOLOR 32 32 32
36             END
37         END
38     END
39 END

与前面 mfa1.map 相比:

6    IMAGECOLOR 255 255 2556    IMAGECOLOR 255 255 255
nn7    WEB
8        METADATA
9            "wms_title" "WMS Demo Server"
10            "wms_onlineresource" "//webgis.cn/cgi-bin/mapserv?map=/owg/mfb1.map&"
11            "ows_onlineresource" "//webgis.cn/cgi-bin/mapserv?map=/owg/mfb1.map&"
12            "wms_srs" "EPSG:4269 EPSG:4326"
13            "wms_enable_request" "* !GetFeatureInfo"
14        END
15    END
7    LAYER16    LAYER
n8        NAME "world-country"n17        NAME "topo"
18        DATA "land_shallow_topo_8192.tif"
19        STATUS OFF
20        TYPE RASTER
21        PROCESSING "BANDS=1,2,3"
22        PROJECTION
23            "init=epsg:4326"
24        END
25    END
26    LAYER
27        NAME "states"
9        DATA "wcountry.shp"28        DATA "wcountry.shp"
12        CLASS31        CLASS
t13            NAME "World Countries"t32            NAME "The Upper Great Lakes States"
14            STYLE33            STYLE

注意这里的版本 1.3.0 。 OGC 的 WMS 有 1.1.11.3.0 两个主要版本。如果用 1.1.1 ,访问后可能会提示保存文件,保存后会发现是一个 XML 格式的文件。而用 1.3.0 ,则会直接在浏览器中打开。

GetCapabilities 访问

打开链接

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfb1.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

查看地图

MapServer 最开始就支持返回地图,可以使用 mode=map 参数。