WMS维数¶
- 作者
叶旺沃森阿塞法
- 联系
位于dmsolutions.ca的Yassefa
- 最后更新
2013-10-08
介绍¶
WMS服务器可以支持多种尺寸,如时间、海拔或其他尺寸类型(例如,不同波长波段的卫星图像)。时间维度请参考 WMS Time Support . 本文件描述了对立面尺寸和其他类型尺寸的支持。
在MapServer中启用维度支持¶
设置具有维度支持的WMS层¶
要拥有支持维度的有效WMS层,用户必须在层级别定义以下元数据:
wms_dimensionlist:
wms_[dimensionname]_item:
wms_[dimensionname]_units:
wms_[dimensionname]_extent:
wms_[dimensionname]_default:
指定尺寸范围¶
维度扩展数据块可以用以下语法声明 wms_[dimensionname]_extent 元数据(见附录C.3 WMS 1.1.1 specification 完整描述的文档):
value
value1,value2,value3,…—多个值的列表。
min/max/resolution
min1/max1/res1,min2/max2/res2,…—多个间隔的列表。
WMS服务器层示例¶
LAYER
NAME "lakes_elev"
METADATA
"wms_title" "Lakes"
"wms_description" "Lakes"
"wms_dimensionlist" "elevation, text_dimension"
"wms_elevation_item" "ELEV"
"wms_elevation_extent" "500, 490, 480"
"wms_elevation_units" "meters"
"wms_elevation_default" "500"
"wms_text_dimension_item" "text_dimen"
"wms_text_dimension_extent" "first, second, third"
"wms_text_dimension_units" "my_units"
"wms_enable_request" "*"
END
TYPE POLYGON
..
END
获取能力输出¶
如果层设置正确,则请求服务器上的功能将输出一个或多个维度元素。以下是为二维(WMS 1.3.0)配置的层的getCapabilities结果示例:
<Layer queryable="0" opaque="0" cascaded="0">
<Name>lakes_elev</Name>
<Title>Lakes</Title>
<CRS>EPSG:4326</CRS>
<EX_GeographicBoundingBox>
<westBoundLongitude>0.000178263</westBoundLongitude>
<eastBoundLongitude>0.0034202</eastBoundLongitude>
<southBoundLatitude>-0.002134</southBoundLatitude>
<northBoundLatitude>0.000313775</northBoundLatitude>
<BoundingBox CRS="EPSG:4326" minx="-0.002134" miny="0.000178263" maxx="0.000313775" maxy="0.0034202" />
<Dimension name="elevation" units="meters" default="500" multipleValues="1" nearestValue="0">500, 490, 480</Dimension>
<Dimension name="text_dimension" units="my_units" multipleValues="1" nearestValue="0">first, second, third</Dimension>
</Layer>
支持的维度请求¶
请求参数名称是通过将前缀“dim”与示例维度名称(功能XML中相应的<dimension>和<extent>元素的name属性值)相连接来构造的。产生的“dim_name”不区分大小写。“dim”前缀的使用是为了避免服务器定义的维度名称与当前或将来的OGC Web服务规范之间的冲突。(时间和高度是预先定义的,不使用前缀。)(第C.4.2节)
:
:
:
:
正在处理维度请求¶
当MapServer处理一个有效的维度wms参数时,它将把它处理成表达式,并在 LAYER FILTER
例如,请求,例如&elevation=490/500&…在mapserver层(带有空过滤器)上会给出..代码块::映射文件
过滤器(([Elev]>=490和[Elev]<=500))
例如,请求,例如&elevation=600&…在具有现有过滤器的PostGIS层上会给出…代码块::猜测
过滤器(高度>500)请求前
请求后过滤((Elev>500)和((Elev=600))