European Commission logo
INSPIRE Community Forum

It seems that there is only one fully compliant solution to serve multiple harmonised datasets trough WFS 2.0

We investigated several solutions to serve multiple harmonised datasets trough WFS 2.0 according to Technical Guidelines for Download Services. We are not discussing about providing access to only one dataset per server, but to provide access to more datasets.

 

Update 8 September 2016: The single compliant solution seems to be Snowflake GoPublisher WFS.

 

Update 9 May 2018: Because Stefania pointed in this tread that that Deegree is able to serve two different datasets for the same XML schema at different endpoints (asking for typeNames=ps:ProtectedSites in both cases) we started some tests.

So, it is still to see if Deegree is able to serve two different datasets based on multiple XML schemas at different endpoints in order to say that Deegree is compliant with Requirement 52, but is a big step forward in fullfiling the Requirement 52. For those data providers that need to serve feature types from one application schema at one endpoint Deegree is fulfiling the Req 52. We did not tested it yet to see if there are not other issues in order to confirm that it is able to serve multiple harmonised datasets based on multiple XML schemas trough WFS 2.0 according to Technical Guidelines for Download Services. Versions 3.4-RC (unstable) are passing the EPSG in URI format test, while 3.3 (stable) are not passing the test as EPSG is provided in URN format. As Deegree versions 3.4-RC are advertised as unstable and as there is no 3.4 stable version, it is not sure if Deegree is passing all the requirments of the Technical Guidelines for Download Services. However it should be noted that Deegree 3.4 version is OCG WFS 2.0 certified. If anyone had tested Deegree against each requirement from the TG, please share this information.

To conclude about Geoserver 2.13.0, for those data providers that need to serve feature types from one XML schema at one and only one endpoint, Geoserver 2.13.0 is fulfiling the Req 52. Geoserver seems not to be able yet to serve feature types from the same XML schema  at different endpoints, even if using the newly created isolated workspaces.

 

Till 8 September 2016 we thought that Go Publisher WFS (version 4.0.2) is not fullfiling the TG Requirement 46 ”Implementations shall conform to ISO 19142 Conformance Class Simple WFS”, more precise the WFS DescribeFeatureType request is not providing the expected result. Daniel Cocanu discovered that this is not related to GoPublisher WFS but it is related to XSD version 3.0 schemas.

 

The second most compliant solution seems to be Geoserver.  Unfortunately it does not fulfill at least one requirement, namely Requirement 52 ”A separate WFS endpoint shall be provided for each INSPIRE dataset thus providing one dataset per GetCapabilities response.” Tested on version 2.8.3. 

On third place seems to be Deegree (very good for testing purposes as it alows to serve datasets from the GML stored in memory) and on forth place ESRI ArcGIS for INSPIRE. We did not tested any other solution and we do not know any other solution (probably FME from SAFE can be a solution as well). 

Does anyone knows how to provide separate WFS endpoints for each INSPIRE dataset with Geoserver? 

Does anyone know other solutions to be tested (i.e.: FME from Safe) ?

Deoes anyone know other INSPIRE TG Requirements or Recommandations that cant be fullfiled by existing solutions ?

Isnt'it quite strange that Technical Guidelines are setting requirements that cant be fullfiled by any existing solution ?

Best regards,

Iurie Maxim

  • Stefania MORRONE

    By Stefania MORRONE

    Hi Iurie,

    I guess my post intention has been misunderstood. I was just reporting that the issue of

    1) serving two different datasets for the same application schema at different endpoints +

    2) asking for typeNames=ps:ProtectedSites in both cases

    is not present in deegree.

    I thought the context of my statement was clear thanks to the example I made soon after " this issue is not present in deegree: if I want to serve e.g. Natura 2000 SPA and Natura2000 SCI datasets with same deegree instance, I am able to just configure two different endpoints (using the same instance and workspace) and typeNames=ps:ProtectedSite in both cases."

    My intention was to not to declare I fully tested deegree and that it is fully compliant to INSPIRE.

    Anyway, I can see that incipit of my post could not be so clear. Sorry for that.

    Stefania

     

  • Katharina SCHLEIDT

    By Katharina SCHLEIDT

    Hiya,

    just compared with the DescribeFeatureType on my test services, there seems to be more missing than the filename in the Deegree implementation!

    First I tried it with my ldproxy instance (where I first ran into DescribeFeatureType problems, GeoServer was providing an incorrect schema location for the wfs schema, now fixed in 2.13), but that couldn't properly load the DescribeFeatureType (I tried it as I know it is VERY exact and picky about what it will digest).

    Then I compared the DescribeFeatureType from Stefania's service with that coming off of GeoServer (and functioning in ldproxy), I noticed that no namespace prefix info is provided, thus must cause problems. For comparision the DescribeFeatureType from my CDDA demo, while I know that GeoServer is providing too many ns prefixes, it works far better than none:

    service.datacove.eu:8080/geoserver/ows?service=wfs&version=2.0.0&request=DescribeFeatureType&typename=cdda:DesignatedArea

    Guess its only fair that each system has some errors!

    ;)

    Kathi

  • Stefania MORRONE

    By Stefania MORRONE

    Hi Kathi,

    I absolutely agree with you.

    I think that it is important to keep up with the different software solutions and try to point out what is already there and what is still missing (or we are not able to find) in the long and winding road to INSPIRE compliance. Thanks to everyone who shares its own experience.

    @Iurie: May I kindly ask you to edit your statement "Update 9 May 2018: Stefania pointed in this tread that that Deegree is able to fulfil the Requirement 52 " ? I just made it clear that my intention was not to say that. Thank you.

     

     

  • Stefania MORRONE

    By Stefania MORRONE

    Hi Kathi,

    regarding the DescribefeatureType, would you please test now?

    Writing the following request, I am able to get back the description:

    http://cloud.epsilon-italia.it:8085/deegree-webservices-3.3.18/services/ps_Natura2000SCI?SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeFeatureType

    Stefania
     

  • Stefania MORRONE

    By Stefania MORRONE

    If I ask only for description of the ProtectedSite feature 

    http://cloud.epsilon-italia.it:8085/deegree-webservices-3.3.18/services/ps_Natura2000SCI?service=wfs&version=2.0.0&request=DescribeFeatureType&typename=ps:ProtectedSite

    I get the description of INSPIRE Protected Sites schema. It seems to me a correct behaviour for the DescribeFeatureType request.

    To obtain this response, I had to change the "DisableDynamicSchema" parameter in the WFS configuration file to 'false' (it was set to 'true' - as I wrote, this is a test service-) so telling the WFS to refer to the original schema file used for configuring the feature store instead of trying to generate the schema dynamically from the internal feature type representation.

    Stefania

     

     

  • Iurie MAXIM

    Hi Stefania,

    I changed the statement as asked by you. However I did not mentioned in any case that you said that Deegree is compliant to INSPIRE, but I mentioned that we did not tested it against the TG for Download. Sorry for misunderstanding.

    As I can understand, based on your example it means that Deegree is fulfiling the Requirement 52 for those data providers that have to serve datasets composed of featureTypes that are declared in only one application schema. As my colleague Sorin Rusu had a look in the latest unstable release of Deegree, it seems that is able to serve multiple datasets composed on multiple feature types based on multiple application schemas. It will take some time to make such a demo, but here is the first step with one dataset composed by multiple feature types that are based on multiple application schemas :

    http://gmlid.eu/RO/ESS/PADS/WFS?service=WFS&request=GetCapabilities

    http://gmlid.eu/RO/ESS/PADS/WMS?service=WMS&request=GetCapabilities

    Next step is to create the second endpoint in the same Deegree instance in order to serve a second dataset based on multiple feature types that are based on multiple application schemas to see if it is passing the Req 52.

    Best regards,

    Iurie

  • Iurie MAXIM

    To conclude about Geoserver 2.13.0, for those data providers that need to serve feature types from one XML schema at one and only one endpoint, Geoserver 2.13.0 is fulfiling the Req 52. Geoserver seems not to be able yet to serve feature types from the same XML schema  at different endpoints, even if using the newly created isolated workspaces.

    Same services created with Geoserver:

    http://gmlid.eu/RO/ENV/PADS/WFS?service=WFS&request=GetCapabilities

    http://gmlid.eu/RO/ENV/PADS/WMS?service=WMS&request=GetCapabilities

    Should be noted that two Geoserver instances were created, one for WFS and another one for WMS based on simple features.

    Hope this helps data providers,

    Iurie

  • Sorin RUSU

    Hi all, and I am addressing especially Stefania. 

    I have deployed a deegree instance in our webserver and I have configured it to server two different INSPIRE themes (ProtectedSites and SpeciesDistribution) from a Postgis database, using a mapping configuration for the feature stores, each feature being served from its own WFS endpoint.

    I am using deegree v3.4-RC7 (latest as of two days ago) to be able to use the HTTP URI definition for the CRS:http://www.opengis.net/def/crs/EPSG/0/3035. I have configured two JDBC connections to two Postgis databases, one for the PS the other for the SD.

    The PS SQL Feature store is configured using a featureType mapping configuration:

    <SQLFeatureStore xmlns="http://www.deegree.org/datasource/feature/sql" xmlns:ps="http://inspire.ec.europa.eu/schemas/ps/4.0" xmlns:gn="http://inspire.ec.europa.eu/schemas/gn/4.0" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:base="http://inspire.ec.europa.eu/schemas/base/3.3" xmlns:xlink="http://www.w3.org/1999/xlink" configVersion="3.1.0" xsi:schemaLocation="http://www.deegree.org/datasource/feature/sql http://schemas.deegree.org/datasource/feature/sql/3.1.0/sql.xsd">
      <JDBCConnId>pg_pads_import</JDBCConnId>
      <StorageCRS srid="0" dim="2D">http://www.opengis.net/def/crs/EPSG/0/3035</StorageCRS>
      <GMLSchema>../../appschemas/inspire/ProtectedSites.xsd</GMLSchema>
      <FeatureTypeMapping name="gn:NamedPlace" table="gn_namedplace">
    ​  [...more content...]
    ​  </FeatureTypeMapping>
    ​</SQLFeatureStore>
    

    The service endpoint WFS-CDDA is then configured to publish the above feature store:

    <deegreeWFS xmlns="http://www.deegree.org/services/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" configVersion="3.2.0" xsi:schemaLocation="http://www.deegree.org/services/wfs http://schemas.deegree.org/services/wfs/3.2.0/wfs_configuration.xsd">
      <SupportedVersions>
        <Version>1.1.0</Version>
        <Version>2.0.0</Version>   
      </SupportedVersions>
      <FeatureStoreId>ps_CDDA</FeatureStoreId>
      <EnableTransactions>true</EnableTransactions>
      <DisableResponseBuffering>true</DisableResponseBuffering>
      <QueryCRS>http://www.opengis.net/def/crs/EPSG/0/3035</QueryCRS>
      <QueryCRS>EPSG:3035</QueryCRS>
      <QueryCRS>EPSG:4326</QueryCRS>
      <QueryCRS>EPSG:4258</QueryCRS>
      <QueryCRS>EPSG:900913</QueryCRS>
      <GMLFormat gmlVersion="GML_32">
      <MimeType>text/xml; subtype=gml/3.2.1</MimeType>
      <MimeType>application/gml+xml; version=3.2</MimeType>
      <GenerateBoundedByForFeatures>false</GenerateBoundedByForFeatures>
      <GetFeatureResponse xmlns:gml="http://www.opengis.net/gml/3.2">
      <ContainerElement>gml:FeatureCollection</ContainerElement>
      <FeatureMemberElement>gml:featureMember</FeatureMemberElement>
      <AdditionalSchemaLocation>http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/deprecatedTypes.xsd</AdditionalSchemaLocation>
      <DisableStreaming>false</DisableStreaming>
      </GetFeatureResponse>
      </GMLFormat>
    </deegreeWFS>

    You can GET a PS from this endpoint:
    http://gmlid.eu/deegree_PADS/services/WFS-CDDA?service=WFS&request=GetFeature&typename=ps:ProtectedSite&count=1&version=2.0.0

    I am having trouble validating the output with the envplus validation service, with either INSPIRE Common/INSPIRE Protected Sites Schematrons. I get the following errors, basically saying that the DescribeFeatureType doesn't include the base, xlink, base2 and several other namespaces.
    ​I used this teamengine instance: 
    http://vs.inspire-helpdesk.eu:8081/teamengine​
     

    Please feel free to test with either two datasets
    http://gmlid.eu/deegree_PADS/services/WFS-CDDA?service=WFS&request=GetFeature&typename=ps:ProtectedSite&count=1&version=2.0.0
    http://gmlid.eu/deegree_PADS/services/WFS-DS1?service=WFS&request=GetFeature&typename=sd:SpeciesDistributionUnit&count=1&version=2.0.0

    I see that your own describefeaturetype request is different than mine (pointing to a simplified version of an xsd with import geographicalNames and import base schemas, and one include element for the ProtectedSites schema:

    https://msdi.data.gov.mt/deegree/services/ps_Natura2000SPA?SERVICE=WFS&amp;VERSION=2.0.0&amp;REQUEST=DescribeFeatureType&amp;OUTPUTFORMAT=application%2Fgml%2Bxml%3B+version%3D3.2&amp;TYPENAME=ps:ProtectedSite&amp;NAMESPACES=xmlns(ps,http%3A%2F%2Finspire.ec.europa.eu%2Fschemas%2Fps%2F4.0)&nbsp;

    with a resulting schema document:

    <?xml version='1.0' encoding='UTF-8'?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://inspire.ec.europa.eu/schemas/ps/4.0">
      <import namespace="http://inspire.ec.europa.eu/schemas/base/3.3" schemaLocation="https://msdi.data.gov.mt/deegree/resources/appschemas/inspire/base/3.3/BaseTypes.xsd"/>
      <import namespace="http://inspire.ec.europa.eu/schemas/gn/4.0" schemaLocation="https://msdi.data.gov.mt/deegree/resources/appschemas/inspire/gn/4.0/GeographicalNames.xsd"/>
      <include schemaLocation="https://msdi.data.gov.mt/deegree/resources/appschemas/inspire/ps/4.0/ProtectedSites.xsd"/>
    </schema>

    Am I configuring something badly, or is there something else that I am not catching?

  • Stefania MORRONE

    By Stefania MORRONE

    Hi Sorin,

    in the WFS service configuration file, I can't see the    <DisableDynamicSchema>false</DisableDynamicSchema> setting, which basically tells the WFS to refer to the original schema file in the describefeaturetype request.

    This Parameter shall be put above the <DisableStreaming> one.

    Would you try and feedback?

    Thanks

    Stefania

     

  • Sorin RUSU

    I just added the mentioned property to both WFS configuration files and there seems to be no effect on the XSD returned by the deegree server. I have also updated the <AdditionalSchemaLocation> to include the BaseTypes to little effect.

    I am starting to think that it might be an issue with deegree 3.4 RC, and I will do some more testing with deegree 3.3, even though I will have to change the CRS definition from the HTTP URI to the OGC URN.

This discussion is closed.

This discussion is closed and is not accepting new comments.

Biodiversity & Area Management

Biodiversity & Area Management

If themes like Protected Sites, Area Management/Restriction/Regulation Zones and Reporting Units, Habitats and Biotopes, Species Distribution, Bio-geographical Regions matters to you, join these groups!