OGC Web Map Service标准的规范说明

来源:互联网 发布:淘宝客户端 评价管理 编辑:程序博客网 时间:2024/06/10 00:32

〇.前言

 

  在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元数据中的<BoundingBox>元素 

 

──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元数据中的<BoundingBox>元素中; 

 

──GetMap request的BBOX参数中 

 

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

 

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

 

<BoundingBox CRS=”CRS:84” minx=”-180” miny=”-90” maxx=”180” maxy=”90”>

 

 

 

二、请求参数规则 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请求支持的值由服

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

2) STYLES 

 

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

 

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

 

Layer的名称必须在<Style><Name>中有所定义,这要么为直接包含,要么继承自相应的<Layer>

 

元素的服务元数据.(换句话说,客户端不能以只为别的layer中定义的Style来请求一个layer),如果

 

一个未知的style被请求了,服务器应该发送一个服务异常(code=StyleNotDefined).客户端可以通

 

过给STYLE赋空值(“STYLE=”)来取得默认的style,如果客户端请求的style是一种既有命名的也有

 

默认的混合形式,则在STYLE参数中应该用逗号来分隔一个空值(如”STYLE=style1,,style2,,”).如

 

果所有的层都使用默认style,则下面两种形式都是有效的:”STYLE=”或”STYLE=,,,”  

 

如果服务器为一个layer发布多个Style,而客户端发送了一个默认style的请求,选择哪个style作为

 

默认值就是服务器的标准了,元数据中styles的顺序并不能表明哪个为默认的值. 

 

3)   CRS 

 

CRS参数声明了应用到BBOX请求参数的层CRS.该参数的值必须为所请求的服务器元数据中已经定

 

义过或从请求层中继承过的.  

 

WMS不必支持所有的CRS,但是,对于其已经在服务元数据发布的CRS 应该支持.如果客户请求其不

 

支持的CRS,服务器应该返回一个异常(code=”InvalidCRS”)  

 

如果WMS服务已经声明了一个层的CRS=CRS:1,如前所述,表示该层没有定义好一个坐标参考系统,

 

因此不能与其他层联合显示.客户端应该在GetMap中指定CRS=CRS:1,否则,服务器可能发送一个

 

服务异常.当CRS 在请求中使用时,BBOX参数的单位应该为像素. 

 

4) BBOX  

 

该参数允许客户请求一个特定的Bounding Box.该参数的值为逗号分隔的一串实数列表,形如:”minx, 

 

miny, maxx, maxy”, 它们分部代表请求图层CRS 下的区域坐标:最小 x,最小y,最大x,最大y.其

 

x,y轴的单位、方向、增量都在层CRS 中定义.BoundingBox和map 像素矩阵之间的关系是

 

BoundingBox包围在像素矩阵的外边,而不是通过地图周边像素的中心,在该内容中,单个像素描述地

 

面的一个区域. 

 

5) FORMAT 

 

该强制参数声明了地图的要求格式. WMS服务器支持的GetMap请求格式值在服务元数据中以

 

<Request><GetMap><Format>形式列出.<Format>的整个MIME 字符串值被用来表示

 

FORMAT参数的值,而这个值没有默认值.在HTTP环境下,MIME类型应该使用内容类型实体头文件设

 

置为返回对象.如果请求指定了一个服务器不支持的格式,服务器应该发送一个服务异常

 

( code= ”InvalidFormat” ). 

 

6)  WIDTH,HEIGHT 

 

该强制参数指定产生的地图整数值大小,单位为像素.Map CS适用于map,WIDTH-1指定了Map CS

 

中x轴方向的最大值,而HEIGHT-1则为y 轴方向的最大值.  

 

如果请求的格式为picture,则返回的图片将不考虑MIME类型,准确地为指定的width和height像素

 

值.在这种情况下,如果BBOX的比率和width/height的比率不一致时,WMS将会拉伸返回的地图以

 

使得最终像素能够在BBOX比率下自动生成.换句话说,就是使得在一个输出像素不是方形的,或者拉

 

伸图像区域到不同比率的设备上也能够使用该定义去请求一幅地图.  

 

如果WIDTH/HEIGHT比率与X,Y以及像素尺寸的比率不一致,那么就会发生图像扭曲.客户端开发人

 

员应该最大限度地减少用户不注意地请求或无意识地获得扭曲地地图.  

 

如果请求一个图形元素没有显式的width和height,客户端应该在请求中包含这个WIDTH和

 

HEIGHT值,而服务器可能使用它们作为帮助信息来构造地图输出.  

 

服务元数据中可选<MaxWidth>和<MaxHeight>元素都是整型值指明在GetMap请求中客户允许

 

地最大宽度和高度值.如果二者有缺失,则服务器对于相应值没有限制.  

 

如果WMS服务器已经声明层地width和 height固定,则客户端应该在GetMap请求中指定准确的

 

WIDTH和HEIGHT值,否则服务器将返回服务异常. 

 

7) TRANSPARENT 

 

该可选参数定义地图背景是否透明,可取值:”TRUE”和FALSE”,默认和参数缺省时取值:FALSE.  

 

绘制透明像素地能力使得不同的地图请求可以被叠置生成一个复合地区.强烈推荐每个WMS提供一种

 

可以提供透明图层的格式以使得图层可以与其他图层叠置.  

 

注意:image/gif格式具有透明性并且可以让通常客户完全显式.image/png格式提供一个范围内的

 

透明选项,但是对于应用程序浏览时的支持不那么常用.image/jpeg格式完全不能为透明.  

 

当TRANSPARENT参数值为 TRUE,并且FORMAT参数包含一幅图像格式(如image/gif)时,WMS

 

应该返回(当请求格式允许时)一个每个非空间要素绘制的像素都被设置为透明的图层结果.例如,一

 

个”road”层应该为透明的,不管有没有道路被显式.如果图像格式不支持透明,那么服务器应该响应一

 

个不透明的图像(换句话说,客户端常常会忽视图像格式以透明方式请求一幅图像,这不应该成为一个错

 

误).当TRANSPARENT被设置为FALSE时,没有数据的像素点就应该设成BGCOLOR 值.  

 

当层已经声明为不透明”opaque”的时候,地图上有意义的点,或实体将不能设成透明的,而客户端可能

 

仍然请求TRANSPARENT=TRUE 

 

当FORMAT参数包含一个图形元素格式时,TRANSPARENT参数可能在请求中出现,但其设置值将会

 

被WMS忽略. 

 

8) BGCOLOR 

 

该可选参数为一个字符串,用来指定地图将要使用的背景色(无数据区).BGCOLOR通常的格式为一个

 

RGB值的十六进制编码,其中对于每个颜色值red、green和blue使用两个十六进制字符,所以该值

 

的范围为00 到FF(十进制的0 和255).其格式为oxRRGGBB;RRGGBB大小写都是允许的.而”0x”

 

必须为小写的”x”,如果该参数在请求中缺失,则默认的值为oxFFFFFF(对应的值为白色).  

 

当FORMAT值为图像格式时,服务器应该设置背景像素值为BGCOLOR 值 

 

当FORMAT的值为图形元素格式(它们没有显式的背景),或者图像格式时,WMS应该避免为前景元素

 

使用BGCOLOR值,因为这样在该背景颜色下,它们将不可见.  

 

当图层已经什么了为不透明”opaque”时,地图上的重要点,实体将不显式任何背景. 

 

9) EXCEPTIONS 

 

该可选参数在前面已有定义,当请求中缺失该参数时,其默认值为”XML”.  

 

WMS应该在<Exception>元素内以分隔的<Format>元素列出一到多个下列异常报告格式,其中第

 

一个是必须提供的,其他则为可选的:  

 

XML(必须的)  

 

使用服务异常XML报告错误,这个值在没有指明请求参数时作为默认值. 余下的异常格式都是可选的,

 

如果一个请求指定服务器不支持的其他异常格式,服务器可以发送一个默认XML格式的异常.  

 

INIMAGE(可选的) 

 

如果EXCEPTION参数设为INIMAGE,在侦测到一个错误时,WMS返回一个由FORMAT参数指定

 

MIME类型的 object,其中FORMAT格式的内容包括错误的文本描述.如果为图片格式,错误消息将在

 

返回的图片上绘制,而如果为图形要素格式,错误消息文本将以该格式下的常规绘制风格形式产生.  

 

BLANK(可选)  

 

如果EXCEPTION参数设为BLANK,WMS在侦测到错误时,应该返回一个FORMAT参数指定类型的,

 

其内容统一为”off”的object.如果为图片格式,则返回值为单色(背景色)图像;如果图片格式支持透明,

 

且指定TRANSPARENT=TRUE,则像素应该时透明的;如果为图形元素输出格式,则在输出中将不包

 

含任何图形元素. 

 

10)  TIME 

 

关于使用Time属性,参见原文6.7.6以及附录C和D 

 

11) ELEVATION 

 

关于使用该属性,参见原文6.7.5以及附录 C 

 

12)  其他样本尺度(Sample Dimensions) 

 

使用样本尺度值的规范参见原文6.7.7以及附录C 

 

4.GetMap响应 

 

一个有效的GetMap请求的响应应该是其请求的一幅包含获得空间参考信息的图层的地图.该地图满足要

 

求的样式(style),指定了地理参考系统,外包矩形(bounding box),大小(size),格式(format)和透明性

 

(transparency). 

 

有效的GetMap请求应该能生成请求异常格式的错误输出(或极端形式下的网络协议错误响应).  

 

在HTTP环境下,返回值的内容类型实体头(Content-type entity header)的MIME类型应该于返回值的

 

格式相匹配. 

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Geoleung/archive/2009/01/05/3714588.aspx