OGC Web Map Service标准的规范
gis吧
全部回复
仅看楼主
level 8
LionGG 楼主
http://blog.csdn.net/Geoleung/archive/2009/01/05/3714588.aspx
〇.前言
  在WMS规范中将地图定义为地理数据可视的表现,WMS返回的不是地图数据,而是地图图象,WMS规范定义了三个操作:
   GetCapabilities操作返回服务级元数据,它是对服务信息内容和请求参数的一种描述,元数据使用XML形式文件表示;
   GetMap操作根据客户端发出的请求参数在服务端进行检索,服务器返回一个地图图象,其地理空间参数和大小是已经明确定义的,返回的地图图象可以是GIF,JPEG,PNG或SVG格式的;
   GetFeatureInfo操作根据用户请求的X,Y坐标或感兴趣的图层,返回这些特殊要素的信息,信息以HTML,GML或者ASCII格式表示。
2009年02月25日 07点02分 1
level 8
LionGG 楼主
一. 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”>
2009年02月25日 07点02分 2
level 8
LionGG 楼主
二、请求参数规则 request parameter rules
1 参数顺序和大小写
参数名称不应该为大小写敏感的,而是参数值则应该是.在该文档标准中,为了排班上的清晰,参数名称通常
为大写形式,但这个不是必须的. 
请求中的参数可以以任意顺序排列. 
当请求的参数多次出现并相互冲突时,服务器可能响应未知值. 
WMS应该能处理在该文档中没有定义的请求参数.用该标准的话来说,就是,这个参数对WMS为多余的.
2 参数列表
参数由一个列表组成(比如,BBOX,LAYERS,STYLES),该列表应该使用逗号(“,”)作为表项的分隔符,而期
间不应该有多余的空格符.如果在一个列表中存在空格符或者逗号,按照URL编码规则,它们将被忽略.
有时候,一个列表项的内容可能为空,所以应该用一个空的字符串表示,(如””).这样,两个连续的逗号就表示
一个空项,该空项由一个逗号引领并且由一个逗号结尾.一个空项可能被翻译为一个不包含任何表项的列表,
也可能是作为一个单独的空项目,这取决于其内容.
2009年02月25日 07点02分 3
level 8
LionGG 楼主
三、常用的请求参数
留给百度
2009年02月25日 07点02分 4
level 8
LionGG 楼主
后面不贴了,去原文看吧,作者翻译得不错,还做了下实现。
http://blog.csdn.net/Geoleung/archive/2009/01/05/3714703.aspx
2009年02月25日 07点02分 7
level 8
LionGG 楼主
三、常用的请求参数
VERSION 该参数描述协议版本
REQUEST 该参数指示激活哪个服务操作.其值应该为服务器提供的操作的名称之一
FORMAT 指示一个操作的响应
WMS可能只提供被某一类型的操作知晓的一个格式集合的子集,因此,服务器应该在自己的服务元数据中
告知其支持的那些格式,并且应该接受请求其中任何一种格式的请求.服务器也可以选择地提供一种此前其
他实例没有的新的格式,该格式并不要求客户端能接受和进行处理.如果一个请求包含未被服务器提供的请
求格式,则服务器为该已定义操作返回其默认格式,或者如果没有定义默认操作,则抛出一个服务异常(编码
为”InvalidFormat”).
客户端可能也只能接受被一种操作知晓的格式集合的一个子集.如果客户端和服务器没有可以相互认同的
操作格式.那么客户端可能按照子集的判断终止同服务器的联系,或者搜索提供该格式的中介服务来进行格
式转换,或者允许用户挑选其他部署方法(也就是说,在本地存储或者传递给一个帮助应用程序).
在服务元数据和操作请求中,格式均使用MIME类型.每一个操作都有其特有的支持格式列表.有些格式可能
被多个操作提供,因此,需要时可以在列表间进行复制.
2009年02月25日 07点02分 8
1