MS RFC 82:支持增强的层元数据管理¶
- 日期
2012-01-24
- 作者
Tom Kralidis(gmail.com上的Tomkralidis)
- 最后编辑
2017-04-03
- 状态
采用
- 版本
MAPServer 7.2
概述¶
OGC Web服务(OWS)能够将与给定资源(WMS层、WFS FeatureType、WCS Coverage、SOS ObservationOffering)相关联的内容元数据发布到功能文档中,并作为对给定URL(即ISO元数据XML文档)的引用。
mapserver支持两种内联(例如 wms_title
, wms_abstract
)和基于URL的(例如 wms_metadataurl_href
)OWS功能的元数据广告。
如果给定的数据集没有关联的正式XML元数据,那么功能XML引用元数据(即WMS MetadataURL
)不可用,即使在层之间。元数据/OWS_*值和层的空间属性之间,也可以处理足够的信息来生成有用的XML元数据文档。
MAPServer OGC服务功能XML中正式XML元数据的存在,为获取元数据以支持发现的目录服务提供了价值。
建议对mapserver进行增强,以支持从给定层的元数据和空间属性生成XML元数据文档。
此增强功能为OWS服务动态发布XML元数据,以应对给定资源不存在/未指定XML元数据的情况。
技术解决方案¶
MapServer将能够从layer.metadata/ows_*指令和给定层的空间属性动态生成ISO 19139:2007元数据XML文档。
MapServer还将支持基于web.metadata ows_u*指令格式化为ISO 19119:2005的服务元数据文档的输出。这是一个支持Inspire计划的附加服务描述。
此功能将通过一个名为 GetMetadata
具有以下参数:
layer
层名称。可选参数。如果layer
未指定,则返回服务元数据的ISO元数据文档。如果无效layer
指定的参数,一个ows:ExceptionReport
返回outputschema
:元数据的响应架构。可选参数。可能值:http://www.isotc211.org/2005/gmd (ISO 19139:2007 [default])
http://www.opengis.net/cat/csw/2.0.2 (Dublin Core)
http://www.opengis.net/cat/csw/csdgm (FGDC CSDGM)
如果无效
outputschema
指定的参数,一个ows:ExceptionReport
返回
调用 GetMetadata
如果没有参数,将返回服务元数据的ISO元数据文档。
最初的实现将涵盖ISO元数据标准,并允许在将来实现其他元数据格式。特别是,这个RFC提供了一个构建块来支持inspire元数据格式需求。
实例¶
正在请求服务元数据:
http://my.host.com/cgi-bin/mapserv?request=GetMetadata
请求特定层元数据:
http://my.host.com/cgi-bin/mapserv?request=GetMetadata&layer=foo
实施细节¶
地图C(in msOWSDispatch
)
...
if (ows_request.service == NULL) {
if (EQUAL(ows_request.request, "GetMetadata")) {
status = msMetadataDispatch(map, request, &ows_request);
} else if(force_ows_mode) { /* exit if service is not set */
...
mapmetadata.c
int msMetadataDispatch(mapObj *map, cgiRequestObj *requestobj,
owsRequestObj *ows_request)
if layer parameter is not specified
return msMetadataGetServiceMetadata(map, paramsObj, ows_request);
else
return msMetadataGetLayerMetadata(map, paramsObj, ows_request);
...
int msMetadataGetLayerMetadata(mapObj *map, metadataParamsObj *paramsObj,
owsRequestObj *ows_request)
if MAP.LAYER.METADATA/ows_metadataurl_href
return HTTP 301 redirect to MAP.LAYER.METADATA/ows_metadataurl_href
else
generate metadata XML based on LAYER metadata spatial properties
...
int msMetadataGetServiceMetadata(mapObj *map, metadataParamsObj *paramsObj,
owsRequestObj *ows_request)
read map->web.metadata
return ISO 19119:2005 XML
下游OGC Web服务代码然后实现:
if !LAYER.METADATA.ows_metadataurl_href
set ows_metadataurl_href to http://host/mapserv?request=GetMetadata&layer=foo
set ows_metadataurl_format to "text/xml"
set ows_metadataurl_type to "TC211"
测试¶
这个 msautotest/wxs
套件将通过测试用例进行扩展,以证明 GetMetadata
.
文档¶
文档将通过添加 ogc/mapmetadata.txt
到 ogc/index.txt
. 也, wms_server.txt
, wfs_server.txt
, wcs_server.txt
, sos_server.txt
将更新以解释默认输出,如果 ows_metadataurl_href
未设置。
向后兼容性问题¶
与现有 Mapfile 没有兼容性问题。
此实现将使MapServer OWS功能XML能够始终通过引用元数据URL(即WMS)来公布XML元数据 MetadataURL
,但不会覆盖现有行为。也就是说,如果给定的层 ows_metadataurl_href
,则此值将用于公布元数据XML引用。如果 ows_metadataurl_href
未设置,则代码将通过引用 GetMetadata
操作。
受影响的文件¶
mapmetadata.c(新)
mapows.c
mapwms.c
mapwfs.c
mapwfs11.c
mapwcs.c
mapwcs11.c
mapwcs20.c
mapogcsos.c
投票历史¶
2012/10/08通过,由Thomasb、Stevel、Stephanm、Perryn、Stevew、Danielm和Tomk提供+1。