Service de vue INSPIRE

Author:Stephan Meissl
Contact:stephan.meissl at eox.at
Last Updated:

19-03-2012

Introduction

INSPIRE est le nom d’une directive européenne, établissant une infrastructure pour l’information spatiale en Europe pour supporter les politiques environnementales de la Communauté, et les politiques ou activités susceptibles d’avoir une impact sur l’environnement.

Le service de vue INSPIRE est une implémentation du document de conseil technique INSPIRE qui s’ajoute à l’implémentation Serveur WMS expliqué dans le chapitre précédent.

Afin d’obtenir la conformité avec le service de vue INSPIRE, les améliorations suivantes ont été implémentées dans MapServer:

  • Activation de la gestion INSPIRE (deux scénarios)

  • Support multi-langues pour certains champs des “capabilities”

  • Mise à disposition de métadonnées spécifiques INSPIRE

  • Couches de groupes nommées

  • Section de style pour la couche racine et éventuellement les groupes de couches existants

Support for INSPIRE View Service in MapServer uses a syntax identical to the one used for INSPIRE Download Service. Consequently, it is possible to define shared metadata items between Download and View services by using the ows_ prefix instead of wms_.

Activation de la gestion INSPIRE

La métadonnée spécifique INSPIRE peut soit être référencée dans un document de métadonnées de service INSPIRE externe (scénario 1) ou soit être directement encapsulée dans le document des “capabilities” (scénario 2). MapServer supporte les deux scénarios.

L’activation du scénario correspondant pour le support INSPIRE se passe dans la section WEB.METADATA du mapfile via wms_inspire_capabilities. S’il est activé, l’espace de nom INSPIRE correspondant aussi bien que les avertissements de validation appropriés sont générés dans le document des “capabilities”.

Scénario 1 - activation du support INSPIRE en utilisant une référence à une métadonnée de service externe:

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

Scénario 2 - activation du support INSPIRE en utilisant une métadonnée de service encapsulée:

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

Support multi-langues pour certains champs des “capabilities”

INSPIRE requires multi-language support and requests a list of all supported languages as well as the default language in the capabilities document. Based on the language parameter in the GetCapabilities request, certain specific metadata values, namely

  • wms_title
  • wms_abstract
  • wms_rootlayer_title
  • wms_rootlayer_abstract
  • wms_group_title
  • wms_group_abstract
  • wms_style_title
  • wms_style_<name>_title

ainsi que les données de référence en fonction de la langue comme

  • DATA "road_eng"
  • CONNECTION "db_ger"

nécessitent d’être fournit dans la langue demandée. Si la langue n’est pas supportée (ou qu’aucun paramètre de langue n’est présent), la langue par défaut doit être utilisée.

All supported languages have to be specified as comma separated list (first language is default) through wms_languages in the WEB.METADATA section of the mapfile. This language parameter is also added to the OnlineResource in the GetCapabilities output:

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

Pour les valeurs de métadonnées spécifiques à la langue, une méthode d’extension clé est appliquée:

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

Pour les données de référence dépendantes de la langue, une approche similaire à la fonctionnalité de substitution à la volée de MapServer a été suivie (seulement les valeurs DATA et CONNECTION avec %language% sont substituées):

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

Si la langue n’est pas supportée (ou qu’aucun paramètre de langue n’est présent), la langue par défaut est substituée.

Mise à disposition de métadonnées spécifiques INSPIRE

En fonction du scénario, une information de métadonnées supplémentaire est requise pour supporter la spécification. Les champs relatifs à INSPIRE sont fournis ci-dessous.

Scénario 1 - champs liés à INSPIRE utilisant une référence à une métadonnée de service externe:

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

Scénario 2 - champs liés à INSPIRE utilisant une métadonnée de service encapsulée:

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

Remarques :

  • plusieurs champs nécessitent certaines valeurs, ces valeurs ne sont pas validées par MapServer lui-même, à la place une validation manuelle vis à vis des schémas INSPIRE et du testeur INSPIRE WMS est recommandée

  • comme suggéré dans le document en ce qui concerne le scénario 2, <inspire_common:ResourceType> est toujours défini à service et <inspire_common:SpatialDataServiceType> est toujours défini à view, les deux valeurs ne peuvent pas être altérées via le mapfile

  • la conformité est toujours défini à non évaluée, selon les dernières régles d’implémentation de métadonnée INSPIRE (page 7). Un document de spécification, une date de spécification et une URI ou URL de spécification doivent être fournis pour le degré de conformité/non conformité, ce qui n’est actuellement non implémenté

Couches de groupes nommées

INSPIRE exige l’usage de couches de groupes nommés. Ainsi, la fonctionnalité de wms_layer_group est étendue pour supporter les couches de groupes nommés. Si une couche avec le même nom qu’utilisée dans wms_layer_group est trouvée, elle est traitée comme un groupe nommé et si aucune couche avec le nom n’est trouvée comme un groupe sans nom, comme avant.

Fournit cette capacité, une hiérarchie de n’importe quel niveau peut être réalisée. Voir par exemple le groupement utilisé dans le mapfile wms_inspire.map mapfile dans msautotest:

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

Section de style pour la couche racine et éventuellement les groupes de couches existants

Pour les couches régulières, le concept de GROUP et CLASSGROUP peut être utilisé pour définir le nom du style de la couche selon la valeur renseignée. De plus, les titres du style de couche peuvent être remplacés via wms_style_<stylename>_title et les legendURLs du style de couche via wms_style_<stylename>_legendurl_* (width, height, format, and href doivent être fournis):

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

La méthode suivante est implémentée pour supporter des sections de style (personnalisable) dans la couche racine:

  • utilisez wms_style_name dans la section WEB.METADATA pour ajouter une section de style à la couche racine

  • utilisez wms_style_title pour remplacer le titre du style (optionnel)

  • use wms_style_legendurl_* to override width, height, format and href of the legendURL (optional)

et éventuellement des couches de groupes existantes :

  • utilisez wms_group_style_name dans la première section LAYER.METADATA correspondante pour ajouter une section de style à une couche de groupe

  • utilisez wms_group_style_title pour remplacer le titre du style (optionnel)

  • use wms_group_style_legendurl_* to override width, height, format and href of the legendURL (optional)
...
  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
...

Fournit cette capacité, 3 niveaux de hiérarchies peuvent être utilisés comme dans les mapfiles exemples wms_inspire_scenario1.map et wms_inspire_scenario2.map dans msautotest:

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