OGC标准介绍 11

I. OWS-OGC Web服务通用标准

· 概述

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服务》都和本章节有关系。

· 服务涉及的基本元素

1. HTTP请求规则

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">

2. HTTP响应规则

服务处理完请求后,生成结果或异常信息,然后以MIME的方式返回客户端。

3. SOAP

在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>

· GetCapabilities操作

每个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

[2] http://en.wikipedia.org/wiki/POST_%28HTTP%29

[3] http://en.wikipedia.org/wiki/XML_and_MIME