Implementing of OGC and INSPIRE Standards
                   From Theory to Reality

                   Jáchym Čepický, Štěpán Kafka
                                   &
             Tomáš Mildorf, Michal Šrédl, Přemysl Wohnout




19.05.2012                    HSRS & CCSS                   1
                                 GI2012
System overview
                     Technology behind the CCSS Geoportal

                                                    WMS
                                                    WMS-T
      Web Client                Server proxy        WFS, FES   OWS Servers
                                                    WCS
                       WMS++                        ...
      HSLayers                  Proxy4ows                         MapServer
      (JavaScript)              (Python)                          GeoServer
                                                                  InterGraph
      - OpenLayers              - Mapserver / MapScript           ArcGis
      - Ext                     - Gdal / Ogr
                                - OwsLib




19.05.2012                          HSRS & CCSS                                 2
                                       GI2012
Mission




                               Challanges & Results

                Display huge WFS data in web client → Proxy4ows
                Filter Encoding (FES) → OpenLayers, OwsLib, MapServer patches
                WFS Axis order issue → MapServer, OwsLib patches
                                  → some issues still remain



19.05.2012                              HSRS & CCSS                              3
                                           GI2012
Proxy4ows

                Transforms WFS and WCS to WMS

                For WMS, it transforms the coordinate systems

                [ http://proxy4ows.org ]

                Will be presented in Prague




19.05.2012                         HSRS & CCSS                   4
                                      GI2012
Filter Encoding
         OpenLayers – <Filter_Capabilities> not parsed




                                  Part of a WFS 1.1.0 GetCapabilities response




19.05.2012                 HSRS & CCSS                                           5
                              GI2012
Filter Encoding
         OpenLayers – <Filter_Capabilities> not parsed

                                                   Desired result




      Patch proposed
   - Comparison filters & related stuff
   - WFS 1.0.0 and 1.1.0

19.05.2012                           HSRS & CCSS                    6
                                        GI2012
Filter Encoding
            MapServer – Filter produced as invalid XML
"wfs_filter" '<ogc:PropertyIsEqualTo xmlns:ogc="http://www.opengis.net/ogc">
      <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal>
      </ogc:PropertyIsEqualTo>'                                         Mapfile




                                                                          Mapserver code
      FILTER=<ogc:Filter>
        <ogc:PropertyIsEqualTo+xmlns:ogc="http://www.opengis.net/ogc">
          <ogc:PropertyName>STUPEN</ogc:PropertyName>
          <ogc:Literal>3</ogc:Literal>                Outgoing filter
        </ogc:PropertyIsEqualTo>
      </ogc:Filter>
   19.05.2012                              HSRS & CCSS                                     7
                                              GI2012
Filter Encoding
            MapServer – Filter produced as invalid XML
"wfs_filter" '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
    <ogc:PropertyIsEqualTo>
       <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal>
             </ogc:PropertyIsEqualTo> </ogc:Filter>'             Mapfile




                                                                         One-char patch

      FILTER=<ogc:Filter+xmlns:ogc="http://www.opengis.net/ogc">
        <ogc:PropertyIsEqualTo>
          <ogc:PropertyName>STUPEN</ogc:PropertyName>
          <ogc:Literal>3</ogc:Literal>
        </ogc:PropertyIsEqualTo>                       Outgoing filter
      </ogc:Filter>

   19.05.2012                             HSRS & CCSS                                     8
                                             GI2012
WFS Axis Order
    WFS 1.0.0
         Axis order clearly defined in standard (East, North)
         <wfs:LatLongBoundingBox> causes confusion sometimes


    WFS 1.1.0
         As widely accepted, axis order should follow the definition of the
          particular CRS
         However, not a strict requirement in the standard
         Implementations of standards differ, heaps of confusion
         Axis order depends not only on the CRS, but also on the notation used




19.05.2012                            HSRS & CCSS                                 9
                                         GI2012
WFS Axis Order
                                  WFS 1.1.0

        Axis order depends on the SRS used

        Check http://www.epsg-registry.org/ for definitions

        BBOX url parameter
           Sometimes you need to negotiate with the service providers to
            follow the definition, as otherwise no data may be returned

        Data themselves
            MapServer did not understand, that the axis order depends on
             the SRS used, data was rotated by 90°
            MapServer patch provided


19.05.2012                            HSRS & CCSS                           10
                                         GI2012
WFS Axis Order
                                    WFS 1.1.0

       Axis order depends on the notation of the SRS as well:

                EPSG:EPSG_code
                  → WFS 1.0.0 style – fixed East, North

                urn:EPSG:geographicCRC:epsg_code
                  → Follow-up the definition

                http://www.opengis.net/gml/srs/epsg.xml#EPSG_code
                  → We don't know




19.05.2012                             HSRS & CCSS                   11
                                          GI2012
WFS Axis Order
                  MapServer as WFS 1.1.0 Client
       More details here:
      http://les-ejk.cz/2012/03/mapserver-as-wfs-1-1-0-client-not-suitable/




19.05.2012                          HSRS & CCSS                               12
                                       GI2012
Patches available
             OpenLayers – <Filter_Capabilities> not parsed
                http://trac.osgeo.org/openlayers/ticket/3652
                (Patch proposed)
             MapServer – Filter produced as invalid XML
                http://trac.osgeo.org/mapserver/ticket/4171
                (Expected in 6.2)
             MapServer – WFS Axis order
                http://trac.osgeo.org/mapserver/ticket/4228
                (Expected in 6.2)
             OwsLib patches already deployed




19.05.2012                             HSRS & CCSS             13
                                          GI2012
Thank you!

     Hope to see you in Prague:




19.05.2012               HSRS & CCSS   14
                            GI2012

GI2012 sredl+team-implementing ows-v2

  • 1.
    Implementing of OGCand INSPIRE Standards From Theory to Reality Jáchym Čepický, Štěpán Kafka & Tomáš Mildorf, Michal Šrédl, Přemysl Wohnout 19.05.2012 HSRS & CCSS 1 GI2012
  • 2.
    System overview Technology behind the CCSS Geoportal WMS WMS-T Web Client Server proxy WFS, FES OWS Servers WCS WMS++ ... HSLayers Proxy4ows  MapServer (JavaScript) (Python)  GeoServer  InterGraph - OpenLayers - Mapserver / MapScript  ArcGis - Ext - Gdal / Ogr - OwsLib 19.05.2012 HSRS & CCSS 2 GI2012
  • 3.
    Mission Challanges & Results  Display huge WFS data in web client → Proxy4ows  Filter Encoding (FES) → OpenLayers, OwsLib, MapServer patches  WFS Axis order issue → MapServer, OwsLib patches → some issues still remain 19.05.2012 HSRS & CCSS 3 GI2012
  • 4.
    Proxy4ows  Transforms WFS and WCS to WMS  For WMS, it transforms the coordinate systems  [ http://proxy4ows.org ]  Will be presented in Prague 19.05.2012 HSRS & CCSS 4 GI2012
  • 5.
    Filter Encoding OpenLayers – <Filter_Capabilities> not parsed Part of a WFS 1.1.0 GetCapabilities response 19.05.2012 HSRS & CCSS 5 GI2012
  • 6.
    Filter Encoding OpenLayers – <Filter_Capabilities> not parsed Desired result Patch proposed - Comparison filters & related stuff - WFS 1.0.0 and 1.1.0 19.05.2012 HSRS & CCSS 6 GI2012
  • 7.
    Filter Encoding MapServer – Filter produced as invalid XML "wfs_filter" '<ogc:PropertyIsEqualTo xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal> </ogc:PropertyIsEqualTo>' Mapfile Mapserver code FILTER=<ogc:Filter> <ogc:PropertyIsEqualTo+xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal> Outgoing filter </ogc:PropertyIsEqualTo> </ogc:Filter> 19.05.2012 HSRS & CCSS 7 GI2012
  • 8.
    Filter Encoding MapServer – Filter produced as invalid XML "wfs_filter" '<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyIsEqualTo> <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter>' Mapfile One-char patch FILTER=<ogc:Filter+xmlns:ogc="http://www.opengis.net/ogc"> <ogc:PropertyIsEqualTo> <ogc:PropertyName>STUPEN</ogc:PropertyName> <ogc:Literal>3</ogc:Literal> </ogc:PropertyIsEqualTo> Outgoing filter </ogc:Filter> 19.05.2012 HSRS & CCSS 8 GI2012
  • 9.
    WFS Axis Order  WFS 1.0.0  Axis order clearly defined in standard (East, North)  <wfs:LatLongBoundingBox> causes confusion sometimes  WFS 1.1.0  As widely accepted, axis order should follow the definition of the particular CRS  However, not a strict requirement in the standard  Implementations of standards differ, heaps of confusion  Axis order depends not only on the CRS, but also on the notation used 19.05.2012 HSRS & CCSS 9 GI2012
  • 10.
    WFS Axis Order WFS 1.1.0  Axis order depends on the SRS used  Check http://www.epsg-registry.org/ for definitions  BBOX url parameter  Sometimes you need to negotiate with the service providers to follow the definition, as otherwise no data may be returned  Data themselves  MapServer did not understand, that the axis order depends on the SRS used, data was rotated by 90°  MapServer patch provided 19.05.2012 HSRS & CCSS 10 GI2012
  • 11.
    WFS Axis Order WFS 1.1.0 Axis order depends on the notation of the SRS as well:  EPSG:EPSG_code → WFS 1.0.0 style – fixed East, North  urn:EPSG:geographicCRC:epsg_code → Follow-up the definition  http://www.opengis.net/gml/srs/epsg.xml#EPSG_code → We don't know 19.05.2012 HSRS & CCSS 11 GI2012
  • 12.
    WFS Axis Order MapServer as WFS 1.1.0 Client  More details here: http://les-ejk.cz/2012/03/mapserver-as-wfs-1-1-0-client-not-suitable/ 19.05.2012 HSRS & CCSS 12 GI2012
  • 13.
    Patches available OpenLayers – <Filter_Capabilities> not parsed http://trac.osgeo.org/openlayers/ticket/3652 (Patch proposed) MapServer – Filter produced as invalid XML http://trac.osgeo.org/mapserver/ticket/4171 (Expected in 6.2) MapServer – WFS Axis order http://trac.osgeo.org/mapserver/ticket/4228 (Expected in 6.2) OwsLib patches already deployed 19.05.2012 HSRS & CCSS 13 GI2012
  • 14.
    Thank you! Hope to see you in Prague: 19.05.2012 HSRS & CCSS 14 GI2012