MS RFC 75:Inspire View服务支持

日期

2011/07/01

作者

斯特凡·利奥波德(stefan.leopold at reflex.at)

作者

stephan meisl(在eox.at时stephan.meisl)

最后编辑

2012年3月9日

状态

2012/03/08通过

版本

地图服务器6.2

1。概述

为了实现Inspire View服务合规性,需要在MapServer中实现一些增强功能,以支持规范

  • 激活激励支持(两种情况)

  • 对某些功能字段的多语言支持

  • 提供inspire特定元数据

  • 命名组层

  • 根层和可能存在的组层的样式部分

这个RFC聚合并扩展了已经提供的关于Inspire View服务支持的想法/解决方案。

2。激励支持的激活

inspire特定的元数据可以在外部inspire服务元数据文档(场景1)中引用,也可以直接嵌入到功能文档(场景2)中。MapServer需要支持这两种方案。

正如票据3608_uu中所建议的那样,通过“WMS_Inspire_Capabilities”在mapfile的web.metadata部分激活相应的inspire支持场景。如果激活,相应的inspire名称空间以及相应的验证警告将在功能文档中生成。

场景1-使用对外部服务元数据的引用激活Inspire支持:

WEB
 METADATA
  "wms_inspire_capabilities" "url"
  ...
 END
END

场景2-使用嵌入式服务元数据激活Inspire支持:

WEB
 METADATA
  "wms_inspire_capabilities" "embed"
  ...
 END
END

三。对某些功能字段的多语言支持

Inspire需要多语言支持,并请求功能文档中所有支持语言以及默认语言的列表。根据getCapabilities请求中的语言参数,特定的元数据值,即

  • "wms_title"

  • "wms_abstract"

  • "wms_rootlayer_title"

  • "wms_rootlayer_abstract"

  • "wms_group_title"

  • "wms_group_abstract"

  • "wms_style_title"

  • "wms_style_<name>_title"

以及与语言相关的参考数据,如
  • 数据“公路”

  • 连接“DB-GER”

需要以要求的语言提供。如果不支持该语言(或不存在语言参数),则必须使用默认语言。

如票据3608_uuu中建议的那样,所有支持的语言通过mapfile的web.metadata部分的“wms_languages”指定为逗号分隔列表(默认为第一语言)。此语言参数还添加到getCapabilities输出中的onlineresource。::

WEB
 METADATA
  ...
  "wms_languages" "eng,ger"       #first default, values according ISO 639-2/B
  ...
 END
END

为了解决第二个问题,评估了不同的实施方案。

对于特定于语言的元数据值,将应用键扩展方法。::

WEB
 METADATA
  ...
  "wms_title.eng" "myservicetitle"
  "wms_title.ger" "myservicetitleger"
  "wms_abstract" "mylayerabstract"        #fallback
  "wms_abstract.ger" "mylayerabstractger"
  ...
 END
END

对于依赖于语言的引用数据,采用了类似的方法,如mapserver的runtime-substitution_uu功能(仅替换具有%language%的数据和连接值)。::

...
       LAYER
        NAME TN.RoadTransportNetwork.RoadLink
        DATA "road_%language%"
        ...
       END
...

如果不支持该语言(或不存在语言参数),则将替换默认语言。

4。提供inspire特定元数据

根据场景的不同,需要额外的元数据信息来支持规范。Inspire相关字段如下:

场景1-使用引用的外部服务元数据激发相关字段:

WEB
 METADATA
  "wms_inspire_capabilities" "url"
  "wms_languages" "eng,ger"               #first default, values according ISO 639-2/B
  "wms_inspire_metadataurl_href" "http://INSPIRE.service/metadata"
  "wms_inspire_metadataurl_format" "application/vnd.ogc.csw.capabilities.response_xml"
  "wms_keywordlist_ISO_items" "infoMapAccessService" #value according "classification of spatial data services"
  "wms_keywordlist_vocabulary" "ISO"
  "wms_title" "myservicetitle"
  "wms_abstract" "myabstract"
  "wms_fees" "conditions unknown"         #value either "no conditions apply"|default "conditions unknown"|<specific conditions>
  "wms_accessconstraints" "None"          #value according ISO 19115 (MD_RestrictionCode codelist) or default "None"
  "wms_contactorganization" "MapServer"   #responsible organization
  "wms_contactposition" "owner"           #responsible organization, value according "INSPIRE Metadata Regulation" (part D6)
  ...
 END
END

场景2-使用嵌入式服务元数据激发相关字段:

WEB
 METADATA
  "wms_inspire_capabilities" "embed"
  "wms_languages" "eng,ger"               #first default, values according ISO 639-2/B
  "wms_inspire_temporal_reference" "2011-09-19" #date of last revision, value according YYYY-MM-DD
  "wms_inspire_mpoc_name" "mympocname"    #point of contact
  "wms_inspire_mpoc_email" "mympoc@e.mail" #point of contact
  "wms_inspire_metadatadate" "2011-09-19" #value according YYYY-MM-DD
  "wms_inspire_resourcelocator" "http://myinspireresource" #URL for ResourceLocator
  "wms_inspire_keyword" "infoMapAccessService" #value according "classification of spatial data services"
  "wms_keywordlist_ISO_items" "infoMapAccessService"
  "wms_keywordlist_vocabulary" "ISO"
  "wms_title" "myservicetitle"
  "wms_abstract" "myabstract"
  "wms_fees" "conditions unknown"         #value either "no conditions apply"|default "conditions unknown"|<specific conditions>
  "wms_accessconstraints" "None"          #value according ISO 19115 (MD_RestrictionCode codelist) or default "None"
  "wms_contactorganization" "MapServer"   #responsible organization
  "wms_contactposition" "owner"           #responsible organization, value according "INSPIRE Metadata Regulation" (part D6)
  ...
 END
END

笔记:

  • 几个字段需要某些值,这些值不是由MapServer本身验证的,而是针对 INSPIRE schemasWMS INSPIRE tester 推荐

  • 如本文档中关于场景2的建议,<inspire-common:resourcetype>始终设置为service,<inspire-common:spacedataservicetype>始终设置为view,这两个值不能通过mapfile进行更改。

  • 一致性总是设置为不评估,基于最新的 INSPIRE Metadata Implementing Rules (第7页)、规范文件、规范日期和规范URI或URL需要为符合/不符合度提供,目前尚未实现。

5。命名组层

INSPIRE强制使用命名图层组。因此,的功能 wms_layer_group 已扩展为支持命名图层组。如果与中使用的名称相同的层 wms_layer_group 如果找不到与以前一样具有此名称的层作为未命名组,则将其视为命名组。

要提供此功能,变量 isUsedInNestedGroup 在方法中介绍了 msWMSPrepareNestedGroups()msWMSPrintNestedGroups() 其在各种方法中用于准备WMS响应,例如 msWMSGetCapabilities()

只要这种能力,任何层次的层次都可以实现。例如,请参见MSAutoTest中的“wms_inspire.map”映射文件。

TN
+--- TN.CommonTransportElements
     +--- TN.CommonTransportElements.TransportArea
     +--- TN.CommonTransportElements.TransportLink
     +--- TN.CommonTransportElements.TransportNode
+--- TN.RoadTransportNetwork
     +--- TN.RoadTransportNetwork
     +--- TN.RoadTransportNetwork.VehicleTrafficArea
     +--- TN.RoadTransportNetwork.RoadServiceArea
     +--- TN.RoadTransportNetwork.RoadArea
+--- TN.RailTransportNetwork
     +--- TN.RailTransportNetwork.RailwayLink
     +--- TN.RailTransportNetwork.RailwayStationArea
     +--- TN.RailTransportNetwork.RailwayYardArea
     +--- TN.RailTransportNetwork.RailwayArea

6。根层和可能存在的组层的样式部分

对于常规层, concept of GROUP and CLASSGROUP 可用于将图层样式名称设置为相应的值。另外-如票据3850中建议的,层样式标题可以通过WMS样式标题和层样式标题通过WMS样式标题覆盖(需要提供宽度、高度、格式和href)。

...
       LAYER
        NAME TN.RoadTransportNetwork.RoadLink
        DATA "road"
        METADATA
         "wms_title.eng" "Transport networks: Road Link"
         "wms_title.ger" "Verkehrsnetze: Strassensegment"
         ...
         "wms_style_inspire_common:DEFAULT_title" "mylayerstyletitle"         #style title
         "wms_style_inspire_common:DEFAULT_legendurl_width" "85"              #override style legendurl (mandatory: width, height, format, href)
         "wms_style_inspire_common:DEFAULT_legendurl_height" "40"
         "wms_style_inspire_common:DEFAULT_legendurl_format" "image/png"
         "wms_style_inspire_common:DEFAULT_legendurl_href" "http://path/to/onlineresource...roadlink"
        END
        ...
       END
       ...
       CLASSGROUP "inspire_common:DEFAULT"
       CLASSITEM "NAME_E"

       CLASS
        NAME "myclass1"
        GROUP "inspire_common:DEFAULT"
        EXPRESSION "Trans-Canada Highway"
        COLOR 255 0 0
       END

       CLASS
        NAME "myclass2"
        GROUP "inspire_common:DEFAULT"
        COLOR 0 255 0
       END
...

建议使用以下方法来支持根层中的(可自定义)样式部分

  • 在web.metadata节中使用wms-style-name将样式节添加到根层

  • 使用wms-style-title覆盖样式标题(可选)

  • 使用wms样式的legendrl*覆盖legendrl的宽度、高度、格式和Href(可选)

以及可能存在的群层

  • 在第一个对应层中使用wms-group-style-name.metadata节将样式节添加到组层

  • 使用wms-group-style-title覆盖样式标题(可选)

  • 使用wms_group_-style_-legendrl_ux*覆盖legendrl的宽度、高度、格式和Href(可选)

...
       WEB
        METADATA
         ...
         "wms_style_name" "inspire_common:DEFAULT"      #style name
         "wms_style_title" "myroadarealayerstyletitle"  #style title
         "wms_style_legendurl_width" "85"               #override style legendurl (mandatory: width, height, format, href)
         "wms_style_legendurl_height" "40"
         "wms_style_legendurl_format" "image/png"
         "wms_style_legendurl_href" "http://path/to/onlineresource...roadarea"
        END
       END

       LAYER
        NAME TN.RailTransportNetwork.RailwayLink
        GROUP TN.CommonTransportElements.TransportLink
         DATA "road"
         METADATA
          "wms_group_title.eng" "Transport networks: Generic Transport Link"
          "wms_group_title.ger" "Verkehrsnetze: Generisches Verkehrssegment"
          "wms_group_abstract" "mygenerictransportlinklayerabstract" #fallback
          "wms_group_abstract.ger" "mygenerictransportlinklayerabstract"
          "wms_group_style_name" "inspire_common:DEFAULT" #style name
          "wms_group_style_title" "mygenerictransportlinklayerstyletitle" #style title
          "wms_group_style_legendurl_width" "85"        #override style legendurl (mandatory: width, height, format, href)
          "wms_group_style_legendurl_height" "40"
          "wms_group_style_legendurl_format" "image/png"
          "wms_group_style_legendurl_href" "http://path/to/onlineresource...generictransportlink"
          "wms_title.eng" "Transport networks: Railway Link"
          "wms_title.ger" "Verkehrsnetze: Eisenbahnverbindung"
          "wms_abstract" "myrailwaylinklayerabstract"   #fallback
          "wms_abstract.ger" "myrailwaylinklayerabstractger"
          ...
         END
        ...
       END
...

如果这种能力,可以实现3个层次,如MSAutoTest中的示例mapfiles“wms-inpire-scneario1.map”和“wms-inpire-scneario2.map”所示。

TN.RoadTransportNetwork.RoadArea
+--- TN.RoadTransportNetwork.RoadLink
+--- TN.CommonTransportElements.TransportLink
     +--- TN.RailTransportNetwork.RailwayLink
     +--- TN.AirTransportNetwork.AirLink

7。实施细节

为了实现这些增强,需要在MapServer代码库中实现以下更改:

  1. 从请求中获取语言并验证它

  2. 检测是否激活了Inspire支持,如果激活,则添加相应的命名空间

  3. 使用语言列表输出扩展的功能并激发特定的元数据(取决于场景1或场景2)

  4. 在输出中将语言参数添加到OnlineResource

  5. 在从MapObject派生元数据时,考虑基于语言的键扩展(例如“wms-title.eng”),使用不带扩展名的回退(例如“wms-title”)。

  6. 根据“wms_layer_group”对层进行分组

  7. 如果在mapfile中指定,则覆盖样式标题和legendrls(例如“wms-style”<stylename>“title”)。

  8. 为缺少但必需的inspire特定元数据添加警告

  9. 包括来自各种请求类型中任何嵌套层的信息

7.1受影响的文件

以下文件受此RFC影响:

mapows.c/mapows.h

[N] MS_DLL_EXPORT const char *msOWSLookupMetadataWithLanguage(.., const char *validated_language)
[N] MS_DLL_EXPORT char *msOWSGetOnlineResource2(.., const char *validated_language)
[N] MS_DLL_EXPORT char **msOWSGetInspireLanguageList(..)
[N] MS_DLL_EXPORT char *msOWSGetInspireLanguage(.., const char *requested_language)
[N] MS_DLL_EXPORT int msOWSPrintInspireCommonExtendedCapabilities(..)
[N] int msOWSPrintInspireCommonMetadata(..)
[N] int msOWSPrintInspireCommonLanguages(..)
[C] int msOWSPrintEncodeMetadata(..)
[N] int msOWSPrintEncodeMetadata2(.., const char *validated_language)
[C] int msOWSPrintGroupMetadata(..)
[N] int msOWSPrintGroupMetadata2(.., const char *validated_language)
[C] int msOWSPrintMetadataList(..)
[C] int msOWSPrintEncodeMetadataList(..)

mapwms.c

[S] int msDumpLayer(.., const char *validated_language, int grouplayer)
[S] void msWMSPrepareNestedGroups(.., int* isUsedInNestedGroup)
[S] void msWMSPrintNestedGroups(.., int* isUsedInNestedGroup, const char *validated_language)
[S] int msWMSGetCapabilities(.., const char *requested_language)
[C] int msWMSLoadGetMapParams(..)
[C] int msWMSFeatureInfo(..)
[C] int msWMSDescribeLayer(..)
[C] int msWMSGetLegendGraphic(..)
[C] int msWMSGetStyles(..)
[C] int msWMSDispatch(..)
[N] void msWMSPrintAuthorityURL(..)
[N] void msWMSPrintIdentifier(..)
[N] void msWMSPrintKeywordlist(..)

mapdraw.c

[C] int msLayerIsVisible(..)

maputil.c

[C] int msExtentsOverlap(..)
  • [C]功能已更改

  • [n]新功能

  • [s]函数的签名也已更改

7.2MapScript问题

这些更改提供了新的功能,没有考虑到mapscript问题。

7.3向后兼容性问题

此更改提供了新的功能,没有考虑向后兼容性问题。

8。解决方案

此RFC的代码可以在Inspire_Soc2011_USandbox中找到。

合并票据:
  • 门票3608:激励相关支持

  • 票据3850_uu:允许为样式定义标题,并可以覆盖自动生成的legendrl href

  • 车票 1632: 支持使用命名图层组 wms_layer_group

  • 票据4129_uux:根层元数据

  • 票据4148_u:wms getfeatureinfo的内容类型错误

  • 票据4149_uux:错误的默认WMS legendrl图像格式

  • 票据4151_uu:在功能文档中为关键字添加词汇属性

  • 票据4144:GetLegendgraphic应在不编译OGR的情况下工作

  • Ticket 4126_uuu:版权(注释)层仅在数据范围内

9。测验

为测试目的创建了3个映射文件示例:

这些映射文件的getCapabilities响应根据 INSPIRE schemas 以及 WMS INSPIRE tester 没有任何严重警告或错误。

10。投票历史

2012/03/08通过,法兰克、史蒂文和丹尼尔姆的+1和史蒂文的+0。