OGC Web Map Service标准的规范说明

〇.前言

 

  在WMS规范中将地图定义为地理数据可视的表现,WMS返回的不是地图数据,而是地图图象,WMS规范定义了三个操作:

 

   GetCapabilities操作返回服务级元数据,它是对服务信息内容和请求参数的一种描述,元数据使用XML形式文件表示;

 

   GetMap操作根据客户端发出的请求参数在服务端进行检索,服务器返回一个地图图象,其地理空间参数和大小是已经明确定义的,返回的地图图象可以是GIF,JPEG,PNG或SVG格式的;

 

   GetFeatureInfo操作根据用户请求的X,Y坐标或感兴趣的图层,返回这些特殊要素的信息,信息以HTML,GML或者ASCII格式表示。

 

一. WMS 之坐标系统

 

1 Map CS(Map Coordinate System) 

 

该坐标系统有两个方向轴:i轴和j轴,其中,i和j的取值都只能为非负值.通常,i代表lay CRS的西-东方向,

 

而j代表 Lay CRS的北-南方向. 

 

在GetMap和 GetFeatureInfo请求中的WIDTH和HEIGHT参数与i 和 j对应的关系如下:  

 

WIDTH:对应i 轴方向的像素值,也就是说,WIDTH-1为i 的最大值 

 

HEIGHT:对应 j轴方向的map大小,同样,HEIGHT-1 为j 的最大值 

 

2 Layer CRS(Layer Coordinate Reference System) 

 

Layer CRS是一种水平坐标参考系统。每一个WMS,在下面几个实体中都会对应有一个CRS: 

 

──在service元数据中的元素 

 

──GetMap request中的CRS参数 

 

──在GetFeatureInfo request 的map request部分中的CRS 参数 

 

一个WMS必须支持至少一种CRS,只有当从不同的server中获取的 maps都存在至少一个共同的CRS

 

时,这些maps才能够进行overlay叠置分析。 

 

Layer CRS有两个坐标轴(有顺序):x轴(第一坐标轴)和y轴(第二坐标轴)。x轴并非一定指定为

 

东西方向,而y轴也并非指定为南北方向,这完全取决于该坐标系统的定义。将一个Layer CRS 映射到

 

Map CS时,WMS映射将需要考虑该Layer CRS的坐标顺序,原点以及方向。

 

3 Bounding Boxes 

 

顾名思义,它表示地图的范围,它的第一对数字表示Lay CRS中的最小坐标,而第二对值则为最大坐标.在大

 

多数的Lay CRS中,坐标轴的正向为向东和向北,因此,这样两对数值就分部代表层的左下角和右上角坐标.

 

但是当使用一个地理坐标系统来描述一个包括极点的区域时, 或者Layer CRS的正向为非东、北向的时

 

候,就得视CRS的具体情况了。总而言之,bounding box的x值对应与CRS 中的第一坐标,而y 则对

 

应于第二坐标。 

 

Bounding Box值会在WMS的以下几个地方出现: 

 

──service元数据中的元素中; 

 

──GetMap request的BBOX参数中 

 

──GetFeatureInfo的map request部分中的BBOX参数 

 

在CRS:84 坐标参考系统中描述整个地球的元素书写如下: 

 

 

 

 

二、请求参数规则 request parameter rules 

 

1  参数顺序和大小写 

 

参数名称不应该为大小写敏感的,而是参数值则应该是.在该文档标准中,为了排班上的清晰,参数名称通常

 

为大写形式,但这个不是必须的.  

 

请求中的参数可以以任意顺序排列.  

 

当请求的参数多次出现并相互冲突时,服务器可能响应未知值.  

 

WMS应该能处理在该文档中没有定义的请求参数.用该标准的话来说,就是,这个参数对WMS为多余的. 

 

2  参数列表 

 

参数由一个列表组成(比如,BBOX,LAYERS,STYLES),该列表应该使用逗号(“,”)作为表项的分隔符,而期

 

间不应该有多余的空格符.如果在一个列表中存在空格符或者逗号,按照URL编码规则,它们将被忽略. 

 

有时候,一个列表项的内容可能为空,所以应该用一个空的字符串表示,(如””).这样,两个连续的逗号就表示

 

一个空项,该空项由一个逗号引领并且由一个逗号结尾.一个空项可能被翻译为一个不包含任何表项的列表,

 

也可能是作为一个单独的空项目,这取决于其内容.

 

 

 

三、常用的请求参数 

 

VERSION  该参数描述协议版本 

 

REQUEST  该参数指示激活哪个服务操作.其值应该为服务器提供的操作的名称之一 

 

FORMAT  指示一个操作的响应 

 

WMS可能只提供被某一类型的操作知晓的一个格式集合的子集,因此,服务器应该在自己的服务元数据中

 

告知其支持的那些格式,并且应该接受请求其中任何一种格式的请求.服务器也可以选择地提供一种此前其

 

他实例没有的新的格式,该格式并不要求客户端能接受和进行处理.如果一个请求包含未被服务器提供的请

 

求格式,则服务器为该已定义操作返回其默认格式,或者如果没有定义默认操作,则抛出一个服务异常(编码

 

为”InvalidFormat”). 

 

客户端可能也只能接受被一种操作知晓的格式集合的一个子集.如果客户端和服务器没有可以相互认同的

 

操作格式.那么客户端可能按照子集的判断终止同服务器的联系,或者搜索提供该格式的中介服务来进行格

 

式转换,或者允许用户挑选其他部署方法(也就是说,在本地存储或者传递给一个帮助应用程序). 

 

在服务元数据和操作请求中,格式均使用MIME类型.每一个操作都有其特有的支持格式列表.有些格式可能

 

被多个操作提供,因此,需要时可以在列表间进行复制.

 

四、WMS 操作 

 

WMS定义了 3个操作:GetCapabilities,GetMap,GetFeatureInfo.其中GetFeatureInfo为可选的.下

 

面的条款规定了如何在Http 和DCP中执行和使用WMS 操作. 

 

Ⅰ GetCapabilities(必须的) 

 

1. 概述 

 

该操作的目的在于获取服务元数据.元数据是的对服务器信息内容和可接受的请求参数值的一种机器可读

 

性(并且可以人读)描述. 

 

在对一个WMS server构造GetCapabilities请求时──当然这个server 也可以提供其他类型的服务─

 

─特别地,客户会有必要查找关于WMS的信息.这样,该请求的SERVICE参数就应该包含”WMS”,如下表

 

所示.

 

2. 请求参数 

 

FORMAT──该可选参数规定服务元数据的格式要求.WMS服务器上GetCapabilities请求支持的值由服

 

务元数据中的一个或多个元素列出.每个服务器应该支持默

 

认的text/xml 格式(该格式在原标准书的服务A上有详细定义).支持其他格式是可选的,在

 

整个MIME类型字符串被认为是FORMAT参数的值.在HTTP环境下,MIME类型应该被设置成使用HTTP

 

内容类型实体头(HTTP Content-type entity header)的返回实体.如果请求描述的格式不被服务器支持,

 

服务器应该返回默认的text/xml 格式.下面说明: 

 

VERSION(略)  

 

SERVICE──该强制性参数指示哪个可用的服务类型将被激活.在WMS上当激活一个GetCapabilities

 

时,值”WMS”就应该被使用.  

 

REQUEST──要激活GetCapabilities操作,值”GetCapabilities”就应该被用到.  

 

UPDATESEQUENCE──该可选参数是为维持缓冲区一致而设置的,它的值可以为一个代表一个符合

 

ISO 8601:2004 格式(原文附录D)的时间标签(timestamp)的integer,string或者其他string.服务器

 

可能包含一个UpdateSequence值于服务元数据中,如果这样,当Capablities被改变(e.g. 当新的maps

 

添加到给服务中)的时候,这个值应该被增加.客户端可能在其GetCapabilities请求中包含该参数.服务器

 

端基于客户请求和服务器元数据中UpdateSequence存在和相关值的响应应该依据下表的规范.

 

3. GetCapabilities响应

 

当激活一个WMS时,它对GetCapabilities的响应应该为一个包含根据XML Schema文件格式化过的服务

 

元数据XML文档.模式文件描述了服务元数据内容是可选的或是必须的,以及服务内容的格式.XML文件应

 

该包含一个在http://www.opengis.net/wms 名字空间中命名为WMS_Capabilities的Root元素,该元

 

素应该包含一个XML模式实例schemalLocation属性来绑定http://www.opengis.net/wms 名字空间

 

到该模式.

 

 

 

Ⅱ GetMap(必须的) 

 

1.概述 

 

GetMap操作返回一幅地图(map),接收到 GetMap请求后,WMS要么满足请求要么发送一个异常. 

 

2.GetMap请求综述 

 

下表列出了GetMap请求的参数. 

 

 

 

下表列出了 GetMap 请求的参数.

 

 

 

 

 

Request parameter

 Mandatory

 

/optional

 

 

Description

 

VERSION=1.3.0

 M

 Request version.

 

REQUEST=GetMap

 M

 Request name.

 

 

 

LAYERS=layer_list

 

 

M

 Comma-separated list of one or more map layers.

 

STYLES=style_list

 M

 Comma-separated list of one rendering style per requested layer.

 

CRS=namespace:identifier

 M

 Coordinate reference system.

 

 

 

BBOX=minx,miny,maxx,maxy

 

 

M

 Bounding box corners (lower left, upper right) in CRS units.

 

WIDTH=output_width

 M

 Width in pixels of map picture.

 

HEIGHT=output_height

 M

 Height in pixels of map picture.

 

FORMAT=output_format

 M

 Output format of map.

 

 

 

TRANSPARENT=TRUE|FALSE

 

 

O

 Background transparency of map

 

(default=FALSE).

 

BGCOLOR=color_value

 O

 Hexadecimal red-green-blue colour value for the background color

 

 

 

 

 

 

 

 

 (default=0xFFFFFF).

 

EXCEPTIONS=exception_format

 O

 The format in which exceptions are to be reported by the WMS (default=XML).

 

TIME=time

 O

 Time value of layer desired.

 

ELEVATION=elevation

 O

 Elevation of layer desired.

 

 

 

Other sample dimension(s)

 

 

O

 Value of other dimensions as appropriate.

 

 

表格  3    The Parameters of a GetMap request

 

 

 

3.请求参数详细说明 

 

1) LAYERS 

 

该参数值是一个逗号分隔的列表,列表元素为有效图层名称,这些名字应该在服务元数据中的 

 

元素中已经定义过的字符内容.WMS在绘制map的时候,应该将该列表最左边的层放到层

 

栈的最底部,下一个放在前一个的上面,依此类推.  

 

其中可选的元素在服务元数据中为一个正数,表明了客户端在一次GetMap请求中允

 

许请求的最大图层数.如果忽略了该元素,则服务器没有该限制. 

 

2) STYLES 

 

以逗号分隔的列表形式表示的请求的每一图层的STYLE,STYLE值应该有效.并且STYLE值与

 

LAYERS参数值总是一一对应的.所以,每个map都是按照LAYERS的STYLE绘制各个layer,而各个

 

Layer的名称必须在