Tutorial setting up INSPIRE view service with GeoNetwork and Mapserver

This tutorial shows how one can set up a combination of MapServer and GeoNetwork to provide view services following technical guidelines for view services.

MapServer

How to set up an INSPIRE view service in Mapserver is documented in mapserver documentation. In this tutorial we use the reference service metadata approach:

GeoNetwork

When deploying Geonetwork, make sure the GEMET thesauri are loaded and activate the INSPIRE editor as described in Geonetwork documentation.

In Admin > Settings activate the INSPIRE extension.

../../_images/image_3.png

For each dataset that you are going to publish create an iso19115 record using the INSPIRE template. Link each record to the view service as created in mapserver: eg https://{url}/cgi-bin/mapserv?map={mapfile}&request=getcapabilities&service=wms&version=1.3.0

../../_images/image_5.png

Make sure the metadata contains the same gmd:code (and authority) as available in WMS getcapabilities.

Create an OGC harvester that is able to extract a metadata for service (iso19119) record from the WMS. Run the harvester and note down the identifier of the created service metadata.

Return to MapServer Mapfile

For each layer configuration add a metadata url of type text/xml. Other relevant parameters are the authority element and the dataset identifier.

For the service definition add a link to the service metadata

Validate the implementation

If you are running the above setup online, you can use the pilot JRC INSPIRE validator. If the above setup is running locally, you can use Esdin Test Framework to validate the INSPIRE setup.

../../_images/image_6.png

Running the test frequently during development helps to identify issues in an early stage.

Known issues

There is a known issue in the capabilities to metadata linkage. The JRC validator requires a gmd:RS_Identifier inside gmd:code having the authority and dataset identifier modeled separately. However the technical guidelines suggest a gmd:MD_Identifier inside gmd:code, the authority can then be included as a prefix, eg < gmd:MD_Identifier >{authority}#{uuid}< gmd:MD_Identifier >