AIXM 5.1 GO Publisher WFS 2.0 FES2.0

Snowflake Software's GO Publisher has been extended to support the latest version of the OGC Web Feature Service (WFS) 2.0 and Filter Encoding Specification (FES) 2.0 which are the sibling standards to GML3.2.1 and introduce new ways to interact with spatial and temporal data. This is key functionality for fully implementing a number of important GML exchange schemas.

Notable schemas which use GML3.2.1, WFS 2.0 & FES 2.0

  • AIXM5.1 - Aeronautical Information Exchange Model
  • WXXM1.1 - Weather Exchange Model
  • INSPIRE - Infrastructure for Spatial Information in Europe to support environmental policies
  • CAFE - Clean Air For Europe initiative

 

OWS7 AIXM 5.1 WFS 2.0 Demo

The web services below show GO Publisher's ability to serve AIXM5.1 GML using WFS2.0.

The test AIXM 5.1 data was derived from a range of sources supplied during the OWS-7 Interoperability Testbed and covers North America and Northern Europe. The Source data was suppiled in a mix of AMDB GML 3.1.1, DAIM GML 2.1, AIXM5.0 and AIXM5.1formats and was loaded into an Oracle 10g database using GOLoader1.6 and translated and exported using GOPublisher1.5 as AIXM5.1 GML3.2.1. The resulting AIXM5.1 data was then loaded into an Oracle 11g database using GOLoader1.6 as the source for the OWS7 GOPublisher 1.5 WFS2.0 service.

DISCLAIMER

This is TEST DATA which is for testing purposes only, it is NOT maintained and it is NOT accurate and shall NOT be used for any operational purpose.

 


Links to OWS7 AIXM 5.1 WFS 2.0 Demo landing page

AIXM 5.1 WFS Landing page

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2

WFS Landing page where POST Queries can be sent
http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/httpPost.jsp

 

GetFeature WFS2.0 (maxfeatures 10 sample)

GetCapabilities WFS 2.0

The GetCapabilities request is the most important query as it provides information related to the options provided by the target WFS. The GetCapabilities WFS 2.0 request has replaced the parameter 'version' with 'acceptversions'.

GetCapabilities WFS 2.0.0 (acceptversions)

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=wfs&acceptversions=2.0.0&request=GetCapabilities

WFS2.0 GetCapabilities (acceptversions 1.1.0)

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=wfs&acceptversions=1.1.0&request=GetCapabilities

GetCapabilities WFS 1.1.0 (version)
http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=wfs&version=1.1.0&request=GetCapabilities

DescribeFeature

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=wfs&version=2.0.0&request=DescribeFeatureType&typename=*

 

WFS2.0 FES Namespace

The WFS2.0 Filter Encoding Standard 2.0 (FES) uses a different namespace from the WFS1.1 Filter Encoding. The queries to the WFS2.0 should only use the new FES2.0 namespace.

WFS1.1 : xmlns:ogc="http://www.opengis.net/ogc"
WFS2.0 : xmlns:fes="http://www.opengis.net/fes/2.0"

Changes between WFS1.1 and WFS2.0

There are a number of changes in the parameters used in the WFS2.0 Filter Encoding Standard.

One notable changes is to ogc:PropertyName which has been replaced by fes:ValueReference

 <fes:PropertyIsEqualTo>
<fes:ValueReference> timeSlice/AirportHeliportTimeSlice/designator</fes:ValueReference>
<fes:Literal>KDFW</fes:Literal>
</fes:PropertyIsEqualTo>

Another change is to the names of some of the comparison operators

ogc:PropertyIsGreaterThanEqualTo
........becomes.............
fes:PropertyIsGreaterThanOrEqualTo

ogc:PropertyIsLessThanEqualTo
........becomes............
fes:PropertyIsLessThanOrEqualTo


ogc:PropertyIsNullCheck
........becomes............
fes:PropertyIsNil
fes:PropertyIsNull

Common WFS GET requests

Query By FeatureId

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:AirportHeliport&featureid=urn-x:ows7:snowflake:6692a2c0-6b4a-4d43-bf83-ce459397b8eb.EDDF

Query By TypeName

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:Navaid

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:Navaid,aixm:AirportHeliport

Query By ResourceId

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:AirportHeliport&RESOURCEID=urn-x:ows7:snowflake:6692a2c0-6b4a-4d43-bf83-ce459397b8eb.EDDF

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:AirportHeliport&RESOURCEID=urn-x:ows7:snowflake:6692a2c0-6b4a-4d43-bf83-ce459397b8eb.ESMS,urn-x:ows7:snowflake:6692a2c0-6b4a-4d43-bf83-ce459397b8eb.EDDF

Bounding Box query

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:Navaid&bbox=-97 32.5 -96 33

ResultType HITS - returns just the the number of features returned by the query.

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&TYPENAME=aixm:Navaid&bbox=-97%2032.5%20-96%2033&resultType=hits

Response

<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" numberOfFeatures="3" timeStamp="2010-08-11T10:38:24.813"/>

Temporal WFS2.0 Query

WFS2.0 introduces the following Filter Encoding Standard (FES) 2.0 Temporal Operators.

After, Before, Begins, BegunBy,TContains, During,TEquals, TOverlaps, Meets, OverlappedBy, MetBy, Ends, EndedBy

An "any interaction" temporal query has been a common query and this can be achieved using 'fes:And' or 'fes:Or' logical operators to combine multiple FES2.0 Temporal Operators. Using the 'fes:Not' logical operators the "any interaction" temporal query can be obtained using only four FES2.0 Temporal Operators (NOT Before OR After OR Meets OR MetBy)

WFS HTTP Post Request

This sample AIXM5.1 POST query combines Spatial and Temporal filters.

 

Stored Queries

Stored Queries allow complex temporal and spatial queries to be simplified.


ListStoredQueries returns a list of available stored queries:

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=ListStoredQueries

DescribeStoredQueries provides information related to a stored query:

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=DescribeStoredQueries&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS:GetFeatureById

GetFeatureByID is a mandatory stored query which returns a feature using the parameter ID which is the gml:id of the feature:

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS:GetFeatureById&ID=urn-x:ows7:snowflake:nasr_arp.18804

GetFeatureById stored Query

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS:GetFeatureById&ID=urn-x:ows7:snowflake:nasr_arp.18362

Custom Stored Queries - AirportHeliportByDesignatorQuery

Describe custom stored query for AirportHeliportByDesignatorQuery

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=DescribeStoredQueries&STOREDQUERY_ID=urn:snowflake:def:query:OGC-WFS:AirportHeliportByDesignatorQuery

Use the AirportHeliportByDesignatorQuery stored Query

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0&request=GetFeature&STOREDQUERY_ID=urn:snowflake:def:query:OGC-WFS:AirportHeliportByDesignatorQuery&designator=KBOS

 

Custom Stored query simplifying Spatial and Temporal filters

Spatial and Temporal Post queries can be simplified using a Custom Stored query. The AirportHeliportTemporalBufferQuery.

"AirportHeliportTemporalBufferQuery" Stored Query

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?service=WFS&version=2.0.0 &request=GetFeature&STOREDQUERY_ID=urn:snowflake:def:query:AirportHeliportTemporalBufferQuery &beginPosition=2009-10-28T13:00:00.000Z%20&endPosition=%202009-10-30T09:00:00.000Z&distance=50&lineString=-33%2052%20-32.5%2052.5

Stored Query Id

  • urn:snowflake:def:query:AirportHeliportTemporalBufferQuery

Temporal TimePosition

  • "beginPosition" =2009-10-28T13:12:00.000Z
  • "endPosition" =2009-10-30T09:00:00.000Z

Spatial Buffer

  • buffer "distance" = 20
  • geometry "lineString" = -33 52 -32.5 52.5

 

WSDL Web Service Definition Language

Link to the WSDL describing of the Snowflake AIXM 5.1 WFS

http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/GOPublisherWFS?wsdl

 

SOAP request via HTTP for WFS 2.0

Snowflake WFS 2.0 HTTP Post requests in a SOAP envelope with the response returned within a SOAP envelope.

WFS Landing page where POST Queries can be sent
http://demo.snowflakesoftware.com:8080/AIXM51_WFS2/httpPost.jsp

 

SOAP WFS2.0 GetFeature HTTP Post query

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<wfs:GetFeature
service="WFS"
version="2.0.0"
outputFormat="application/gml+xml; version=3.2"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:aixm="http://www.aixm.aero/schema/5.1"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:fes="http://www.opengis.net/fes/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://www.pvretano.com/schemas/wfs/2.0.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://schemas.opengis.net/gml/3.2.1/gml.xsd">
<wfs:Query typeName="aixm:AirportHeliport" handle="Q01">
<fes:Filter>
<fes:PropertyIsEqualTo>
<fes:ValueReference> timeSlice/AirportHeliportTimeSlice/designator</fes:ValueReference>
<fes:Literal>KBOS</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>
</soap:Body>
</soap:Envelope>

 

SOAP WFS2.0 GetCapabilities? HTTP Post query

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://www.pvretano.com/schemas/wfs/2.0.0/wfs.xsd
http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<GetCapabilities
xmlns="http://www.opengis.net/wfs/2.0"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
service="WFS">
<ows:AcceptVersions>
<ows:Version>2.0.0</ows:Version>
</ows:AcceptVersions>
</GetCapabilities>
</soap:Body>
</soap:Envelope>

 

GetPropertyValue

The GetPropertyValue query returns just the property value speicified for the fetatures returned by the filter query.

Post Query to return just the lat long coordinate text of the geometry.. "//aixm:ElevatedPoint/gml:pos/text()"

Response


<wfs:ValueCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" numberReturned="1">
<wfs:member>-84.4280661111111 33.63672</wfs:member>
</wfs:ValueCollection>

 

Post Query to return just the valid time properties of a feature. "//gml:validTime"


Response


<wfs:ValueCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" numberReturned="1">
<wfs:member>
<gml:validTime xmlns:gml="http://www.opengis.net/gml/3.2">
<gml:TimePeriod gml:id="urn-x:ows7:snowflake:tp:nasr_arp.10599">
<gml:beginPosition> 2000-01-01T00:00:00.000Z</gml:beginPosition>
<gml:endPosition> 9999-12-31T23:59:59.000Z </gml:endPosition>
</gml:TimePeriod>
</gml:validTime>
</wfs:member>
</wfs:ValueCollection>