MS RFC 67:启用/禁用OGC Web服务中的层

日期

2011-02-01

作者

Alan Boudreault(aboudreault,位于mapgears.com)

作者

丹尼尔·莫里塞特(dmorissette at mapgears.com)

作者

Yewondwossen Assefa(加州dmsolutions.ca的Yassefa)

最后编辑

2011-02-10

状态

2010-02-25通过,MapServer 6.0实施

版本

MAPServer 6

概述

目前,无法隐藏/禁用OGC Web服务中的层。每个人都认识到需要能够从给定的映射文件中隐藏一些或所有OGC Web服务(OWS)请求的层。

这是一个添加在MapServer中的OGC Web服务中启用/禁用层的功能的建议。

维基网站http://trac.osgeo.org/mapserver/wiki/hidinglayersinogcWebservices上也讨论了这个话题。

用例

下面是一些用例来演示隐藏层的需求:

  • 一个需要能够隐藏所有OGC服务的tileindex层。

  • 在一个WMS映射文件中,多个比例相关层位于一个公共组中,我们只希望该组出现在getcapabilities中?而不是单独的层。但是,层不应该完全关闭,因为我们希望它们在getmap中可见,并且在选择组时可以使用getFeatureInfo进行查询。此用例对于WMS很常见,可能(或不可能)适用于其他OGC服务。

  • 人们可能希望通过WMS而不是通过WFS(或任何服务组合)提供给定的层。换句话说,我们需要能够选择在哪个OGC服务中暴露给定的层。

  • 版权声明(即状态为默认的层)不应出现在getcapabilities输出中,也不应是可查询的。

  • 不是要隐藏一个完整的层,而是设置一种能力,可以说希望某个层在WMS GetFeatureInfo响应中以GML的形式返回几何体(此时它永远不会返回)

  • 将wms_group_层处理为真实层(与inspire相关),但将渲染部分移动到隐藏层中,以避免组层和子层中的冗余样式配置。

建议的解决方案

主要关注的是最小化用户在其映射文件中的更改。看起来更简单的方法是使用元数据,正如我们目前对一些OWS设置所做的那样。

除非在地图或图层级别启用,否则默认情况下将禁用所有OWS服务。可以使用以下元数据启用OWS服务:

  • OWS启用请求:应用于所有OGC Web服务

  • WMS启用请求:应用于Web地图服务(WMS)

  • WFS_启用_请求:应用于Web功能服务(WFS)

  • SOS激活请求:应用于传感器观测服务(SOS)

  • WCS启用请求:应用于Web覆盖服务(WCS)

元数据的值是要启用的请求的列表:::

"GetMap GetFeature GetFeatureInfo"

可能的值是对应的OGC规范中定义的每个服务类型的请求名称。

为了方便起见,在请求列表中还可以使用两个特殊字符:

  • *:单独使用,表示所有请求

  • !:置于请求名称之前,表示禁用此请求

  • 你说什么?*:表示禁用所有请求

实例:

完全启用WMS:::

wms_enable_request "*"

启用WMS,除GetFeatureInfo::之外的所有请求:

wms_enable_request "* !GetFeatureInfo"

仅使用getmap和getFeatureInfo启用WMS:::

wms_enable_request "GetMap GetFeatureInfo"

启用任何/所有OGC Web服务请求类型:::

ows_enable_request "*"

禁用任何/所有OGC Web服务请求类型,在层级别上主要用于隐藏特定层:::

ows_enable_request "!*"

遗传

提出的解决方案的一个特殊性是对地图和图层之间的设置的继承。地图级别的设置应用于所有图层,除非它们在图层级别被覆盖。例子:

为地图级别的所有图层完全启用WFS:::

wfs_enable_request "*"

在特定层中禁用WFS GetFeature请求(所有其他请求将保持启用状态)::

wfs_enable_request "!GetFeature"

实施说明

  • 别忘了更新getCapabilities中支持的操作列表(例如,如果“wms_enable_request”,不要将getFeatureInfo作为操作写出)!获取功能信息“)

改进了将WMS层组作为真实层的处理

WMS_LAYER_GROUP的当前行为是提供层的层次结构,并通过功能文档公开它。父层不包含<name>标记,因此无法通过GetMap和GetFeatureInfo请求访问。WMS_LAYER_GROUP功能升级为使用组参数指示可以请求的XPATH表达式的级别(参考https://github.com/MapServer/MapServer/issues/1632),和本RFC中讨论的功能的添加),用户将可以灵活地配置 Mapfile 以显示/隐藏低级别层,以及在树层次结构的不同级别允许或不允许WMS请求。这对于能够支持INSPIRE要求尤其重要。

备注

RFC的这一部分没有实现,将作为未来激励相关增强的一部分完成,可能在6.2中。

向后兼容性问题

默认情况下,将禁用所有OWS服务。这意味着所有用户都必须修改他们的映射文件并添加以下行,以使他们的OGC服务像以前一样工作。

ows_enable_request "*"

售票处

主要客票:

相关门票:

投票历史

2010-02-25通过,法兰克,佩里克尔斯史蒂文,丹尼尔,阿塞菲,杰夫姆,塔马斯+1