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 )不可用,即使在LAYER.METADATA/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计划的附加服务描述。
此功能将通过名为的MapServer特定的HTTP操作提供 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
实施细节¶
Mapows.c(在 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 未设置。
向后兼容性问题¶
与现有映射文件没有兼容性问题。
此实施将使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
票据ID¶
投票历史¶
2012/10/08通过,由Thomasb、Stevel、Stephanm、Perryn、Stevew、Danielm和Tomk提供+1。