OWS(OGC Web Service Common Implementation Specification)当前版本是2.0.0。OWS描述了Web服务通用的一些接口规范,包括请求和响应的内容、请求的参数和编码等。目前,OWS包括WFS、WMS、WCS,因此,后续的《VII.WFS-要素Web服务》、《VIII.WMS-地图Web服务》、《IX.WCS-栅格Web服务》都和本章节有关系。
OWS可以通过GET和POST两种方式对服务进行请求。而请求的参数编码也有两种:一种是键值对应(KVP[1])、另一种是XML对象(XML)。它们的组合情况如下:
|
GET |
POST |
KVP |
非MIME(URL) |
MIME:application/x-www-form-urlencoded[2] |
XML |
不支持 |
MIME:text/xml[3] |
因此,比如某OWS服务的GetCapabilities操作,可能会有以下3种请求方式,当然,不同种类的服务并不一定实现所有的这些组合:
|
URL |
请求体 |
GET |
http://host:port/path?SERVICE=WFS&REQUEST=GetCapabilities |
|
POST |
http://host:port/path |
SERVICE:WFS REQUEST:GetCapabilities |
http://host:port/path |
<?xml version="1.0" ?> <GetCapabilities service="WFS" xmlns=http://www.opengis.net/wfs xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.1.0/WFS.xsd"> |
服务处理完请求后,生成结果或异常信息,然后以MIME的方式返回客户端。
在OWS服务和OWS服务之间可以采用SOAP消息进行数据交互(POST)。SOAP消息是符合SOAP规范的XML,它需要包括SOAP信封、SOAP消息头、SOAP消息体等组成部分:
<?xml version="1.0"?> <soap:Envelope xmlns:soap=http://www.w3.org/2003/05/soap-envelope soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <soap:Header> ... ... </soap:Header> <soap:Body> ... ... <soap:Fault>...</soap:Fault> </soap:Body> </soap:Envelope>
每个OWS服务都包括GetCapabilities操作,这个操作返回这个服务的元数据信息。GetCapabilities包括2个必须的参数和若干可选参数,这些参数的取值见下表:
参数 |
是否必须 |
取值(示例) |
SERVICE |
是 |
WFS或WMS或WCS |
REQUEST |
是 |
GetCapabilities |
ACCEPTVERSIONS |
1.1.0,1.0.0 |
|
SECTIONS |
Contents |
|
UPDATESEQUENCE |
||
ACCEPTFORMATS |
text/xml |
|
ACCEPTLANGUAGES |
en-US,zh-CN |
以下是一个WFS使用KVP格式的GetCapabilities操作:
http://www.someserver.com/wfs?
SERVICE=WFS&
REQUEST=GetCapabilities
以下是一个WCS使用KVP格式的GetCapabilities操作:
http://hostname:port/path?
SERVICE=WCS&
REQUEST=GetCapabilities&
ACCEPTVERSIONS=1.0.0 0.8.3&
SECTIONS=Contents&
UPDATESEQUENCE=XYZ123&
ACCEPTFORMATS=text/xml&
ACCEPTLANGUAGES=en-CA fr-CA
以下是一个WCS使用XML格式的GetCapabilities操作:
<?xml version="1.0" encoding="UTF-8"?> <GetCapabilities xmlns="http://www.opengis.net/ows/2.0" xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ows/2.0 fragmentGetCapabilitiesRequest.xsd" service="WCS" updateSequence="XYZ123" > <AcceptVersions> <Version>1.0.0</Version> <Version>0.8.3</Version> </AcceptVersions> <Sections> <Section>Contents</Section> </Sections> <AcceptFormats> <OutputFormat>text/xml</OutputFormat> </AcceptFormats> <AcceptLanguages> <Language>en-CA</Language> <Language>fr-CA</Language> </AcceptLanguages> </GetCapabilities>
除了GetCapabilities,不同的OWS还包括其它不同操作以实现各自的功能,这些操作都包括以下3个必选参数和其它可选参数。当然,不同的操作还包括自身功能有关的其它必选参数和可选参数。
参数 |
是否必须 |
取值(示例) |
SERVICE |
是 |
WFS或WMS或WCS |
REQUEST |
是 |
GetMap |
VERSION |
是 |
1.3.0 |
ACCEPTLANGUAGES |
en-US,zh-CN |
以下是一个WCS使用KVP格式的GetCoverage操作:
http://hostname:port/path?
SERVICE=WCS&
REQUEST=GetCoverage&
VERSION=1.0.0&
AcceptLanguages=en fr
[1] Key-Value Pair