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 完整描述的文档):

  1. value

  2. value1,value2,value3,…—多个值的列表。

  3. min/max/resolution

  4. 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))