7.1. WCS地图服务

WCS-网络覆盖服务,WCS是OGC定义的以“Coverage”形式在网络上共享地理空间数据的规范。所谓覆盖范围,是指能够返回其时空域中任意指定点的值,其形式便于输入模型使用的数据。WCS服务以Coverage的形式实现了栅格影像数据集的共享。

7.1.1. Mapfile定义

与WMS和WFS支持一样,WCS发布是通过将某些元数据键/值对添加到 .map 文件来启用的。

_images/fig-wcs2.jpg

WMS

MapServer仅针对满足以下条件的层,并将其包括在其WCS函数中:

  • 数据源为栅格,可使用GDAL进行处理(例如GeoTIFF、Erdas Image、…);

  • 必须设置层名称;

  • 将图层类型设置为 RASTER

  • Web元数据或层元数据 wcs_enable_request 必须设置;

  • 网络元数据 wcs_label 必须设置;

  • 必须设置图层元数据 wcs_labelwcs_rangeset_namewcs-rangeset-label

  • 图层可以通过WCS提供服务(参见MS RFC 67);

  • 即使在地图级别设置了投影,也必须设置层投影。

请看一下本节中使用的Mapfile:

 1MAP
 2    EXTENT -180 -90 180 90
 3    SIZE 600 300
 4    SHAPEPATH "/gdata"
 5    OUTPUTFORMAT
 6        NAME "GEOTIFF_16"
 7        DRIVER "GDAL/GTiff"
 8        MIMETYPE "image/tiff"
 9        IMAGEMODE FLOAT32
10        EXTENSION "tif"
11    END
12    WEB
13        IMAGEPATH "/owg/ms_tmp/"
14        IMAGEURL "/ms_tmp/"
15        METADATA
16            "wcs_onlineresource" "http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map"
17            "wcs_keywordlist" "wcs,test"
18            "wcs_enable_request" "*"
19        END
20    END
21    PROJECTION
22        "init=epsg:4326"
23    END
24    LAYER
25        METADATA
26            "wcs_keywordlist" "land, shallow, topo, world"
27        END
28        NAME "world-img"
29        DATA "land_shallow_topo_8192.tif"
30        STATUS OFF
31        TYPE RASTER
32        PROJECTION
33            "init=epsg:4326"
34        END
35    END
36END

7.1.2. GetCapabilities请求

与在WMS和WFS中一样,还可以使用 GetCapabilities 要查看WCS功能,请执行以下操作:

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCapabilities

使用Python解析参数:

>>> [print(x) for x  in url.split('&')]
http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map
SERVICE=WCS
VERSION=2.0.1
REQUEST=GetCapabilities

以XML格式查看输出结果。此处仅显示与版本相关的部分:

<ows:ServiceType codeSpace="OGC">OGC WCS</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.1</ows:ServiceTypeVersion>
<ows:ServiceTypeVersion>1.1.1</ows:ServiceTypeVersion>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
<ows:Profile>http://www.opengis.net/spec/WCS/2.0/conf/core</ows:Profile>

可以看到WCS的版本为:

  • 2.0.1

  • 1.1.1

  • 1.0.0

7.1.3. DescribeCoverage请求

DescribeCoverage 请求列出有关特定覆盖范围产品的更多信息。

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=2.0.1&REQUEST=DescribeCoverage&COVERAGEID=world-img

具体参数说明如下:

>>> [print(x) for x  in url.split('&')]
http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map
SERVICE=WCS
VERSION=2.0.1
REQUEST=DescribeCoverage
COVERAGEID=world-img

不同版本的参数差异很大,返回的结果也不一样,可打开链接查看:

WFS 1.0.0:

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=1.0.0&REQUEST=DescribeCoverage&COVERAGE=world-img

解析URL:

>>> [print(idx, x) for idx, x  in enumerate(url.split('&'))]
0 http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map
1 SERVICE=WCS
2 VERSION=1.0.0
3 REQUEST=DescribeCoverage
4 COVERAGE=world-img

WFS 1.1.1:

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=1.1.1&REQUEST=DescribeCoverage&IDENTIFIERS=world-img

解析URL:

>>> [print(idx, x) for idx, x  in enumerate(url.split('&'))]
0 http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map
1 SERVICE=WCS
2 VERSION=1.1.1
3 REQUEST=DescribeCoverage
4 IDENTIFIERS=world-img

7.1.4. GetCoverage的用法

GetCoverage 返回数据,即栅格数据。由于请求此时无法指定文件的名称和后缀,因此可以下载并保存该文件,并将其修改为 .tif 作为后缀。此文件包含地理空间信息。

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=1.1.0&REQUEST=GetCoverage&IDENTIFIER=world-img&FORMAT=image/tiff&BOUNDINGBOX=43,33,44,34,urn:ogc:def:crs:EPSG::4326

参数分解如下:

>>> [print(idx, x) for idx, x  in enumerate(url.split('&'))]
0 http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map
1 SERVICE=WCS
2 VERSION=1.1.0
3 REQUEST=GetCoverage
4 IDENTIFIER=world-img
5 FORMAT=image/tiff
6 BOUNDINGBOX=43,33,44,34,urn:ogc:def:crs:EPSG::4326

GetCoverage返回图像

GetCoverage 也可以直接返回图片,只需修改 format=image/png 。然而需要注意的是,返回的图像必须通过Web中的单独请求返回,并且不能在网页中作为 <image> 对象。

以下是一个示例,即网页中的图片,无法在此处显示。但通过“右键单击”->“查看图像”,可以看到它是一张图片。

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=1.1.0&REQUEST=GetCoverage&IDENTIFIER=world-img&FORMAT=image/tiff&BOUNDINGBOX=33,70,54,135,urn:ogc:def:crs:EPSG::4326&format=image/png

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfw8.map&SERVICE=WCS&VERSION=1.1.0&REQUEST=GetCoverage&IDENTIFIER=world-img&FORMAT=image/tiff&BOUNDINGBOX=33,70,54,135,urn:ogc:def:crs:EPSG::4326&format=image/png

WCS的结果