Publication Date: 2019-11-14
Approval Date: 2019-09-12
Submission Date: 2019-08-21
Reference number of this document: OGC 19-062
Reference URL for this document: http://www.opengis.net/doc/PER/OGCAPI-hackathon-2019
Category: OGC Public Engineering Report
Editor: Gobe Hobona
Title: OGC API Hackathon 2019 Engineering Report
COPYRIGHT
Copyright © 2019 Open Geospatial Consortium. To obtain additional rights of use, visit http://www.opengeospatial.org/
WARNING
This document is not an OGC Standard. This document is an OGC Public Engineering Report created as a deliverable in an OGC Interoperability Initiative and is not an official position of the OGC membership. It is distributed for review and comment. It is subject to change without notice and may not be referred to as an OGC Standard. Further, any OGC Public Engineering Report should not be referenced as required or mandatory technology in procurements. However, the discussions in this document could very well lead to the definition of an OGC Standard.
LICENSE AGREEMENT
Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.
If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.
THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD. THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.
This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.
Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications.
This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.
None of the Intellectual Property or underlying information or technology may be downloaded or otherwise exported or reexported in violation of U.S. export laws and regulations. In addition, you are responsible for complying with any local laws in your jurisdiction which may impact your right to import, export or use the Intellectual Property, and you represent that you have complied with any regulations or registration procedures required by applicable law to make this license enforceable.
- 1. Subject
- 2. Executive Summary
- 3. References
- 4. Terms and definitions
- 5. Overview
- 6. Introduction
- 7. OGC API Specifications
- 8. Architecture
- 8.1. Service Implementations
- 8.2. Client Implementations
- 8.2.1. OpenSphere OGC API Plugin
- 8.2.2. Hexagon LuciadLightspeed
- 8.2.3. Solenix WPS Demo Client
- 8.2.4. Esri OGC API-Tiles Demo Client
- 8.2.5. Sinergise OGC Coverages Demo Client
- 8.2.6. Helyx SIS Demonstration Clients
- 8.2.7. ZOO-Project Demonstration Clients
- 8.2.8. GNOSIS Software Development Kit
- 8.2.9. CREAF MiraMon Map Client
- 8.3. Validation Implementations
- 9. Results
- 10. Findings
- Appendix A: Implementations of OGC APIs
- A.1. 52°North GmbH
- A.2. CREAF
- A.3. CubeWerx Inc.
- A.4. Cologne Government Regional Office - Geobasis NRW
- A.5. Ecere Corporation
- A.6. EOX IT Services GmbH
- A.7. Esri UK
- A.8. Eurac Research
- A.9. Geobeyond
- A.10. GeoCat B.V.
- A.11. GeoLabs
- A.12. GeoSeer
- A.13. GeoSolutions
- A.14. Helyx SIS
- A.15. Hexagon
- A.16. interactive instruments GmbH
- A.17. Jacobs University
- A.18. lat/lon GmbH
- A.19. Meteorological Service of Canada
- A.20. Met Office
- A.21. U.S. National Geospatial-Intelligence Agency, GEOINT Services, Mobile Apps
- A.22. Open Source Geospatial Foundation (OSGeo)
- A.23. SigmaBravo
- A.24. Sinergise
- A.25. Solenix
- A.26. Spacebel
- A.27. University of Münster
- A.28. West University of Timisoara
- A.29. The ZOO-Project
- Appendix B: Invitation to Participate
- Appendix C: Revision History
- Appendix D: Bibliography
1. Subject
The subject of this Engineering Report (ER) is a hackathon event that was held from 20 to 21 June 2019 to advance the development of OGC Application Programming Interface (API) specifications. An API is a standard set of documented and supported functions and procedures that expose the capabilities or data of an operating system, application or service to other applications (adapted from ISO/IEC TR 13066-2:2016). The OGC API Hackathon 2019, as the event was called, was hosted by Geovation at its hub in London, United Kingdom. The event was sponsored by the European Space Agency (ESA) and Ordnance Survey.
2. Executive Summary
Several technologies and practices have emerged over the past decade that have presented new opportunities for geospatial software developers. Amongst those technologies are Web Application Programming Interfaces (APIs). In order to leverage the capabilities offered by these technologies, the OGC has initiated a body of work to develop draft standards for OGC APIs. At the February 2019 OGC Technical Committee (TC) meeting in Singapore, the TC took a decision to hold a hackathon to help advance many of the draft OGC API standards.
The hackathon was held from 20 to 21 June 2019, hosted by the Geovation Hub in London, United Kingdom. The European Space Agency (ESA), Ordnance Survey, and Geovation sponsored the event. The hackathon was also supported by the US National Geospatial Intelligence Agency (NGA). The goal of the hackathon was to advance the development of OGC API specifications, with the aim of the hackathon being to provide an environment and an opportunity for the geospatial community to achieve this goal. The following objectives were set for the hackathon:
-
Develop, deploy and test services/clients that support OGC APIs;
-
Suggest improvements for a common core;
-
Define rules/guidance that can be documented;
-
Validate work that has been completed to date; and
-
Contribute to the GitHub repositories of the draft standards.
More than 70 individuals participated in the event. The participants represented 60 organizations; 41 of those organizations are OGC members; one of the organizations is an OGC Alliance Partner and the remaining 18 organizations are non-members. Working collaboratively, the participants formed teams around the draft standards.
During the two-day hackathon, the participants developed, deployed and tested a variety of implementations of OGC APIs. The hackathon focused on implementation of the following draft OGC API specifications.
-
OGC API - Common: A specification of practices and shared requirements that are common across all OGC APIs.
-
OGC API - Processes: A specification for APIs that wrap executable processes that can be invoked by a client application.
-
OGC API - Map Tiles: A specification for APIs that provide access to Map Tiles in a manner independent of the underlying data store.
-
OGC API - Coverages: A specification for APIs that allow access to coverages that are modeled according to the Coverage Implementation Schema (CIS).
-
OGC API - Features: A specification for APIs that disseminate feature data for sharing.
The following additional draft specifications were also considered by the hackathon participants.
-
OGC API - Catalogues: A specification for APIs that allow access to catalogues and can disseminate metadata.
-
Weather on the Web API: A specification for APIs that disseminate any meteorological information that covers past, present, and future states of the atmosphere including observations and climatological data.
The implementations were from different organizations, including private, public and academic organizations. Suggestions for improvements were made, and in some cases, editors of the standards were able to update the draft standards during the hackathon. Improvements to the common core were discussed, and where possible, agreed on. The work that had previously been done was validated through development and testing. Where the previous work was invalid, suggestions for improvements were identified. Requirements and recommendations were discussed and documented as rules and guidance in the Github repositories of the draft standards. This Engineering Report therefore concludes that the hackathon achieved its goal.
One of the key findings of the hackathon was that the draft OGC API standards are implementable. This was evidenced by the implementations developed by many of the participating organizations at the hackathon. Another key finding is that the 'building-block' principle, adopted by the different draft standards, allows for a common core to be specified. This was evidenced in the use of common capabilities such as /collection
paths and support for bounding box (BBOX) queries. Another key finding is that when interfaces built on a combination of Hypertext Transfer Protocol (HTTP), Hypertext Markup Language (HTML) and JavaScript Object Notation (JSON) are standardized across different geospatial applications, the interfaces can be viable enablers of interoperability between the applications. This was evidenced by the successful Technology Integration Experiments (TIEs) achieved during the hackathon.
Based on the results and findings of the hackathon, this engineering report makes the following recommendations.
-
The Web Map Service (WMS) Standards Working Group (SWG) should consider separating the Map Tiles API into separate building blocks (specifications), one for maps and the other for tiles.
-
The OGC Web Services (OWS) Common SWG should continue to work on achieving a common understanding for OGC API - Common and should continue to seek to get buy-in from all groups representing the various resources like features, maps, tiles, processes, coverages, etc.
-
The Web Coverage Service (WCS) SWG should continue to work on specifying the concept of collections of coverages.
-
The OGC Architecture Board (OAB) should consider potential revisions to the OGC Reference Model to reflect the role of the OGC APIs.
-
Future OGC API hackathons should include a convergence phase where ideas from the various groups are compared and commonalities can be extracted for the Common API.
-
The WCS SWG should establish a clear correspondence between WCS Core and all WCS extensions; this should then be related to the emerging OGC API - Coverages Specification.
-
The Web Processing Service (WPS) SWG should consider how a server might facilitate the handling of a large number of processes (for example through pagination or a higher-level grouping of thematically similar processes).
-
The WPS SWG should consider further alignment between the OGC API – Processes specification and WPS 2.0 schemas.
-
The Catalogue Services SWG should reconcile the time and bbox related search parameters from the OGC OpenSearch Geo and Time Extensions (OGC 10-032) and the OGC API - Features specification (OGC 17-069r2).
-
Future OGC hackathons should be three days long, if possible, and allow a larger amount of time to be spent in shared sessions where portions of the OGC API - Common specification can be discussed and their suitability to the various services verified.
It is envisaged that the output of the hackathon will be instrumental to the evolution of OGC web service standards to a modern API-based approach, setting the course for open geospatial standards for the next decade. The output should lead to a solid, common core and advancement of a whole new generation of OGC standards that are flexible in modern IT environments. This does not mean that existing OGC web service standards will fade away. Instead, it means that a new suite of OGC standards will give developers and users the option of leveraging capabilities offered by Web APIs.
2.1. Document contributor contact points
All questions regarding this document should be directed to the editor or the contributors:
Contacts
Name | Organization | Role |
---|---|---|
Gobe Hobona |
Open Geospatial Consortium |
Editor |
Scott Simmons |
Open Geospatial Consortium |
Contributor |
George Percivall |
Open Geospatial Consortium |
Contributor |
Michael Gordon |
Ordnance Survey |
Contributor |
Simon Green |
Ordnance Survey |
Contributor |
Clemens Portele |
interactive instruments GmbH |
Contributor |
Jorge Samuel Mendes de Jesus |
ISRIC - World Soil Information |
Contributor |
Peter Baumann |
rasdaman GmbH |
Contributor |
Francesco Bartoli |
Geobeyond |
Contributor |
Dirk Stenger |
lat/lon GmbH |
Contributor |
Chuck Heazel |
Heazeltech LLC |
Contributor |
Matthias Mohr |
University of Münster |
Contributor |
Robin Houtmeyers |
Hexagon Geospatial |
Contributor |
Jonathan Moules |
GeoSeer |
Contributor |
Gérald Fenoy |
GeoLabs |
Contributor |
Brad Hards |
Sigma Bravo |
Contributor |
Chris Little |
Met Office |
Contributor |
Yves Coene |
Spacebel |
Contributor |
Adam Branscomb |
Esri UK |
Contributor |
Adam Martin |
Esri |
Contributor |
Joan Masó |
CREAF |
Contributor |
Stephan Meißl |
EOX |
Contributor |
Tom Kralidis |
Open Source Geospatial Foundation (OSGeo) |
Contributor |
Alexander Jacob |
Eurac Research |
Contributor |
Brian Osborn |
CACI |
Contributor |
Robert St. John |
CACI |
Contributor |
Jerome St-Louis |
Ecere |
Contributor |
Andrea Aime |
GeoSolutions |
Contributor |
Sam Meek |
Helyx SIS |
Contributor |
Panagiotis (Peter) A. Vretanos |
CubeWerx Inc. |
Contributor |
Alexander Lais |
Solenix |
Contributor |
Benjamin Proß |
52°North GmbH |
Contributor |
Antonio Cerciello |
GeoCat |
Contributor |
Jody Garnett |
GeoCat |
Contributor |
Paul van Genuchten |
GeoCat |
Contributor |
Marian Neagul |
West University of Timisoara |
Contributor |
Anze Skerlavaj |
Sinergise |
Contributor |
Danilo Bretschneider |
Cologne Government Regional Office - Geobasis NRW |
Contributor |
Note
|
Role = Editor and/or Contributor |
2.2. Team Leads
The following table lists the Hackathon Team Leads and their affiliated working groups.
Team Leads
Name | Working Group | Team |
---|---|---|
Clemens Portele |
WFS/FES SWG |
OGC API - Features |
Chuck Heazel |
OWS Common SWG |
OGC API - Common |
Joan Masó |
WMS SWG & OWS Common SWG |
OGC API - Map Tiles & OGC API - Common |
Stephan Meißl |
WCS SWG |
OGC API - Coverages |
Benjamin Proß |
WPS SWG |
OGC API - Processes |
2.3. Foreword
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
3. References
The following normative documents are referenced in this document.
-
OGC: OGC 17-069r2, OGC API - Features - Part 1: Core, Version 1.0.0-draft.2 (release candidate)
-
OGC: OGC 09-146r6, OGC® Coverage Implementation Schema, version 1.1, 2017
-
OGC: OGC Web Coverage Service (WCS) 2.1 Interface Standard - Core, 2018
-
OGC: OGC 14-065r2, OGC® WPS 2.0.2 Interface Standard Corrigendum 2, 2018
-
OGC: OGC OGC 07-057r7, OpenGIS® Web Map Tile Service Implementation Standard, 2010
-
OGC: OGC 09-025r2, OGC® Web Feature Service 2.0 Interface Standard – With Corrigendum, 2014
-
OGC: OGC 12-006, OGC® Sensor Observation Service Interface Standard, 2012
-
OGC: OGC 10-032r8, OGC® OpenSearch Geo and Time Extensions, 2014
-
OGC: OGC 12-168r6, OGC® Catalogue Services 3.0 - General Model, 2016
-
ISO: ISO 19101-1:2014 Geographic Information — Reference Model — Part 1: Fundamentals, 2014
4. Terms and definitions
For the purposes of this report, the definitions specified in Clause 4 of the OWS Common Implementation Standard OGC 06-121r9 shall apply. In addition, the following terms and definitions apply.
- ● application programming interface
-
standard set of documented and supported functions and procedures that expose the capabilities or data of an operating system, application or service to other applications (adapted from ISO/IEC TR 13066-2:2016)
- ● feature
-
abstraction of real-world phenomena (source: ISO 19101-1:2014)
- ● OpenAPI definition | OpenAPI document
-
a document (or set of documents) that defines or describes an API and conforms to the OpenAPI Specification [derived from the OpenAPI Specification]
- ● Web API
-
API using an architectural style that is founded on the technologies of the Web [derived from the W3C Data on the Web Best Practices]
Note
|
Best Practice 24: Use Web Standards as the foundation of APIs in the W3C Data on the Web Best Practices provides more detail. |
- ● commit
-
As a noun, a commit is a single point in the Git history that represents a "revision" or "version" [derived from https://git-scm.com/docs/gitglossary].
- ● coverage
-
feature that acts as a function to return values from its range for any direct position within its spatiotemporal domain, as defined in OGC Abstract Topic 6 (OGC 07-011).
- ● Regular grid
-
grid whose grid lines have a constant distance along each grid axis
- ● process
-
A process p is a function that for each input returns a corresponding output
where X denotes the domain of arguments x and Y denotes the co-domain of values y. Within the Web Processing Service (WPS) standard, process arguments are referred to as process inputs and result values are referred to as process outputs. Processes that have no process inputs represent value generators that deliver constant or random process outputs.
- ● service
-
distinct part of the functionality that is provided by an entity through interfaces (source: ISO/IEC TR 14252)
- ● operation
-
specification of a transformation or query that an object may be called to execute (source: ISO 19119:2016)
- ● request
-
invocation of an operation by a client
- ● response
-
result of an operation, returned from a server to a client
4.1. Abbreviated terms
API Application Programming Interface CRS Coordinate Reference System CSW Catalogue Service for the Web GML Geography Markup Language HTML Hypertext Markup Language HTTP Hypertext Transfer Protocol JSON JavaScript Object Notation WCS Web Coverage Service WFS Web Feature Service WMS Web Map Service WMTS Web Map Tile Service WPS Web Processing Service OWS OGC Web Services REST Representational State Transfer XML Extensible Markup Language
5. Overview
Section 6 introduces the OGC API Hackathon by describing the challenge, the scenario adopted, and the infrastructure used by the participants. The section also presents overviews of the datasets and services identified to support participants during the Hackathon. The section also presents a list of the organizations represented by the participants.
Section 7 describes each of the OGC API specifications that were involved in the hackathon.
Section 8 presents the solution architecture developed in this hackathon. The section identifies the client and service implementations of the OGC API specifications.
Section 9 documents the results and provides a summary of what occurred during the event.
Section 10 provides a summary of the main findings, as well as discussing the experiences and lessons learnt.
Appendix A describes implementations from many of the participating organizations, as well as their motivation for participating, suggestions for alternative approaches, their experiences, impressions and recommendations.
6. Introduction
The development of OGC API specifications is not a new activity within the Consortium, as OGC members and staff have been investigating OpenAPI (and its commercial equivalent, Swagger) in a concentrated effort since 2016. This effort was the result of a recognition that although the existing OGC web service standards are in effect web APIs, there are approaches adopted by modern web API frameworks that would require a fairly fundamental change in underlying design.
Two documents really provided the initial energy to get serious about redesign: the OGC Open Geospatial APIs White Paper, edited by George Percivall [1], and the Spatial Data on the Web Best Practices, jointly developed by OGC and the World Wide Web Consortium (W3C) [2]. These documents highlighted how geospatial data should be more native to the web. Further, OGC staff were working on “implementer-friendly” views of OGC standards and experimented with an OpenAPI definition for the Web Map Tile Service (WMTS).
But perhaps the most important impact was the leap of the OGC Web Feature Service (WFS) and Filter Encoding Service (FES) Standards Working Group (SWG) that rebuilt the WFS standard with an integrated OpenAPI definition as core to description of how to build against the standard. The work on WFS, which has resulted in the OGC API - Features specification (formerly called WFS 3.0), benefited from a two-day Hackathon held in 2018. Since then, other OGC web service SWGs have begun to independently develop API specifications based on their relevant OGC web service standards.
Numerous discussions occurred at OGC quarterly Technical Committee (TC) Meetings to consider those elements being developed in each SWG which should be common to all web API standards. These discussions came to a head at the February 2019 TC Meeting in Singapore, where a series of working group meetings and common sessions for the whole TC Membership reinforced the desire to work on a common framework for many OGC web standards and to develop a nomenclature for labeling these standards. Thus, the pattern “OGC API - [resource]” was coined. The discussions in Singapore also resulted in the planning of the OGC API Hackathon to define and test common elements from Coverages, Map Tiles, and Processing standards work using foundational material from the Features work.
The OGC API Hackathon 2019 was hosted by the Geovation Hub in London, United Kingdom, from 20 to 21 June 2019. The hackathon was sponsored by the European Space Agency (ESA), Ordnance Survey and Geovation. The hackathon was also supported by the US National Geospatial Intelligence Agency (NGA). The goal of the hackathon was to advance the development of OGC API specifications. The aim of the hackathon was to provide an environment and an opportunity for the geospatial community to achieve this goal.
The objectives of the hackathon were set out to:
-
develop, deploy and test services/clients that support OGC APIs;
-
suggest improvements for a common core;
-
define rules/guidance that can be documented;
-
validate work that has been completed to date; and
-
contribute to the GitHub repositories.
6.1. Overview of the Challenge
The challenge of the Hackathon was to define and test common elements from Coverages, Map Tiles, and Processing standards work using foundational material from the Features work. The magnitude of this challenge was reflected by the fact that the OGC API specifications for Coverages, Map Tiles, and Processing were all at different stages of development. Therefore, the Hackathon had to advance the development of all of the specifications to a stage where common elements across all of the specifications could be identified.
6.2. Scenario
To facilitate the development of the OGC API specifications, the scenario presented in this section was provided as a reference for the teams [3]. The scenario is based on flood risk management and is motivated by recent events such as the 2018 floods that affected parts of Europe (including the United Kingdom, Italy, France, Spain and Portugal) [4] and the 2019 floods that affected parts of the United States [5]. The scenario draws from the OGC’s Disasters Interoperability Concept Development Study (CDS) which assessed geospatial Web services across the disaster domain, defining the core components of National Spatial Data Infrastructure (SDI) architecture for disasters (Disasters SDI), and defining use cases and scenarios for future implementations as part of a follow-on pilot phase [6].
Risk mitigation is one of the phases in the ‘life cycle’ of disaster management [6], which includes the steps shown in Figure 1. Mitigation refers to taking sustained actions to minimize or completely eliminate the long-term risk from hazards and their effects on individuals and property. Preparedness refers to building the emergency management capabilities to respond effectively to any hazard, as well as to recover from the hazard. Response refers to conducting emergency operations that reduce the hazard to acceptable levels (or eliminate it entirely) in order to save lives, through evacuation of potential victims, and provision of food, water, medical care, and shelter to those affected by the disaster. Recovery refers to the rebuilding of communities that have been affected by a disaster so that those communities, as well as their governments, can return to normality and function on their own. A more detailed discussion on disaster management can be found in the OGC Development of Disaster Spatial Data Infrastructures for Disaster Resilience Engineering Report [6].
As part of Government flood risk management policy, Local Authorities have to carry out a preliminary flood risk analysis. Using satellite imagery, flood risk data, along with asset information, vulnerable property information and topographic data, Local Authorities carry out analysis to improve resilience and promote a more efficient use of resource.
A Local Authority is tasked with identifying at-risk residential properties in order to assist in flood prevention and amelioration. By carrying out this task, the Local Authority aims to reduce the number of residential properties affected by floods, as well as to decrease the economic and social costs associated with such devastating events. The Geospatial Specialists at the Local Authority embark on the steps presented in Table 1 in order to carry out the task.
Step | Description | Notes |
---|---|---|
1 |
Receive satellite imagery, digital terrain model, Flood Risk Zone, address, and topographic data |
|
2 |
Overlay flood assets such as culverts, levees etc. |
|
3 |
Combine multiple datasets together. |
|
4 |
Data analysis to assess/quantify flood risk. |
A number of hydrology approaches may be applied e.g., run-off modeling |
5 |
Identify at risk properties and possible remediation strategies. |
|
6 |
Execute cost-benefit analysis to determine priorities. |
|
7 |
Commission work for on-the-ground implementation. This may be carried out by internal or external teams. |
|
8 |
Impact of remediation work assessed by external engineering consultant. |
The illustration in Figure 2 shows the Area of Interest (AOI) that was selected to facilitate prototyping, demonstration and briefings. The AOI covered the region of Carmarthenshire, Wales and focused on the town of Carmarthen. The region was the site of significant flooding in October 2018 and hence provided an appropriate location for the flood-based scenario adopted for the Hackathon.
Whereas the Time-Of-Interest (TOI) was October 2018, the AOI had the polygonal bounds in World Geodetic System 1984 (WGS84) longitude-latitude coordinates:
-4.09247619415462,51.6507504017036
-4.59606172257991,51.6468710002251
-4.59750580025958,52.0105126182078
-4.09303085864973,52.0127870676365
-4.09247619415462,51.6507504017036
6.3. What was provided
6.3.1. Supporting Datasets
The following datasets were identified as relevant to the scenario, and thus recommended for testing implementations of the specifications.
-
ESA Sentinel Data: The Sentinels are a family of missions developed by ESA for Copernicus, the European Union’s Earth Observation program. The data supplied to the OGC API Hackathon included imagery from the Sentinel-2 mission. Launched on 23 June 2015, the Sentinel-2 mission is a polar-orbiting, multispectral high-resolution imaging mission for land monitoring to support emergency services, imagery of vegetation, soil and water cover, inland waterways and coastal areas [7]. The Sentinel imagery was supplied by Sinergise, the providers of sentinelhub.com [8].
-
UK Met Office DataPoint: DataPoint is a freely available service that offers meteorological feeds for use by professionals, the scientific community, and developers. It is an unsupported service, with a primary goal of facilitating research, development and innovation [9].
-
UK Met Office Atmospheric Deterministic and Probabilistic Forecasts: This dataset includes atmospheric deterministic and probabilistic forecasts provided as downloadable gridded data [10]. The data includes 2km deterministic high-resolution atmospheric data for the UK and 10km deterministic high-resolution atmospheric data for the Globe. There is also data from the Global and Regional Ensemble Prediction System.
-
Ordnance Survey - OS Open Zoomstack: This dataset provides a single, customizable map of Great Britain to be used at national and local levels. The dataset is available in OGC GeoPackage format. The dataset includes vector data at a variety of scales, from a whole-country view to a street-level view (1:10,000) [11].
-
Meteorological Service of Canada Datamart: A variety of raw meteorological data types and forecast data provided by the Meteorological Service of Canada (MSC). It is aimed at specialized users with good meteorological and Information Technology (IT) knowledge. The datasets are available through direct download from an HTTP server, as well as through a Web Map Service (WMS) [12].
6.3.2. Supporting Services
The following services were identified as relevant to the scenario, and thus recommended for testing implementations of the specifications.
-
Meteorological Service of Canada Geospatial web services: This service provides access to the MSC’s open data, including raw numerical weather prediction (NWP) model data layers and the weather radar mosaic. The service provides meteorological layers through a Web Map Service (WMS) interface to enable end-users to display meteorological data within their own tools, on interactive web maps and in mobile apps [13].
-
National Oceanic and Atmospheric Administration (NOAA) National Weather Service Data as OGC Web Services: These web services provide meteorological data covering the United States, through interfaces that conform to the Web Map Service (WMS), Web Feature Service (WFS) and Web Coverage Service (WCS) standards of the OGC [14].
6.3.3. Deployment Infrastructure
Participants were advised to bring their own laptops to the hackathon. To support testing, the following infrastructure options were available to participants:
-
Participants could deploy services into their own computers;
-
Participants could deploy services into their own Cloud infrastructure; or
-
By prior arrangement, participants could deploy services into Ordnance Survey-sponsored Cloud infrastructure.
Ordnance Survey-sponsored Cloud infrastructure
A survey questionnaire was emailed to each Hackathon participant prior to the event. The questionnaire is presented in the section titled Infrastructure in Appendix B. Based on the results of the survey, four virtual machines were created by Ordnance Survey for use during the Hackathon by the nine users who replied specifying a need to use Azure based architecture. An illustration of the configuration of the infrastructure is presented in Figure 3.
Pairs of servers were configured with the CentOS 7.6 and Ubuntu 18.04 Long Term Support (LTS) operating systems to meet the requirements specified within the responses to the questionnaire. Each of the nine users was given their own 100GB Azure File share, mounted across to each virtual machine with Network File System (NFS) to enable cross-server working.
Each server was installed with a similar set of software: Corretto, Docker, Docker Compose & Python 3.7.
In addition, Ordnance Survey provided three cut-down datasets for OS MasterMap (Highways, TOPO & Water Networks) covering the areas of interest being used during the Hackathon. Access to these datasets was made available using secure tokens.
6.4. Hackathon Participants
The Hackathon was sponsored by the European Space Agency (ESA) and Ordnance Survey. Table 2 lists organizations that participated in the Hackathon.
Organization Name | OGC Membership |
---|---|
52°North GmbH |
Member |
akouas |
Non-member |
ARC |
Non-member |
Arup |
Non-member |
blockdore |
Non-member |
British Antarctic Survey |
Member |
CREAF |
Member |
CubeWerx Inc. |
Member |
Deimos Space UK |
Member |
District Government Cologne - Geobasis NRW |
Non-member |
Defence Science and Technology Laboratory (Dstl) |
Member |
Duisburg Essen university |
Non-member |
Ecere Corporation |
Member |
ECMWF |
Member |
El Toro |
Non-member |
EOS Data Analytics |
Non-member |
EOX IT Services GmbH |
Member |
Esri UK |
Member |
Eurac Research |
Non-member |
European Space Agency (ESA) |
Member |
Geobeyond |
Non-member |
GeoCat B.V. |
Member |
GeoLabs |
Non-member |
GeoSeer |
Non-member |
GeoSolutions |
Member |
Geovation |
Member |
Heazeltech |
Member |
Helyx SIS |
Member |
Hexagon |
Member |
Infinity Corporation Limited |
Non-member |
interactive instruments GmbH |
Member |
ISRIC - World Soil Information |
Member |
Jet Propulsion Laboratory (JPL) |
Member |
JRC, European Commission |
Member |
Land Information New Zealand |
Member |
Landcare Research, New Zealand |
Member |
lat/lon GmbH |
Member |
Met Office |
Member |
Meteorological Service of Canada |
Member |
National Aeronautics and Space Administration (NASA) |
Member |
National Geospatial Intelligence Agency (NGA) |
Member |
National Land Survey of Finland |
Member |
Natural Resources Canada |
Member |
NOAA/NWS |
Member |
Ordnance Survey |
Member |
OSGeo |
OGC Alliance Partner |
Princeton University |
Non-member |
Princeton University Library |
Non-member |
Quick Caption |
Non-member |
rasdaman GmbH |
Member |
Secure Dimensions |
Member |
Sigma Bravo |
Non-member |
Sinergise |
Non-member |
Solenix |
Member |
Spacebel s.a. |
Member |
Strategic Alliance Consulting Inc |
Member |
University of Birmingham |
Non-member |
University of Münster |
Member |
University of Notre Dame |
Member |
WebGeoDataVore |
Non-member |
West University of Timisoara |
Member |
7. OGC API Specifications
This chapter describes each of the draft OGC API specifications ahead of the Hackathon. The section presents an overview of each specification and is not intended to be a substitute for reading the complete specification.
7.1. OGC API - Common
The OGC API - Common specification documents the set of common practices and shared requirements that have emerged from the development of Resource Oriented Architectures and Web APIs within the OGC [15]. The specification serves as a common foundation upon which all OGC APIs will be built. As such, the OGC API - Common standard serves as the "OWS Common" standard for resource-oriented OGC APIs. Consistent with the architecture of the Web, this specification uses a resource architecture that conforms to principles of Representational State Transfer (REST). The specification establishes a common pattern that is based on OpenAPI.
In addition to identifying core resources, the OGC API - Common specification goes on to specify HTTP status codes that may be supported by an OGC API, as well as how to handle a coordinate reference system (CRS), web caching, and encodings. The specification also describes how to handle common parameters such as bounding boxes and date-time constraints.
The following subsection presents a summary of the core resources.
7.1.1. Key Resources
A summary of the paths offered by the OGC API - Common specification is presented below:
-
Path = /
-
Returns landing page
-
-
Path = /api
-
Returns API Description document (OpenAPI)
-
-
Path = /conformance
-
Returns a set of conformance class URIs.
-
-
Path = /collections
-
Returns metadata describing the collections accessible through this API
-
-
Path = /collections/{collectionId}
-
Returns metadata describing the collection identified by {collectionId}
-
7.2. OGC API - Features
The OGC API - Features specification offers the capability to create, modify, and query spatial data on the Web [16] and specifies requirements and recommendations for APIs that want to follow a standard way of sharing feature data. The specification is a multi-part document. The Core part of the specification describes the mandatory capabilities that every implementing service has to support and is restricted to read-access to spatial data. Additional capabilities that address specific needs will be specified in additional parts. Envisaged future capabilities include, for example, support for creating and modifying data, more complex data models, richer queries, and additional coordinate reference systems. This specification builds on the Web Feature Service (WFS) standard and has previously been referred to as WFS 3.0.
Note that the first part of the specification, OGC API - Features - Part 1: Core, has since the hackathon been approved and published as an OGC standard.
7.2.1. Key Resources
A summary of the paths offered by the OGC API - Features specification is presented below:
-
Path = /
-
Returns the landing page of this API (shared with OGC API - Common)
-
-
Path = /conformance
-
Returns information about standards that this API conforms to (shared with OGC API - Common)
-
-
Path = /collections
-
Returns a description of the feature collections in the dataset (shared with OGC API - Common)
-
-
Path = /collections/{collectionId}
-
Returns a description of the {collectionId} feature collection (shared with OGC API - Common)
-
-
Path = /collections/{collectionId}/items
-
Returns features of feature collection {collectionId}
-
-
Path = /collections/{collectionId}/items/{featureId}
-
Returns a feature
-
-
Path = /collections/{collectionId}/queryables
-
Returns the queryable properties of the feature collection
-
Support for HTML and JSON/GeoJSON as encodings is recommended for all resources. The specification includes conformance classes for GML (Simple Features profile), too.
7.3. OGC API - Processes
The OGC API - Processes specification defines how a client application can request the execution of a process, how the inputs to that process can be provided, and how the output from the process is handled [17]. The specification allows for the wrapping of computational tasks into an executable process that can be invoked by a client application. Examples of computational processes that can be supported by implementations of this specification include raster algebra, geometry buffering, constructive area geometry, routing and several others. This specification builds on the Web Processing Service (WPS) standard.
7.3.1. Key Resources
A summary of the paths offered by the OGC API - Processes specification is presented below:
-
Path = /
-
Returns landing page (inherited from OGC API - Common)
-
-
Path = /api
-
Returns API Description document (OpenAPI) (inherited from OGC API - Common)
-
-
Path = /conformance
-
Returns a set of conformance class URIs (inherited from OGC API - Common)
-
-
Path = /processes
-
Returns available processes
-
-
Path = /processes/{id}/
-
Returns a process description
-
-
Path = /processes/{id}/jobs
-
Returns the list of jobs for a process
-
-
Path = /processes/{id}/jobs/{jobID}
-
Returns the status of a job
-
-
Path = /processes/{id}/jobs/{jobID}/result
-
Returns the result(s) of a job
-
7.4. OGC API - Map Tiles
The OGC API - Map Tiles specification defines an OGC standard for a Web Map Tile API that can serve map tiles of spatially referenced data using tile images with predefined content, extent, and resolution [18]. The specification describes the discovery and query operations of an API that provides access to Map Tiles in a manner independent of the underlying data store. The discovery operations allow the API to be interrogated to determine its capabilities and retrieve metadata about the organization and distribution of tiles. The query operations allow tiles to be retrieved from the underlying data store based upon simple selection criteria, defined by the client. This specification builds on the Web Map Tile Service (WMTS) standard.
Note that this API specification has, at different times, been referred to as the OGC API - Maps and Tiles specification. The different name is a reflection of the on-going discussion about whether the specification should be split up into separate building blocks; one for maps and the other for tiles. A summary of the discussion can be found in the section OGC API - Map Tiles.
7.4.1. Key Resources
A summary of the paths offered by the OGC API - Map Tiles specification is presented below:
-
Path = /
-
Returns landing page (inherited from OGC API - Common)
-
-
Path = /conformance
-
Returns a set of conformance class URIs. (inherited from OGC API - Common)
-
-
Path = /collections
-
Returns metadata describing the collections accessible through this API (inherited from OGC API - Common)
-
-
Path = /collections/{collectionId}
-
Returns metadata describing the collection identified by {collectionId} (inherited from OGC API - Common and extended)
-
-
Path = /tileMatrixSet
-
Returns all available tile matrix sets (tiling schemes)
-
-
Path = /tileMatrixSet/{tileMatrixSetId}
-
Returns a tiling scheme by ID
-
-
Path = /map
-
Returns a map of collections (by combining collections with styles)
-
-
Path = /collections/{collectionId}/map/{styleId}
-
Returns a map from the collection
-
-
Path = /map/info
-
Returns information about a map of more than one collection
-
-
Path = /collections/{collectionId}/map/info
-
Returns information about a map from the collection
-
-
Path = /collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
-
Returns tiled data from the collection
-
-
Path = /collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}/info
-
Returns information on a point of tiled data from the collection
-
-
Path = /tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
-
Returns tiled data of more than one collection
-
-
Path = /tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}/info
-
Returns information on a point of tiled data with or without style
-
-
Path = /tiles/{tileMatrixSetId}
-
Returns tiled data (multiple tiles in a package) from more than one collection
-
-
Path = /collections/{collectionId}/tiles/{tileMatrixSetId}
-
Returns tiled data of a collection (multiple tiles in a package)
-
-
Path = /collections/{collectionId}/map/{styleId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
-
Returns a tile of a map of a collection
-
-
Path = /map/{styleId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}
-
Returns a tile of a map of more than one collection
-
-
Path = /collections/{collectionId}/map/{styleId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}/info
-
Returns information of a point in a tile of a maps of a collection
-
-
Path = /map/{styleId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}/info
-
Returns information on a point of a tile of a map of more than one collection
-
7.5. OGC API - Coverages
The OGC API - Coverages specification defines a Web API for accessing coverages that are modeled according to the Coverage Implementation Schema (CIS) 1.1 [19]. Coverages are represented by some binary or ASCII serialization, specified by some data (encoding) format. Arguably the most popular type of coverage is that of a gridded coverage. Gridded coverages have a grid as their domain set describing the direct positions in multi-dimensional coordinate space, depending on the type of grid. Satellite imagery is typically modeled as a gridded coverage, for example. The OGC API - Coverages specification builds on the Web Coverage Service (WCS) standard.
7.5.1. Key Resources
A summary of the paths offered by the OGC API - Coverages specification is presented below:
-
Path = /
-
Returns landing page (inherited from OGC API - Common)
-
-
Path = /api
-
Returns API Description document (OpenAPI) (inherited from OGC API - Common)
-
-
Path = /conformance
-
Returns a set of conformance class URIs. (inherited from OGC API - Common)
-
-
Path = /collections
-
Returns metadata describing the collections accessible through this API (inherited from OGC API - Common)
-
-
Path = /collections/{collectionId}
-
Returns metadata describing the collection identified by {collectionId}, in particular: a list of the identifiers of its members (inherited from OGC API - Common and extended)
-
-
Path = /collections/{collectionId}/coverages
-
Returns metadata about each coverage in the collection
-
-
Path = /collections/{collectionId}/coverages/{coverageID}
-
Returns the coverage itself, in some encoding - either ASCII (XML, JSON, RDF, etc.) or binary (GeoTIFF, NetCDF, etc.) or multipart (such as MIME, zip, etc.) as defined in OGC CIS 1.x
-
-
Path = /collections/{collectionId}/coverages/{coverageID}/metadata
-
Returns the metadata associated with the coverage identified by {coverageId}, as defined in OGC CIS
-
-
Path = /collections/{collectionId}/coverages/{coverageID}/domainset
-
Returns the domain set of the coverage identified by {coverageId}, as defined in OGC CIS
-
-
Path = /collections/{collectionId}/coverages/{coverageID}/rangetype
-
Returns the range type of the coverage identified by {coverageId}, as defined in OGC CIS based on SWE Common DataRecords
-
8. Architecture
The focus of the hackathon was on support of development of the OGC API - Common, the OGC API - Features, OGC API – Processes, the OGC API – Coverages, and the OGC API – Map Tiles candidate standards. Implementations of these specifications were deployed in the Hackathon infrastructure in order to build a solution with the architecture shown in Figure 4. As shown on the illustration, the architecture adopted a multi-tier approach that included one or more implementations of each OGC API specification deployed on the wider Internet (e.g., in participants' own Cloud environments), as well as some implementations deployed in Ordnance Survey’s Cloud which is hosted on Microsoft Azure.
The OGC API - Common specification documents the set of common practices and shared requirements that have emerged from the development of Resource Oriented Architectures and Web APIs within the OGC. The specification serves as a common foundation upon which all OGC APIs will be built. The OGC API - Processes specification defines how a client application can request the execution of a process, how the inputs to that process can be provided, and how the output from the process is handled. The OGC API - Map Tiles specification defines an OGC standard for a Web Map Tile API that can serve map tiles of spatially referenced data using tile images with predefined content, extent, and resolution. The OGC API - Coverages specification defines a Web API for accessing coverages that are modeled according to the Coverage Implementation Schema (CIS) 1.1. The hackathon also sought to maintain consistency between the aforementioned specifications and the OGC API - Features specification. The OGC API - Features specification offers the capability to create, modify and query geospatial feature data on the Web. The OGC API - Catalogues specification offers the capability to create, modify and query geospatial metadata on the Web.
8.1. Service Implementations
8.1.1. pygeoapi
The pygeoapi server is a Python implementation of the emerging OGC API specifications. It is available from https://github.com/geopython/pygeoapi. Early versions of this software implemented the OGC API - Features specification (formerly WFS 3.0). Recent versions of the software have included support for both the OGC API - Features and the OGC API - Processes specifications. Support for these specifications make it possible publish feature data and geospatial processes. As the name suggests the software is built using the Python programming language and is supported by a developer toolchain that includes Docker and Git/Github.
8.1.2. 52°North JavaPS
The 52°North JavaPS product is an open source implementation of both the Web Processing Service (WPS) standard and the OGC API - Processes specification. It is available from https://github.com/52North/javaPS. JavaPS enables the deployment of geospatial processes on the Web in a way that conforms to OGC standards. The software is built using the Java programming language and is supported by a developer toolchain that includes Maven and Git/Github. The software features a pluggable architecture for processes and data encodings that is based on the 52°North Iceland project which represents a generic Java framework for OGC Web Services. By virtue of being based on the Iceland project, JavaPS provides components that are associated with processing geospatial data, for example request objects, response objects, decoders, encoders, parsers.
8.1.3. Esri
Esri produce both an installable product (ArcGIS Enterprise) and a Software-as-a-Service (SaaS) product (ArcGIS Online) which support adopted OGC specifications. ArcGIS Enterprise as a server implements WMS, WMTS, WCS2, WPS, WFS2, KML, GeoPackage etc as well as other de-facto standards. ArcGIS Online as a server implements WMTS, WFS2 as well as other de-facto standards.
Until the OGC API standards are stable and formally adopted, it is not feasible to implement them in the released products. Therefore, for the purposes of the Hackathon and further Research and Development (R&D), Esri have implemented the OGC API - Map Tiles specification as a facade on to ArcGIS Online tiled services. Technically this is currently implemented as a node.js server running in Microsoft Azure. https://ogc-tiles-esri-server.azurewebsites.net
8.1.4. rasdaman
The rasdaman ("raster data manager") product is a flexible, scalable datacube engine with location-transparent federation capabilities. Open-source rasdaman is available from www.rasdaman.org. Being a WCS reference implementation rasdaman supports OGC WMS, WCS, and WCPS (the OGC datacube analytics standard). For experimentation with the emerging OGC API for coverages, a rasdaman server has been made available on Amazon with an OpenAPI facade to WCS; access has been demonstrated with EURAC and Sinergise OpenAPI clients.
8.1.5. ldproxy
ldproxy is an implementation of the OGC API family of specifications, based on the W3C/OGC Spatial Data on the Web Best Practices. It is written in Java (Source Code) and is typically deployed using docker (DockerHub).
The software originally started in 2015 as a Web API for feature data based on WFS 2.0 capabilities. In addition to the JSON/XML encodings, an emphasis is placed on an intuitive HTML representation.
The current version supports WFS 2.0 instances as well as PostgreSQL/PostGIS databases as backends. It implements all conformance classes and recommendations of "OGC API - Features - Part 1: Core" plus a number of experimental OGC API Features extensions (CRS support, /items path, property selection, geometry simplification, transactions, dynamic links, and more). ldproxy also has draft implementations for additional resource types (Tiles, Styles).
8.1.6. Helyx SIS
The Helyx team implemented a service that conformed to the OGC API – Processes specification (formerly referred to as WPS 3.0) with the primary work completed in the OGC Routing API Pilot, which is currently on-going. The focus of the component implementation was to produce a schemaless collections endpoint to act as a storage location for data production processes capable of supporting data provided by WPS or those provided by WFS.
An advantage of the schemaless (and in the future, potentially serverless) approach is the efficiency of the hashing procedure enabling many Key-Value Pairs(KVPs) to be entered even on a low spec machine. Additionally, this approach has the potential to be made production-ready quickly due to the simplicity of the implementation requirements. A future possibility for this piece of work is to implement it using Hazelcast, as it backs up KVPs to a NoSQL database therefore caching the requests and increasing performance accordingly.
8.1.7. ZOO-Project
The ZOO-Project product, available at www.zoo-project.org, is an open-source implementation of both the Web Processing Service (WPS) standard (version 1.0.0 and 2.0) and the OGC API - Processes specification. The ZOO-Kernel is the main component written in C which enables the deployment of geospatial processes on the Web in a way that conforms to OGC standards. The geospatial processes are named ZOO-Services and can be implemented in various programming languages (C/C++, Fortran, Java, Python, C#, JavaScript, Perl, R, PHP, Ruby). ZOO-Kernel also supports the deployment of existing Open-Source GIS applications such as OrfeoToolBox and SAGA-GIS. Optionally the execution of OrfeoToolBox applications can be done remotely on an HPC server using SLURM scheduler.
8.1.8. EOxServer
EOxServer (http://eoxserver.org) was started more than 10 years ago as a reference implementation of WCS in particular the Earth Observation Application Profile (EO-WCS).
Support for the OGC API - Coverages draft was implemented in EOxServer in the OpenAPI branch (https://github.com/EOxServer/eoxserver/tree/openapi).
A demonstration using the provided Sentinel-2 data is available online at https://ows.eox.at/openapi/ and integrated in the Sinergise OGC Coverages Demo Client.
8.1.9. GNOSIS Map Server
The GNOSIS Map Server is written in the eC programming language and currently implements WMTS, WFS, as well as prototyped support for the new OGC API. It supports multiple encoding including GNOSIS Map Tiles (which can contain either vector data, gridded coverages, imagery, point clouds or 3D meshes), Mapbox Vector Tiles, GeoJSON, GeoECON, GML and MapML. An experimental server is available online at http://maps.ecere.com/geoapi and used for interoperability experiments in multiple OGC initiatives.
8.1.10. CREAF MiraMon Map Server
The MiraMon Map Server is a CGI application encoded in C language that is part of the MiraMon Geographic Information System (GIS) & Remote Sensing (RS) suite. Currently the server implements WMS, WMTS and partially implements WFS and WCS. It also partially implements the OGC Sensor Observation Service (SOS) standard. In order to perform efficiently, it requires a process preparing the data to be offered. It can interoperate with other vendors clients but combined with the MiraMon Map Client it offers more functionality, including functionality recently developed for the Catalan Data Cube.
The software originally started 10 years ago as a WMS server in support of the Catalan Administration and CREAF data services.
It includes prototype support for the draft OGC API - Map Tiles specification.
8.1.11. CubeWerx cubeserv
The CubeWerx server ("cubeserv") is implemented in C and currently implements the following OGC web services.
-
The WPS REST/JSON bindings defined during OGC Testbed-14 and by the WPS SWG.
-
All draft and adopted versions of the OGC® Web Feature Service Interface Standard.
-
All conformance classes and recommendation of the "OGC API - Features - Part 1: Core" standard as well a number of extensions (see OGC Testbed-14: Next Generation Web APIs - WFS 3.0 Engineering Report.
-
All adopted versions of the OpenGIS Web Map Service (WMS) Implementation Specification.
-
Version 1.0 of the OpenGIS Web Map Tile Service Implementation Standard.
-
A number of other "un-adopted" OGC web services including the OGC Vector Tiles Pilot: WFS 3.0 Vector Tiles Extension Engineering Report, Testbed-12 Web Integration Service, OWS-7 Engineering Report - Geosynchronization service, Web Object Service Implmentation Specification.
The cubeserv executables supports a wide variety of back ends including Oracle, MariaDB, SHAPE files, etc. It also support a wide array of service-dependent output formats (e.g. GML, GeoJSON, Mapbox Vector Tiles, MapMP, etc.) and coordinate reference systems.
8.2. Client Implementations
8.2.1. OpenSphere OGC API Plugin
OpenSphere is a pluggable, single-page, GIS web application that supports both 2D and 3D views. It supports binding to many popular servers and formats such as ArcGIS, GeoServer (and other OGC WMS/WFS services), XYZ, TMS, KML, GeoJSON, Shapefiles and CSVs. Other features include animation of both raster and vector data, import and export of various formats, and saving files and layers between sessions. Sigma Bravo extended OpenSphere to support OGC API - Features and OGC API - Map Tiles.
8.2.2. Hexagon LuciadLightspeed
LuciadLightspeed provides a foundation for advanced geospatial analytics applications. It allows users to create high performance command & control and location intelligence applications with clean design implementation and rapid application development. A desktop client application was implemented using LuciadLightspeed and configured to interface services implementing the OGC API - Map Tiles specification.
8.2.3. Solenix WPS Demo Client
The Solenix WPS Demo client is an adaptation of the OGC Testbed 14 client, accounting for some of the changes introduced with the OGC API - Processes specification. The client application runs from a web browser and connects to servers that conform to the OGC API – Processes specification.
A total of 7 servers were connected during the Hackathon, providing the participants with the scenario of a client running in the web browser served via HTTPS and the resulting security rules. The client was used during the Hackathon to debug server implementations, and in particular the Cross Origin Resource Sharing (CORS) behavior in web browsers.
8.2.4. Esri OGC API-Tiles Demo Client
The Esri client application is a simple Leaflet application which connects to the Esri OGC API - Map Tiles server implementation for testing purposes.
8.2.5. Sinergise OGC Coverages Demo Client
The Sinergise OGC Coverages Demo Client is a single-page Javascript application, using Leaflet.js to show the data from different backends. Support for two different backends was implemented, rasdaman and EOxServer from EOX IT Services GmbH. The frontend is available at http://webdev.sentinel-hub.com/ogc-hackathon/index.html (view source for additional info).
8.2.6. Helyx SIS Demonstration Clients
Helyx produced two clients as part of the hackathon, one standalone web client and one QGIS client. The Standalone Web Client was implemented with the purpose of providing a walkthrough of the OGC API to discover processes. The web client, which was implemented using JavaScript, was able to identify the inputs and outputs of each process, request inputs from the user, execute a process and display the result. The QGIS client performed a similar function to the web client, except it was designed and built in the QGIS plugin environment. The QGIS client walks through the API and identifies processes and parameters to automatically populate the Graphical User Interface (GUI) for each process therefore providing the user with well-defined inputs.
8.2.7. ZOO-Project Demonstration Clients
The ZOO-Project provided a Swagger demonstration interface which can be found at https://demo.mapmint.com/swagger-ui/dist. A demonstration user interface based on interfaces available at www.zoo-project.org was also provided. It is available here: https://demo.mapmint.com/examples3/spatialtools.html. It can be used to invoke execution of 4 services using the OGC API - Processes. The ZOO-Project also provided an Orfeo ToolBox application named BandMath. Orfeo ToolBox is an open-source project for state-of-the-art remote sensing, including a fast image viewer, apps callable from Bash, Python or QGIS, and a powerful C++ API.
8.2.8. GNOSIS Software Development Kit
The GNOSIS Software Development Kit is written in the eC programming language and currently implements client support for WMS, WMTS, WFS, as well as prototyped support for the new OGC API. Through an automated bindings generator part of the open-source Ecere SDK, the GNOSIS SDK is also made available to a growing list of other programming languages currently including C, C++ and Python. Clients written with the GNOSIS SDK, such GNOSIS Cartographer, can render styled geospatial views using cartographic or 3D perspective projections, with support for Virtual, Augmented and Mixed Reality.
8.2.9. CREAF MiraMon Map Client
The MiraMon Map Client is a pure JavaScript client that is part of the MiraMon GIS & RS suite. It currently implements WMS, WMTS and partially implements WFS, WCS and SOS. For all protocols it uses OGC standards as a communication platform without any intermediate encoding of protocol. It can interoperate with other vendors' services but combined with the MiraMon Map Server it offers more functionalities, including functionality recently developed for the Catalan Data Cube. It is an open source software product that can be downloaded from here: https://github.com/joanma747/MiraMonMapBrowser
The software originally started 10 years ago as a web portal in support of the Catalan Administration’s open data policy.
8.3. Validation Implementations
8.3.1. TEAM Engine
TEAM Engine (Test, Evaluation, And Measurement Engine) is a Java-based application for testing web services and other information resources. It executes test suites developed using the popular TestNG framework, OGC Compliance Test Language (CTL) scripts, and possibly other JVM-friendly languages. It is lightweight and easy to run from the command-line or as a web application.
TEAM Engine can be used to test almost any type of service or information resource. It is the official test harness used by the Open Geospatial Consortium’s (OGC) compliance program. Visit the project documentation website for more information.
Currently, there is a test suite available to verify "OGC API - Features" service implementations. The test suite is written in Java using the TestNG framework and source code is publicly available. Also, there is a public installation of the test suite on OGC CITE Beta environment.
9. Results
This section describes what occurred and presents results from the Hackathon.
9.1. What occurred
9.1.1. Processes
The decision to hold the OGC API Hackathon was made by the TC at the 2019 TC meeting in Singapore. Following this decision, OGC staff engaged a number of potential sponsors from the OGC membership. Having identified sponsors and hosts, a series of teleconferences were held for planning the event. These teleconferences discussed venue logistics, computing infrastructure, data, scenarios, catering and other topics. A Gantt chart of the planning and execution of the hackathon is shown in Figure 5.
During the hackathon, the process involved alternation between briefings, discussions and coding. On the first day of the hackathon, three back-briefs were held, that is one in the morning, another in the afternoon and another in the evening. These briefings provided an opportunity for issues to be discussed across teams. Agreements and resolutions from the discussions triggered by the briefings were then fed back into the team-specific work.
The agenda for the hackathon is presented below.
Agenda
Day 1 - Thursday 20th June, 2019
-
09:00hrs - Welcome note (Geovation Hub Staff)
-
09:15hrs - Goals and objectives (OGC DKM & SWG Chairs)
-
09:30hrs - Introduction to the Draft Specifications (Common, Features, Map Tiles, Processes, Coverages)
-
11:00hrs – Split into teams by specification
-
11:10hrs – Team-based work starts [define the problem/scope]
-
12:30hrs - Lunch
-
13:30hrs - Resume [come up with multiple options]
-
17:00hrs - Early Dinner
-
18:00hrs - Resume [select the preferred option]
-
20:00hrs - Back-briefs from each team
-
21:00hrs - Adjourn
Day 2 - Friday 21st June, 2019
-
08:00hrs - Goals and objectives (OGC DKM & SWG Chairs)
-
08:30hrs - Resume team-based work [implement the preferred option]
-
12:00hrs - Third back-briefs from each team [ "alignment report" to brief on any deviation from Core as provided at start]
-
12:30hrs - Working Lunch [complete implementation of the preferred option]
-
13:30hrs – Joint work on Common or Resume team-based work [implement the preferred option]
-
14:30hrs – Show & Tell (Demonstration of clients accessing services)
-
15:30hrs - Final back-briefs
-
16:30hrs - Closing note (OGC COO)
-
17:00hrs - Close
9.1.2. Organization
By the event date, 76 individuals had been registered to participate in-person and 35 participants had been registered to participate remotely. On the event date, 64 individuals participated in person and more than 10 participated remotely. The participants represented 60 organizations, 41 of those organizations are OGC members, one of the organizations is an OGC Alliance Partner and the remaining 18 organizations are non-members. The proportion of OGC members to alliance partners and non-members is illustrated in Figure 6.
A questionnaire sent out just before the hackathon to collect information about which OGC API specifications the participants would focus on received 27 responses. The spread of responses to the hackathon is shown in Figure 7.
The hackathon was therefore organized around teams based on the OGC API specifications. Participants interested in APIs other than those for coverages, processes, and map tiles, were asked to contribute to the work on advancing the OGC API - Common specification. This would help ensure that the OGC API - Common specification provides an appropriate a base for all future OGC APIs.
9.1.3. Technology
The client and service applications were bound together through interfaces conforming to the OGC APIs for Map Tiles, Processes, Features, Catalogues, and Coverages. The client applications included software from Hexagon, Helyx, OpenSphere, Esri, Solenix, EURAC and Sinergise. The service applications included software from 52 North, CubeWerx, Esri, Helyx, pygeoapi, Geoserver, Spacebel, West University of Timisoara, rasdaman, interactive instruments, EOX, and Ecere. The variety of software implementations suggests that the OGC API specifications widely implementable and do not depend on any single vendor’s technology.
As discussed in Architecture, the software products that were deployed by the aforementioned organizations included:
-
pygeoapi
-
52°North JavaPS
-
Esri prototype facade on to ArcGIS Online tiled services
-
rasdaman
-
OpenSphere OGC API Plugin
-
Hexagon LuciadLightspeed
-
Solenix WPS Demo Client
-
Esri OGC API-Tiles Demo Client
-
ldproxy
-
Helyx server, web clients and QGIS Desktop client
-
ZOO-Project
-
EOxServer
-
Ecere’s GNOSIS Map Server, SDK and Client (Cartographer)
-
CREAF MiraMon Map Server and MiraMon Map Client
The deployed technologies included software implemented in C, C++, eC, Python, Java, and NodeJS. Some of the deployed technologies include Python adapters to software implemented in C++. This variety of programming languages shows that the OGC API specifications are independent of any programming language.
9.1.4. Information
Communication
A key aspect of executing a hackathon is the communication within and between the participating teams. A number of communication tools were used within the OGC API Hackathon to facilitate communication.
-
OGC Portal: Used for event planning.
-
Gitter: Used for communication relating to technical information, due to its close integration with Github.
-
Github: Used for logging issues and sharing documents (including the engineering report) across teams.
-
OGC Mailing list: Used for sharing administrative information with all participants ahead of the hackathon.
-
Gotomeeting: Used for the pre-event webinar and for teleconferencing with remote participants during the hackathon.
-
Microsoft Teams: Used by Ordnance Survey for supporting participants that had requested access to Ordnance Survey’s Cloud.
Knowledge Capture
Github played a key role in the documentation and sharing of knowledge during the hackathon. Github is a development environment built on top of Git - a distributed version control and source code management (SCM) system. In addition to providing a repository for the draft OGC API specifications, Github also provided the following useful capabilities:
-
Statistics
-
Commits
-
Additions and deletions
-
-
Previews of differences between files and their revisions
-
Access control
-
Wiki
-
Notifications of requests for changes and accepted changes
Note
|
A commit is a single point in the Git history that represents a "revision" or "version". |
The various teams involved in the hackathon used the Github repositories of their relevant OGC API specifications to log issues that were identified during discussions. Note that the hackathon took place at the end of the week, and thus some of the participants were only able to log issues at the beginning of the week after the hackathon. Figure 8 presents a graph of the total number of issues logged in Github repositories on the lead up to the hackathon event, during the event and the week after the event. The effect of the hackathon is clearly visible from the 'spike' in the number of issues logged during the two days of the hackathon event (i.e., June 20th & 21st).
Changes to the OGC API specifications were made on the lead up to the hackathon, and during the event. Figure 9 presents the total number of commits in Github repositories for OGC APIs on the lead up to the hackathon event, during the event and the week after the event. The commits represent more than 4600 additions and 3200 deletions to the draft API specifications. The number of additions and deletions was determined from the commits made to Github repositories for Processes, Map Tiles, Common and Coverages.
Note
|
All changes were controlled and vetted by the editors of the OGC API specifications. |
It should be noted that although the hackathon resulted in additions and deletions to the draft API specifications, the outputs of the hackathon are subject to vetting and approval processes of the relevant OGC Standards Working Groups. Therefore, there is always the possibility that the Standards Working Groups may reject all of the outputs of the hackathon. To an extent, such an outcome is mitigated by the participation of several members of the Standards Working Group in the hackathon. Further, appointing the editors of the OGC API specifications as the Team Leads of the hackathon appeared to improve the likelihood of acceptance of changes made during the hackathon.
9.2. OGC API - Processes
The participants made an observation that some attributes for referenceValue were missing. As a result, changes were made to add attributes for identifying the MIME type, schema and encoding in a referenceValue object. These changes were needed for providing input in a specific format or returning output in a specific format.
There was a suggestion to add ows:additionalProperties and ows:context to metadata. It was observed that ows:additionalParameters allows a service to provide KVP metadata information. It was also observed that Testbed-13 and Testbed-14 had demonstrated the utility of such a capability. As a result, the hackathon participants committed changes to the OGC API - Process specification adding the definition of additionalParameters.
There was also a discussion about whether process output arrays are fully supported. The participants observed that currently the output-value-cardinality requirement limits cardinality of the output to one. A number of workarounds were suggested including returning a list of outputs, returning an archive (zip), returning a Metalink, or returning Multipart/mixed responses. The participants concluded that a solution would need to handle all kind of outputs, including outputs by reference, as well as binary files.
There was a discussion about how to specify support for synchronous execution. The options identified included i) either use a query parameter or a HTTP header to specify the execution mode, ii) return a result object, iii) do not return a header with the location (as there technically is no location). This issue was also related to the broader issue of how to choose between synchronous and asynchronous mode for job creation. The participants observed that indeed the WPS 2.0 specification has a jobID in the the status object, and therefore the OGC API - Processes specification should also include a jobID into the statusInfo object.
One of the observations made by the participants was in relation to Cross-Origin Resource Sharing (CORS) which allows a server to negotiate the locations and types of requests that are available to clients. Connecting to services on other servers requires the cooperation and adherence to the imposed rules by both sides to establish communication and safe operation. Various specific issues and bugs in the respective use of CORS headers and HTTP statuses were identified, analyzed and rectified during the Hackathon, immediately benefiting the server implementers. Some recommendations regarding CORS are presented in the subsection A.25.4 in the appendix.
There was a suggestion for an extension supporting triggers according to job status. In particular the suggestion was for the user/client to be able to specify triggers for conditions like: onSuccess
a Url to be triggered upon process completion, or onFail
a URL to be triggered on process failure, progressUpdate
a URL to be triggered by the job while progressing and should contain progress status. Participants considered whether such a capability might be more appropriate as an extension, perhaps associated with a pub/sub notification capability.
There was a suggestion to add the exception information to the status information at GET /processes/{id}/jobs/{jobID}
and remove the GET /processes/{id}/jobs/{jobID}/exception
endpoint. The participants considered whether an HTTP 201 code should be returned with POST /processes/{id}/jobs. The participants resolved that allowing for plural form results could address this issue, for example processes/{processId}/jobs/{jobId}/results/{resultId}
. Use of an HTTP 201 code was however inconclusive.
There was a suggestion for highly scalable and flexible processes that can be chained together and are centered around 'Collections' as inputs & outputs.
9.3. OGC API - Map Tiles
The participants identified three roots for API building blocks, namely the root of the service, collection ID, and collection ID combined the coverage ID. A need to combine these root paths with maps and tiles was identified. There was an observation made that if the roots are combined with maps and tiles, there is an opportunity to provide much more information through data tiles such as vector tiles or coverage tiles. There was also an observation made that if a style and style ID are concatenated with the path, then the API would be able to combine data tiles with portrayals of the information. There was a third alternative identified, which is the concatenation of both the aforementioned approaches. These paths have specific query parameters associated with them. Participants observed that such a capability may not be fully supported by OpenAPI 3.0.
There was a discussion about the Map Tiles API being split up into separate building blocks that can be used independently (e.g., together with either Features and/or Coverages APIs), or in combination with each other and how to divide the specification into modules (requirement classes). The justification for the suggested separation was that tiles can be used to deliver data, whether it is a rendered map, vector features, or a gridded coverage. Similarly, rendered maps can be used independently from tiles. This topic was not resolved during the hackathon.
There was a discussion about map retrieval being in fact a process that takes in one or more collections as inputs, parameters such as styles and producing a Red-Green-Blue-Alpha (RGBA) image "collection" as an output. The collections could be collections of vector features, coverages — collections of gridded cells, or images — collections of RGBA pixels.
There was a discussion about whether the response for maps should return raster or vector maps. Related to this was whether a map was at the same level as a collection. There was agreement that maps are not at the same level as collections.
There was a suggestion to normalize the case used by attributes of the tileMatrix construct. Before the hackathon some of the attribute names were in UpperCamelCase whereas others were in lowerCamelCase. Normalizing the attribute names would ensure consistency of naming and thus make it easier for developers to implement.
There was also an observation made that there is a need to determine where metadata fields supported by WMS could be applied in the OGC API - Map Tiles standard. The metadata fields supported by the WMS standard include: Name, Title, Abstract, KeywordList, Style, CRS, EX_GeographicBoundingBox, BoundingBox, Dimension, Attribution, AuthorityURL, Identifier, MetadataURL, DataURL, FeatureListURL, MinScaleDenominator, MaxScaleDenominator, queryable, cascaded, opaque, noSubsets, fixedWidth, and fixedHeight.
The participants observed that the extents and bounding box classes used by the OGC API - Map Tiles specification have been defined in different ways. The extent class defines a bounding extent as an array of numbers indicating bounding coordinates, whereas the boundingBox class defines the bounding coordinates as separate attributes for the lower and upper corner coordinates.
9.4. OGC API - Coverages
The participants agreed that OGC API - Coverages should inherit from OGC API - Common as much as possible. This meant that wherever a requirement is specified in OGC API - Common, if it is applicable to coverages, the OGC API - Coverages specification would reference the requirement in the OGC API - Common specification.
The participants agreed that a request for the coverages path would return a list of all of the coverage identifiers included in the collection.
There was also agreement that a request for the coverage description would only return the essential information instead of the complete metadata associated with the coverage.
There was discussion about how to support bounding box (BBOX) filters on multidimensional coverages. The participants expressed the need to inherit the BBOX and time parameters from OGC API - Common, however they also observed that there would be a need to identify a CRS for height. One of the suggestions was for each axis to have a separate coverage filter. The participants concluded that there is currently no construct in the Core part of the OGC API - Common specification that supports filtering of coverages.
There was discussion about the retrieval of coverages. The OGC API - Coverages specification was updated to allow for different ways for getting the coverages individually. Since not every format is suitable for transferring all of the coverage information, participants identified different ways for getting the different types of coverages. It was also noted that for applications that do not want to use collections, they can just use the coverages/{coverageid}
path.
There was a discussion about whether parameters, values and URL bases were case sensitive. This issue was observed to be applicable to all of the specifications. There was a suggestion that the OGC API - Common specification should specify a rule for case sensitivity and that that rule should be consistent with the relevant standard of the Internet Engineering Task Force (IETF).
All discussion points that could not be resolved where recorded as GitHub issues like https://github.com/opengeospatial/oapi_common/issues/29 or https://github.com/opengeospatial/oapi_common/issues/36.
9.5. OGC API - Common
There was a discussion about whether OGC API - Common should support the CRS:84 coordinate system (WGS84) by default. The participants observed that the collectionInfo metadata (returned for each collection) allows one to specify the CRS supported by the collection. The client can specify one of the other CRS if they do not support the default. For coverages, the default CRS was observed to be the native CRS. The participants concluded that there will be a default CRS for the API and the OGC API - Common specification should have complete control over the CRS and the default CRS should not constrain the resource.
The participants discussed what role version numbers would play within an OGC API, recognizing that the current suite of OGC web service standards require implementations to indicate the supported versions as a query parameter. The participants determined that the version of the standard would be reflected in the conformance class. Each conformance class would be made uniquely identifiable and any change to that conformance class would result in the creation of a new conformance class. It would therefore not be necessary to indicate the version on the standard on the path or the query parameters of an implementation of the OGC APIs. In addition, it should be the API that includes a version in its path, but not the OGC API paths as these are just sub-resources of the API and many APIs will include other resources not specified by OGC API standards.
The participants observed that there is a need for a CRS that is based on CRS:84 but that includes ellipsoidal height. EPSG:4979 and EPSG:4327 were suggested as a possible basis for such a CRS, but these use latitude/longitude as the axis order. It was agreed to discuss the issue of a height or elevation CRS with the WFS/FES SWG and the CRS Domain Working Group (DWG) at the OGC TC meeting in Leuven. The WFS/FES SWG passed a motion at the OGC TC meeting in Leuven, the week after the hackathon, proposing a new CRS named CRS84h that would be based on CRS:84 and include an additional axis for ellipsoidal height.
At the time of publishing this engineering report, the new CRS named CRS84h has been approved by the OGC Naming Authority (OGC-NA) Subcommittee of the TC and consequently published through the OGC Definitions Server. This achievement shows how coordination between a hackathon, DWG, SWG, the OGC Naming Authority (OGC-NA), and wider TC can lead to rapid results.
There was a discussion on whether the API definition resource should be mandatory at path /api
across all OGC API specifications. Earlier in the hackathon it was observed that some of the OpenAPI examples included the /api
resource whereas others did not. Participants supporting the addition of /api
as a mandatory path in the OpenAPI definitions pointed out that the resource would ensure that the API definition is always a complete representation of the server implementation. In contrast, participants supporting the optional use of the /api
resource pointed out that the API definition can already be found through the use of the rel="service"
link provided by the landing page and that clients do not need a resource for the OpenAPI definition in the OpenAPI definition as they already have it. It was therefore agreed that there would be no requirement for providing the API definition at path /api
or to include it in the API definition itself.
9.6. Technology Integration Experiments (TIE)
Several Technology Integration Experiments (TIE) were completed during the Hackathon. Table 3 shows the services and client applications that were deployed and bound together during the hackathon. The table also identifies the OGC APIs that were implemented to achieve the integration.
Services\Client | Hexagon | Helyx | SigmaBravo | Esri | Solenix | EURAC | Sinergise | GeoPackage/MapCache | MiraMon |
---|---|---|---|---|---|---|---|---|---|
52 North |
Processes |
Processes |
|||||||
CubeWerx |
Processes |
Processes |
|||||||
Esri |
Map Tiles |
Map Tiles |
Map Tiles |
Map Tiles |
|||||
Helyx |
Processes |
||||||||
pygeoapi |
Features |
Processes |
Features |
||||||
Geoserver |
Features |
||||||||
Spacebel |
Features, Catalogue |
Processes |
|||||||
West University of Timisoara |
Processes |
Processes |
|||||||
rasdaman |
Coverages |
Coverages |
|||||||
EOxServer |
Coverages |
||||||||
MAGE |
Features |
||||||||
ldproxy |
Features |
||||||||
ZOO-Project |
Processes |
||||||||
MiraMon |
Map Tiles |
Note
|
Services on rows and Clients on columns |
10. Findings
10.1. Key Findings
One of the key findings of the hackathon was that the draft OGC API standards are implementable. This was evidenced by the implementations developed by many of the participating organizations at the hackathon.
Another key finding is that the 'building-block' principle, adopted by the different draft standards, allows for a common core to be specified. This was evidenced in the use of common capabilities such as /collection
paths and support for bounding box (BBOX) queries.
Another key finding is that when interfaces built on a combination of HTTP, HTML and JSON are standardized across different geospatial applications, the interfaces can be viable enablers of interoperability between the applications. This was evidenced by the successful TIEs achieved during the hackathon.
Additional findings are presented in the following subsections.
10.2. Experiences
The first objective of the hackathon was to develop, deploy and test services/clients that support OGC APIs. The hackathon participants were able to develop and deploy services and clients during the hackathon, as documented in Table 3. The participants were also able to successfully bind together many of the services with client applications provided by other participants, using OGC APIs. This confirms that the first objective of the hackathon was fully met.
A second objective of the hackathon was to suggest improvements for a common core. Some of the discussions around the OGC API - Common specification included default support for the CRS:84 coordinate system and the role of version numbers. The discussion that began shortly before the hackathon on the need for a new CRS that adds ellipsoidal height to CRS:84 was progressed during the hackathon and has resulted in a proposal being passed by the WFS/FES SWG and approved by the TC. The new CRS has been approved by the OGC-NA for publishing on the OGC Definitions Server. Further, the discussion on the role of the /api
resource has resulted in consensus between the various SWGs that the API definition does not have to be resource inside the API at path /api
. These discussions and the resolutions resulting from them confirm that the second objective of the hackathon was also met.
A third objective of the hackathon was to define rules and guidance that can be documented. Several edits to the OGC API specifications were made on the lead up to the hackathon, and during the event. These edits included additions and deletions of some of the rules and guidance in the specifications, as well as improvements to some of the existing rules and guidance. Github statistics show that more than 4600 additions and 3200 deletions were made to the draft API specifications as an immediate result of the hackathon, thereby confirming that the third objective of the hackathon was also met.
A fourth objective of the hackathon was to validate work that has been completed to date. The successful implementation, by multiple different organizations, of the OGC API specifications supported the validation of the prior work (i.e., the approach taken for the various OGC API specifications). The hackathon also provided the opportunity to invalidate or rethink specific aspects of some of the specifications. The fact that the different specifications extended the OGC API - Common specification, supports the view that the approach taken for organizing and structuring the OGC API specifications was validated by the hackathon. This confirms that the fourth objective of the hackathon was also met.
A fifth objective of the hackathon was to contribute to the GitHub repositories. Figure 9 presents the total number of commits made to Github repositories for OGC APIs for Processes, Map Tiles, Common and Coverages. Figure 8 presents the total number of issues made to Github repositories for OGC APIs for Processes, Map Tiles, Common and Coverages. The commits and issues from the lead up to the hackathon and during the hackathon confirm that the fifth objective of the hackathon was also met.
This subsection has reflected on all of the objectives of the hackathon and confirmed that they were all met. The next section identifies lessons learnt from holding the hackathon.
10.3. Lessons learnt
10.3.1. Duration of the hackathon
Two of the participants expressed concerns that the duration of the hackathon was rather short. There was a suggestion that a minimum of three days may have been more appropriate. To an extent, the approach taken to incrementally ramp up towards the hackathon date addressed some of these concerns. However, it is accepted that a three-day hackathon could have led to more outputs. A three-day hackathon could cover the following, for example:
-
Day 1: Discussions and revisions to the draft standards;
-
Day 2: Implementation of the draft standards; and
-
Day 3: Design and implementation of Executable Test Suites of the draft standards
10.3.2. Scheduling of the hackathon
It cannot be ignored that the scheduling of the hackathon during the week preceding the OGC TC meeting in nearby Leuven made it possible for some of the participants to travel to both events. This aspects of the scheduling made a difference for participants that had travelled from abroad. In some cases however, the scheduling meant that some interested parties could not attend the hackathon due to its proximity, in scheduling, to the TC meeting. Overall however the proximity to the TC meeting proved to be helpful.
10.3.3. Motivation to participate
In some hackathons prizes are awarded, ranging from a few hundred to a million dollars (USD). In organizing the OGC API Hackathon, OGC staff considered the goal of the hackathon in relation to the likely motivation of participants. Given that the goal of the hackathon was to advance the OGC API specification, collaboration between different organizations became a key consideration. A decision was therefore made to offer travel support to any participants that applied for such support, instead of offering a competition prize. A review of the motivation for various participants to take part in the hackathon supported this decision. Below are some examples of the motivation of some of the participants to participate, extracted from Implementations of OGC APIs:
-
"Evolution of the OGC specifications to a modern, developer-friendly API is essential"
-
"We wanted to participate in this hackathon event in order to understand well the intent and orientation of OGC APIs, as well as to align as much as possible the implementations, in order to make them compatible"
-
"To get more information about the direction followed by the working groups for the different standards, as well as to get answers to some questions we have got about the OGC API - Processes specification specifically"
-
"To help solve the discoverability problem…to facilitate making life easier for finding data through the new OGC API specifications"
-
"To share [our] expertise as a long-term implementer and user, to support the advancements of OGC standards related to map tiles, coverages and processes"
-
"We would like the implemented APIs to be consistent with, and conform to any OGC API standards"
The sample of statements presented above suggests that the advancement of open standards, on its own, can be useful as a motivator for participation. In situations where collaboration across organizations is not a key consideration, a competitive hackathon offering prizes would be appropriate.
10.4. Key recommendations
Based on the results and findings of this hackathon, this engineering report makes the following recommendations.
-
The WMS SWG should consider separating the Map Tiles API into separate building blocks (specifications), one for maps and the other for tiles.
-
The OWS Common SWG should continue to work on achieving a common understanding for OGC API - Common and should continue to seek to get buy-in from all groups representing the various resources like features, maps, tiles, processes, coverages, etc.
-
The WCS SWG should continue to work on specifying the concept of collections of coverages.
-
The OAB should consider potential revisions to the OGC Reference Model to reflect the role of the OGC APIs.
-
Future OGC API hackathons should include a convergence phase where ideas from the various groups are compared and commonalities can be extracted for the Common API.
-
The WCS SWG should establish a clear correspondence between WCS Core and all WCS extensions; this should then be related to the emerging OGC API - Coverages Specification.
-
The WPS SWG should consider how a server might facilitate the handling of a large number of processes (for example through pagination or a higher-level grouping of thematically similar processes).
-
The WPS SWG should consider further alignment between the OGC API – Processes specification and WPS 2.0 schemas.
-
The Catalogue Services SWG should reconcile the time and bbox related search parameters from the OGC OpenSearch Geo and Time Extensions (OGC 10-032) and the OGC API - Features specification (OGC 17-069r2).
-
Future OGC hackathons should be three days long, if possible, and allow a larger amount of time to be spent in shared sessions where portions of the OGC API - Common specification can be discussed and their suitability to the various services verified.
10.5. Future Work and Next Steps
Work on OGC APIs will continue within the SWGs, during teleconferences and OGC TC meetings. Additional activities are already being planned to support some of the work. Some of the initiatives being planned include the following.
-
OGC Testbed-16, which is collecting requirements in September and October 2019 and expected to begin in April 2020.
-
OGC API Sprints, planned for the end of 2019 or beginning of 2020. One sprint is envisaged to cover APIs for catalogues and filters, and another sprint is envisaged to cover APIs for coverages and processing.
-
OGC API Hackathon 2020, a follow-on hackathon event around the middle of 2020. In addition to OGC APIs, this event might also involve community projects such as STAC. The scope of the event will be decided in early 2020.
A detailed roadmap for OGC API development will be published by the end of 2019.
Appendix A: Implementations of OGC APIs
This section describes implementations from many of the participating organizations.
A.1. 52°North GmbH
52°North is an open international network of research, industry and public administration organizations that partner in a collaborative process of geomatics R&D. All software developed within the 52°North R&D process is published under an open source license.
A.1.1. Motivation to Participate
One of 52°North’s core topic is Web-based processing of geospatial data. Currently, 52°North leads the development of the OGC API – Processes standard within the OGC WPS SWG. 52°North aimed to use the hackathon to:
-
get feedback from developers from inside and outside the OGC,
-
find any blocking issues,
-
test 52°North’s implementation of the Executable Test Suite for the API,
-
discuss the relationship with the OGC API - Common specification.
A.1.2. Implemented Solution
52°North implemented and deployed an instance of the 52°North JavaPS software, which is an implementation of the OGC Web Processing Service (WPS) standard and the OGC API - Processes specification. A screenshot of the deployed service is shown in Figure 10. The software was configured to offer an interface that conforms to the OGC API - Processes specification.
The implementation is available at http://geoprocessing.demo.52north.org:8080/javaps/rest/
Figure 11 shows a simple user interface to submit new processing jobs.
URL: http://geoprocessing.demo.52north.org:8080/javaps/rest/processes/org.n52.wps.server.algorithm.SimpleBuffer
A.1.3. Proposed Alternatives
The following points were discussed:
Align the API to the WPS 2.0 standard
The OGC API - Processes has its origins in a Public Engineering Report (ER) of the OGC Testbed 12 from 2016 [20]. This ER described a REST/JSON binding for WPS 2.0. The JSON schemas were very closely aligned to the WPS 2.0 XML schemas. Since 2016 the JSON schemas were modified, more specifically simplified. This simplification was seen as undesirable by the hackathon attendees. Therefore, the SWG will have to consider aligning the JSON schemas with the WPS 2.0 XML schemas again.
Example of JSON schema not aligned: Status info
WPS 2.0 XML StatusInfo element
<?xml version="1.0" encoding="UTF-8"?>
<wps:StatusInfo
xmlns:wps="http://www.opengis.net/wps/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wps/2.0 ../wps.xsd">
<wps:JobID>FB6DD4B0-A2BB-11E3-A5E2-0800200C9A66</wps:JobID>
<wps:Status>Accepted</wps:Status>
<wps:EstimatedCompletion>2014-12-24T23:00:00Z</wps:EstimatedCompletion>
<wps:NextPoll>2014-12-24T16:00:00Z</wps:NextPoll>
<wps:PercentCompleted>30</wps:PercentCompleted>
</wps:StatusInfo>
Corresponding JSON element
{
"status": "accepted",
"message": "Process started",
"progress": 0,
"links": [
{
"href": "http://processing.example.org/processes/EchoProcess/jobs/81574318-1eb1-4d7c-af61-4b3fbcf33c4f",
"rel": "self",
"type": "application/json",
"title": "this document"
}
]
}
Proposed changes:
-
Add element containing JobID
-
Add element containing EstimatedCompletion
-
Add element containing NextPoll
Another example would be to re-introduce nested inputs to the JSON schema, see this issue: https://github.com/opengeospatial/wps-rest-binding/issues/33
Other discussion points
Other discussion points concerned extensions to the API, e.g., an extension that enables specifying callbacks for asynchronous execution or a transactional extension.
Also, the possibility was discussed to use JSON schema for the process description, instead of using a Swagger/OpenAPI specification.
In a related discussion, the idea came up to use only OpenAPI to describe WPS, i.e., discard most of the JSON schemas and only use certain building blocks to define a WPS. This approach will be followed in the OGC Routing Pilot. The results will be discussed at the OGC TC/PC meeting in September.
All discussions are captured in the GitHub issues section: https://github.com/opengeospatial/wps-rest-binding/issues/
A.1.4. Experiences with OGC API Specifications
52°North uses the OGC API - Processes in a variety of projects and considers the specification to perform well. The API is also heavily used by other participants e.g. in the OGC Testbeds. The JSON is lightweight and 52°North considers the JSON to be more readable than the XML. The links in the JSON let the users/clients easily find the relevant resources, e.g. from the list of processes, to a single process description, and then to the job submission. The HTML encoding also increases usability, e.g., letting the user quickly submit jobs via a lightweight HTML POST client.
A.1.5. Other Impressions & Recommendations
The hackathon was very well-organized and it was good to see so many people interested in the API development. 52°North recommends holding similar hackathons more regularly in order to get developers from outside the OGC involved in the standardization process early. The OGC API – Processes specification now has several implementations and the editor has received valuable comments. This gives fresh impulse to continue the work on the API and to eventually finalize it.
A.2. CREAF
The Centre for Ecological Research and Forestry Applications (CREAF) is a public research institute created in 1987 and located in Catalonia. It is part of the Autonomous University of Barcelona (UAB). CREAF’s main objective is to generate knowledge and create new methodological tools in the fields of environmental sciences and ecology. CREAF’s research activities are broader than a core on function and diversity of natural ecosystems and also include research and development on big data tools, geospatial standards and data quality.
The CREAF Grumets research team is a multidisciplinary group of people that developed the MiraMon GIS&RS that has been moved to the web using advanced international standards and imaginative innovation strategies.
CREAF is further committed to comply to and improve Open Standards particularly those of the Open Geospatial Consortium (OGC) (http://www.opengeospatial.org/).
The participants from CREAF are Núria Julià, lead developer of MiraMon software, and Joan Masó, co-chair of the WMS and OWS Common SWGs at OGC.
A.2.1. Motivation to Participate
CREAF’s main motivation was to contribute to the next generation of OGC standards. The CREAF team wants to bring in their expertise gathered over the years in both writing and implementing OGC standards such as WMS, WMTS, WCS, WPS, etc.
Also, CREAF wants to make a case for having an OGC API - Common standard that can be the basis for other OGC API standards. OGC API - Common should be based on the common parts of the current OGC API Features. In addition, CREAF wants to propose a merge of WMS and WMTS in a single OGC API modular standard based on the proposed OGC API - Common specification, as well as to follow the progress of other groups.
A.2.2. Implemented Solution
CREAF implemented a limited version of the draft OGC API - Map Tiles specification in the MiraMon Web Server and was able to offer data of the UK area-of-interest supplied by the organizers. CREAF also modified the MiraMon Web Client to be able to support the new API syntax for getting a map.
A demonstration of the OGC API - Map Tiles implementation, using the data provided for the scenario, is available online at http://www.ogc.uab.es/OGCHackanthon/
A.2.3. Proposed Alternatives
During the hackathon the idea emerged of a map that can be created by applying a style and then requested as tiles. This way, tiles emerged as a building block that can be added to other resources and maps are just another data resource. Actually, the possibility of combining implementations of an OGC API for tiles with other APIs was already demonstrated in the OGC Vector Tiles Pilot [21]. The OGC API - Map Tiles specification is designed in a way that its implementations can also be combined with implementations of the OGC API - Coverages specification to retrieve small tiles of the gridded data (e.g. in GeoTIFF format).
The main issue with the current approach of combining maps and tiles in a single standard is modularity. There is a need for further discussions on how to divide the specification into small pieces (conformance classes) that can be combined in different ways.
The OGC API - Features specification defines a collection as a set of 'items' (a.k.a features). During the hackathon it became clear that the concept of "collection" needs to be generalized to any type of data type, for example coverages. After the hackathon, the discussion continued and it was proposed that, in some cases, the very same collection could be requested as features, a coverage, a map, etc.
A.2.4. Experiences with OGC API Specifications
CREAF has from the beginning been committed to complying to and improving OGC standards. UAB-CREAF has been an OGC member for more than 10 years and, at present, UAB-CREAF has produced several standards that mainly relate to WMTS but also with WCS and JPEG2000. UAB-CREAF has participated in eight OGC Innovation Program initiatives producing many Engineering Reports.
For more than 10 years, CREAF has been committed to developing an integrated 2D client that is based on OGC standards (including WMS, WMTS, WCS, WFS and SOS). The client application can be downloaded from here: https://github.com/joanma747/MiraMonMapBrowser
A.2.5. Other Impressions & Recommendations
CREAF’s impression is that the OGC TC process provides a forum for discussing standards but the length of the sessions it too short for doing actual writing work. The Interoperability Experiments run for about nine months, providing enough time to develop and test implementations and demonstrate interoperability but they might not be agile enough. The hackathon format is great to bring representatives from the various groups at OGC around the table to get to a common understanding on the OpenAPI standards and to start modifying current implementations to adapt to the new OGC API requests and responses. OGC APIs are based on OpenAPI that is a description language (service metadata). During a two-day event, it is not possible to fully develop a server that produces OpenAPI documents automatically or a client that read and act upon them. As a result, only the most direct approach can be implemented leaving out most of the details. It is important that all that was discussed and started to be implemented at the hackathon continues in other activities so that it can result in something applicable and comprehensive.
A.3. CubeWerx Inc.
CubeWerx has been involved in the OGC for more than 20 years and has either led or participated significantly in the development or almost every OGC web service specification. CubeWerx is a strong supporter of the current activities in OGC to move from the "old web architecture" (i.e., XML-POST or KVP-GET) to the new OGC API framework initiated by the work done recently by the WFS/FES SWG.
At the moment, CubeWerx are:
-
co-editors of the OGC API - Features - Part 1: Core" release candidate
-
co-chairs of the WFS/FES SWG
-
chair pro tempore and primary author of the Catalogue Service (CAT) 4.0 SWG charter and API definition
-
participants in the OWS Common SWG
-
participants in the WPS SWG
-
implementors of the current REST/JSON binding for WPS
-
participants in OGC Testbed-15
A.3.1. Motivation to Participate
The current work in OGC to define a new OWS Common is based in large part on the work done by the WFS/FES SWG for the "OGC API - Features - Part 1: Core" specification. Since CubeWerx is a co-editor of that document, CubeWerx wanted to be present at the hackathon in order to monitor and participate in the validation of the common aspects of the OGC API – Features specification that are relevant to other OGC web services such as WPS and catalogue.
For the last few OGC testbeds, CubeWerx has participated in the Earth Observation Cloud (EOC) threads developing an Application Deployment and Execution Service (ADES) which is based on WPS. In the last round (OGC Testbed-14), the thread developed a REST/JSON binding for the WPS API which CubeWerx implemented. This API, however, is different than the REST/JSON binding currently being developed for the WPS API by the WPS SWG. So, a primary motivation for CubeWerx’s participation in the API hackathon was to update our current WPS' REST/JSON API to match the API currently being developed by the WPS SWG.
CubeWerx has been involved with the WFS from its very beginning in OGC and has implemented most draft and adopted versions published by OGC including the latest "OGC API - Features - Part 1: Core" version. CubeWerx has also participated in a number of WFS-related hackathons, using each opportunity to test and refine CubeWerx’s implementation. The OGC API hackathon provided a further opportunity for CubeWerx to make final adjustments to its implementation based on the very latest version of the "OGC API - Features - Part 1: Core" draft standard.
CubeWerx has been involved with the web-based OGC catalogue for many years and was a co-editor of the OGC® Catalogue Services 3.0 Specification - HTTP Protocol Binding. CubeWerx has implemented every draft and adopted version of this specification using ebRIM as its information model. For the past several months, CubeWerx along with a number of other OGC members has been working to form a new catalogue SWG whose primary task would be to update the OGC® Catalogue Services 3.0 Specification - HTTP Protocol Binding based on the new OGC API framework. The hackathon provided an opportunity for CubeWerx to meet with other interested participants, present the current state of the OGC API catalogue work and further discuss the development of the API and the charter for a new SWG.
A.3.2. Implemented Solution
CubeWerx OGC web services are implemented in C as part of a single executable named "cubeserv." In preparation for the hackathon, CubeWerx deployed a couple of WFS’s and a WPS. During the hackathon, the implementations were updated in real time based on feedback from other participants using the services.
Web Feature Services
The CubeWerx WFS implements all draft and adopted versions of the WFS specification including the latest "OGC API - Feature - Part1: Core" draft. The service supports a wide variety of output formats including GML and GeoJSON. Two servers were deployed; one offers VMAP Level 0 foundation data at:
and a second offers US building footprints at:
Web Processing Service
The CubeWerx WPS implements versions 1.0 and 2.0 of the WPS specification as well as the REST/JSON binding for WPS defined in OGC Testbed-14 and the REST/JSON binding currently being developed by the WPS SWG. The following server was deployed for the hackathon:
A.3.3. Proposed Alternatives
OGC API - Features
Two issues were raised in the hackathon with regard to the OGC API - Features specification. The first issue was related to the XML schemas defined for WFS 3.0 and streaming (see FeatureCollection (xml) schema and streaming). The second issue was related to the fact that the OGC API - Features specification specifies that the /api path not be defined in the service’s OpenAPI document (see Endpoint /api
missing from OpenAPI specification). Both issues were addressed in the release candidate and the details of the resolutions can be found in the links mentioned in this section.
Web Processing Service
The current REST/JSON binding for the WPS defines a schema for describing processes that is based on the XML schema that was developed for the previous version of the WPS. This schema is, in turn, is described in OpenAPI using JSON schema in the service’s processes description document (accessible via the /api path). So what we have here is a process description language (i.e. JSON schema in OpenAPI) being used to describe another process description language (i.e. the bespoke WPS process description). It was pointed out during the hackathon, that the WPS SWG could simplify things significantly if the SWG simply discarded one of these process description languages. Since one of the goals of the current OGC API work is to make the implementation and use of OGC web services easier for non-geo-experts, it then makes sense to discard the bespoke process description language currently used in the WPS and simply use JSON schema in OpenAPI to describe the processes offered by the service.
There are a couple of issues with this alternative approach, however.
-
First, we need to validate whether JSON schema in OpenAPI can cover the entire scope of capabilities currently offered by the WPS process description — and of course validate that the current scope of the WPS process description language makes sense.
-
Second, JSON schema — like GML — is a huge specification and if the WPS uses that as its primary process description language, it might be wise to consider defining a highly constrained profile. Specifically, as was done with GML Simple Features, fragments or building blocks of JSON schema syntax could be defined that may then be combined to create a complete process description (i.e. inputs and outputs) within an OpenAPI document.
Note
|
It should be pointed out that the WFS 2.0 standard covered a wide range of capabilities most of which was not used and one of the important outcome of the currently OGC API work in the WFS/FES SWG was to prune that list of capabilities back to a simple core and then build out from there based on desired needs. A similar exercise should be undertaken for all OGC web service as they transition from the "old web architecture" to the new OGC API framework. This hold true for the WPS as well. |
This topic was discussed with hackathon participants working with the WPS and it was agreed that the discussion would be continued in the SWG. It was also agreed that several participants (interactive instruments and CubeWerx) would further investigate the implications of such a move and present their work to the SWG. interactive instruments is currently working on the Open Routing API Pilot and is using the alternative approach described above (i.e. not using the bespoke WPS process description language) to define the routing API. CubeWerx was a participant in the EOC threads in OGC Testbed-13 and OGC Testbed-14 and developed an ADES (i.e. WPS) which will be enhanced to also use this alternative approach for describing processes.
OGC API - Catalogues
A group of interested participants gathered for a break-out session during the hackathon to discuss the current state of CAT 4.0 (i.e., OGC API Catalogue). CubeWerx presented the work currently completed which includes a charter document for a new catalogue SWG and a preliminary definition of an API using OpenAPI. Details of both these work items can be found here: https://github.com/opengeospatial/CAT4.0.
Topics discussed in the break-out session included:
-
the name of the specification;
-
alignment with the Spatio-Temporal Asset Catalog (STAC) and "OGC API - Features - Part 1: Core" specifications; and
-
whether the catalogue will be restricted to formal metadata or can include other types of records (e.g. code lists).
On the later point, it should be explicitly mentioned that the intent is for CAT 4.0 to be a generalized catalogue/registry not specifically restricted to formal metadata (e.g. FGDC or ISO19115/19119). The idea is that the catalogue may be used to register any type of resource, tag those resources with zero or more classification schemes and maintain associations between resources registered in the catalogue and with external resources.
Post hackathon, the charter for a new catalogue SWG was presented at the Leuven TC and is currently being prepared for review and vote but the OGC staff.
A.3.4. Experiences with OGC API Specifications
As has been mentioned or implied thus far, CubeWerx is transitioning its implementations of OGC web services to also support the new OGC API framework. Thus far, CubeWerx have implemented the "OGC API - Feature - Part 1: Core" release candidate and have also implemented a significant number of extensions for WFS 3.0 using the OGC API framework. CubeWerx have also implemented the REST/JSON binding of the WPS and have started implementing a catalogue based on the API defined be the CAT 4.0 group.
CubeWerx’s experience thus far is that services based on the new OGC API framework are easier and quicker to implement than services based on previous OGC web service specifications.
CubeWerx have also deployed services based on the OGC API framework into various projects and their experience has been that, from a client perspective, the behavior of the services is much more predictable and stable thus making the development of clients significantly simpler than was the case using the old OGC web service architecture.
A.3.5. Other Impressions & Recommendations
CubeWerx is very encouraged to see that OGC is, in a manner of speaking, returning to its roots where software and specifications are developed concurrently so that specifications are validated in code. These implementation-driven hackathons are, in our opinion, a key element in defining specifications that are developer-friendly and will thus be adopted and implemented by the wider web community.
A.4. Cologne Government Regional Office - Geobasis NRW
Division 7 of the Cologne Government Regional Office is North Rhine-Westphalia’s central service for geographic reference data and top-quality geo-products and services. Division 7 has statewide responsibility for collecting, storing, handling and making available basic topographic geodata. The basic geodata provided by Division 7 (coordinates, elevations, property boundaries, size and use of real estate, topographic information etc.) are needed for a wide range of purposes including planning, construction projects, transport and the supply of basic community services, nature conservation and environmental protection, valuation of real property, real estate transactions and mortgage borrowing. Against a background of rapid technological progress and changing environmental awareness, the division’s services are now in demand from new sections of the community. Rather than chiefly asking for analogue data such as maps, plans and lists, users increasingly prefer digital information which they can integrate into existing databases.
A.4.1. Motivation to Participate
The motivation for Geobasis North Rhine-Westphalia (NRW) was to implement OGC specification for Map Tiles in their application TIM-online 2.0 and to getting more information about the work in working groups.
A.4.2. Implemented Solution
During the OGC API Hackathon event in London, Geobasis NRW implemented the OGC API - Map Tiles specification by using the web service provided by ESRI (https://ogc-tiles-esri-server.azurewebsites.net/api/).
Before the OGC API Hackathon, Geobasis NRW implemented the OGC API – Features specification by using ldproxy (https://www.ldproxy.nrw.de/). Have a look on the functionality:
-
Extras / Verwaltungseinheit
-
Extras / Flurstück
-
Extras / Gebäude
Implementation available: https://www.tim-online.nrw.de/ogc-hackathon/
A.5. Ecere Corporation
Ecere Corporation has been supporting the OGC API development through participation in various Innovation Program activities (e.g. Testbeds, Vector Tiles and Routing pilots) and working groups. Ecere offers the GNOSIS cross-platform geospatial visualization tools, leveraging GPU hardware acceleration with support for 3D, Augmented, Virtual and Mixed Reality. The technology is built on top of its open-source cross-platform Ecere SDK and eC programming language. As part of its geospatial suite, Ecere offers a map server, a GIS tool as well as a Software Development Kit with support for OGC services (from both the client and server sides).
A.5.1. Motivation to Participate
Ecere feel the most important goal that the OGC API has the potential to achieve is unifying access to different types of geospatial data through a modular, simple and consistent interface. Ecere are of the opinion that the great variability and separate nature of classic OGC services types (WFS and WCS in particular being completely distinct from W(M)TS) has been problematic and holding back direct access to raw data. The OGC API can address these issues, making it much easier to work with raw data and therefore enabling more efficient and more flexible client-side maps rendering, which is especially important for 3D views. As a result of our work on Vector Tiles in Testbed 13, Ecere had proposed back in 2017 the concept of a Unified Map Service (UMS) as a very simple example of how these challenges might be addressed.
For these reasons, Ecere were keen to participate in this hackathon. Our focus during the hackathon has been on contributing ideas and suggesting ways the modularity (building blocks approach) and consistency for different geospatial data types (vector features, coverages — gridded in particular, imagery) can be maintained. Ecere primarily interacted with the Maps and Tiles group, as well as the Processes group.
Ecere also wanted to take the opportunity to complete support for the OGC API in the newest iteration of our GNOSIS geospatial software (both clients and services).
A.5.2. Implemented Solution
During the hackathon, Ecere made great strides of progress towards our new OGC API service and clients, which Ecere have continued improving since. The latest version of our experimental service is hosted at http://maps.ecere.com/geoapi/ and our client applications are being used in OGC Innovation Program activities such as the Routing pilot and Testbed 15, for which demonstration videos will likely be published as the initiatives conclude.
A.5.3. Experiences with OGC API Specifications
Ecere have previously implemented server-side support for WMTS and WFS, and client-side support for WMS, WMTS and WFS. Ecere also regularly attend Technical Committee meetings and participated in several OGC Innovation Program initiatives. Ecere are looking forward to fully supporting all of the common modular blocks of the new OGC API, and hope to achieve compliance as the specifications are finalized.
A.5.4. Other Impressions & Recommendations
On the topics of Map and Tiles, Ecere were strongly recommending to split them as separate building blocks: Maps, and Tiles. This is because Tiles can be used to deliver data, whether it is a rendered map, vector features or a gridded coverage. And rendering maps can be used independently from tiles. Ecere are happy that the specifications seems to be heading this way. Ecere also highlighted the fact that rendering Maps on the server is in fact a process, and that a good Processes API should easily be usable for the foundation of such a Maps API. The characteristics of such a Process API would also be beneficial, in many other use cases, as described below.
Ecere submitted a new idea to the OGC API - Processes GitHub repository, discussing how to achieve highly scalable and flexible processes that can be chained together and are centered around 'Collections' as inputs & outputs.
One might see a process as acting on 0, 1 or multiple "collection" (data) input, possibly in addition to parameters, and outputs 0, 1 or multiple "collection" (data) outputs.
In addition to nicely tying OGC API - Processes with Features and Coverages, it makes daisy chaining very easy to accomplish.
The "data delivery" building blocks (e.g. Features & Coverages) provide the mechanisms by which to identify "collections" of vector features or grid cells (data), and retrieve them. Built-in space partitioning mechanism such as bounding boxes or more complex sub-setting can be used to efficiently retrieve part of the data, or special building blocks such as Tiles or DGGS can offer additional exchange mechanisms. This makes processes highly scalable as different tiles, DGGS cells or subsets of the data could be processed in a massively parallel manner, all through a potential chain of processes. The specific space partitioning modular API blocks (e.g. Tiles or DGGS cell), or the base Features/Coverage mechanisms can be negotiated at any exchange level throughout the chain.
Since it seems that the community has to stick with the generic but loaded term of "collections" e.g., for OGC API - Features, Ecere consider that it would be a mistake to overload the term of "collection" with a meaning other than a "set of geospatial data with particular characteristics", such as a generic group of things (e.g., a list of available processes). One can imagine the confusion if what OGC processes do is act on "collections", while "collection" is also used to mean a regrouping of multiple processes.
A simple example is vectorization of a Digital Elevation Model (DEM). You have a collection representing a DEM (it is important here that the level of a "collection" should represent a "collection of gridded cells", not a collection of a collection of gridded cells, unless said collection of collections is intended to be treated as if the cells were all together in one single DEM layer). This is your input collection to a "vectorization" process. You invoke it with parameters, and you get a "vector" collection back. You can then chain another process working on a vector collection.
It can also be seen that rendering a "map" (as in the Maps API) is clearly a process rendering 1 or more "collections", taking a style as parameter, and producing an imagery ((A)RGB natural color image) "collection" as an output (the rendered map). The result can be retrieved through various data partitioning mechanisms (e.g., bounding box, or tiles), and the process can be optimized to render portions as required, cached, in parallel, etc.
Ecere think it makes a lot of sense for OGC API - Processes to support both synchronous (POST and get the 200 output result) and asynchronous modes, Maps and Routes being an important example of how this is useful for simple POST requests returning an output collection (e.g., a route or rendered map) right away.
There could be standardized "well known" processes such as the Maps Rendering process, the Routing process (open routing pilot), Vectorization process, etc., which would further greatly enhance interoperability and choreography of different processes. Most processes would also provide the output in a "collection" interface, which any other process, data delivery, or geospatial viewer supporting the OGC API would readily support. This also makes it possible to only process data on an as-needed basis, e.g., when first visualizing the output (or being requested by further down the raw data-process-visualization daisy chain) for a certain area or resolution level.
The concept of workflow could be simply described as a chain of OGC API resources and parameters. The actual communication between any 2 services in the chain can be negotiated (e.g., supporting tiles, supporting DGGS, supported data formats), and need not be included in that workflow description, so that alternate implementations with different support could apply the same workflow. All this makes for a great universal geospatial processing framework by which all processes and data collections become readily compatible, and one can easily discover and combine data sets from all over and using processes hosted anywhere.
Additional background can be found in another idea submitted to the OGC API - Common repository as issue ticker number 17.
A.6. EOX IT Services GmbH
EOX IT Services GmbH (https://eox.at) offers solutions and services in the geodata domain in general and in the Earth Observation domain in particular (https://eox.at/software-products/).
EOX is strongly committed towards utilizing and contributing to Open Source Software for example via the EOX GitHub organization (https://github.com/eox-a).
EOX is further committed to comply to and improve Open Standards particularly those of the Open Geospatial Consortium (OGC) (http://www.opengeospatial.org/).
EOX is your technology partner of choice in major European environment monitoring and space programs like the European Copernicus initiative (http://www.copernicus.eu/).
The participants from EOX were Fabian Schindler, lead developer of EOxServer, and Stephan Meißl, co-chair of the Coverages DWG and WCS SWG at OGC.
A.6.1. Motivation to Participate
The main motivation for EOX was to actively contribute to the next generation of OGC standards. The EOX team wanted to bring in their expertise gathered over the years in implementing current and previous OGC standards like WMS, WMTS, WCS, WPS, OpenSearch, etc.
Also, EOX wanted to make sure that Coverages do not fall behind the other OGC API specifications. EOX wanted to ensure that the OGC API - Coverages specification became more usable, in particular, that client implementers have a greatly improved experience.
A.6.2. Implemented Solution
EOX implemented the OGC API - Coverages draft in EOxServer in the OpenAPI branch (https://github.com/EOxServer/eoxserver/tree/openapi).
A demonstration using the provided Sentinel-2 data is available online at https://ows.eox.at/openapi/
A.6.3. Proposed Alternatives
The work on OGC API - Coverages needs to also address performance requirements. While it is a great feature to support arbitrary subsetting requests, allowing servers to tell clients which subsets are served with optimum performance is needed. Something similar to WMTS in the WMS/WMTS pair is missing for WCS.
It became quite clear during the hackathon that simply adding OpenAPI as an alternate protocol binding to WCS 2 is not enough. Core concepts need to be added, like grouping into collections, or reviewed and potentially revised, like requesting output format specifics.
A.6.4. Experiences with OGC API Specifications
EOX has from the beginning been committed to complying to and improving OGC standards. EOX is a longstanding associate member of OGC and actively contributes to the Coverages DWG and WCS SWG work for example with editing EO-WCS and providing reference implementations as well as in various testbeds.
Starting more than 10 years ago mainly with server-side implementations recently more and more client side development is done like EOxC (https://github.com/eoxc) or geotiff.js (https://geotiffjs.github.io).
A.6.5. Other Impressions & Recommendations
The hackathon was great to bring representatives from the various groups at OGC around the table to get to a common understanding and identify future directions. Working together on the common understanding specified in OGC API - Common should continue and buy-in from all groups representing the various resources like features, maps, tiles, processes, coverages, etc. is crucial to the success of the next generation of OGC standards. This task needs to take into account the various stages different standard drafts are in making it not an easy task.
A.7. Esri UK
Esri is a provider of Geographic Information Systems (GIS) software and solutions to a wide range of organizations. Esri software has been deployed in more than 350,000 organizations, including large cities and many national governments. Esri make ArcGIS mapping and analytics software.
A.7.1. Motivation to Participate
Evolution of the OGC specifications to a modern, developer-friendly API is essential.
A.7.2. Implemented Solution
To date, Esri have not implemented any of the new draft OGC API standards in their released software. They have however, been working on various R&D prototypes of server and client.
A.7.3. Experiences with OGC API Specifications
Esri has been involved in the OGC since its inception, and has widely implemented many other OGC standards in both server and client software. After each ArcGIS product release, the latest core OGC standards with compliance tests are reviewed. Currently, 133 ArcGIS products (multiple versions) have received compliance certifications across 338 OGC implementations.
A.8. Eurac Research
Eurac Research (http://www.eurac.edu) is a private not-for-profit research center established in 1992 with headquarters in Bolzano. The center is internally organized into 11 Research Institutes, supported by 11 Service Departments, performing research activities in different fields from issues related to minority rights protection, federal, regional and local governmental trends and the efficient management of public administrations to studies on renewable energies, promotion of sustainable development and the protection of natural resources. The contributing body for this hackathon is the Institute for Earth Observation (http://www.eurac.edu/en/research/mountains/remsen/Pages/default.aspx) with its research groups for Advanced Computing for Earth Observation (http://www.eurac.edu/en/research/mountains/remsen/researchfields/Pages/Technology-for-Environmental-Monitoring.aspx). The purpose of the Institute is the advanced analysis of Earth Observation (EO) data and their integration into products and services tackling most relevant environmental issues in mountain areas.
The Group for Advanced Computing for Earth Observation focuses on research in the field of Big Data science for developing and implementing novel technology and methodology for handling and analysis of big earth observation data as well as management and processing of earth observation data for the Institute for Earth Observation.
Participating from Eurac Research: Alexander Jacob - Research Group Leader - Advanced Computing for Earth Observation.
A.8.1. Motivation to Participate
Eurac Research is actively contributing to openEO (https://openeo.org/) an open source innovative aiming to federate EO cloud service providers by developing a standardized interface together with back-end and client implementations. This allows users to approach diverse EO data infrastructures, using source code with the same processing commands. Eurac Research develops a back-end driver (https://github.com/Open-EO/openeo-wcps-driver) that supports high-level interfaces for data cubes via OGC standard WCS and WCPS standards, and contributes further with the implementation of a use case for operational snow monitoring using openEO.
Since much of the development of OGC API specifications is moving in a similar direction, Eurac Research wanted to participate in the hackathon event in order to improve their understanding of the purpose and orientation of OGC API specifications, as well as to align the implementations as much as possible, in order to make them compatible. Currently several pieces of the openEO API are very similar to the OGC API, since Eurac Research were from the start of the development also looking at what was happening inside the OGC. The RESTful approach of WFS-3, now known as OGC API - Features, was specifically of great interest to Eurac Research. Another related initiative that Eurac Research is monitoring and following is the development of STAC by the Radiant Earth Foundation (https://github.com/radiantearth/stac-spec).
A.8.2. Implemented Solution
During the hackathon event in London, Eurac Research participated in the further development of the OGC API - Coverages specification on the first day and then developed a number of back-end implementations. Eurac Research also implemented the latest agreed-on specification on the second day of the hackathon. The implementation was based on the WCPS and is available at: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/.
This solution is based on the aforementioned openEO WCPS driver and has adopted some new REST endpoints considering the OGC API - Coverages specification. In particular:
-
/collections
-
lists all available collections within server. For this hackathon two collections have been hard-coded for demonstration purposes only: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/collections
-
-
/collections/{collectionid}
-
lists all available coverages in collections specified within server, including most essential metadata like spatial and temporal extent of all coverages: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/collections/Sentinel-2
-
-
/collections/{collectionid}/coverages
-
currently identical to /collections/{collectionid}: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/collections/Sentinel-2/coverages
-
-
/collections/{collectionid}/coverages/{coverageid}
-
this endpoint is supposed to deliver the actual coverage in its native format or a specified format and subset via query parameters. In the current implementation however it is just delivering the metadata: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/collections/Sentinel-2/coverages/openEO_S2_32632_20m_L2A
-
-
/coverages
-
lists all available coverages, independently of whether they belong to collections or not. This listing includes most essential metadata like spatial and temporal extent of all coverages: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/coverages/
-
-
/coverages/{coverageid}
-
this endpoint gives actual access to the data included in a coverage. The following examples demonstrates also how query parameters can be used to limit to a specific subset along all available dimensions of the coverage and how a specific output format can be specified: http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/coverages/openEO_S2_32632_60m_L2A&format=json&subset=E(399960,419960)&subset=N(5090220,5100220)&subset=DATE(%222018-06-04%22). Available query parameters are:
-
format
-
available formats are listed at http://saocompute.eurac.edu/openEO_WCPS_Driver/openeo/output_formats
-
-
subset
-
works just like the original subset from WCS 2
-
-
-
The existing driver works on top of an installation of Rasdaman community edition, exposing both the already existing WCS 2 and its WCPS 1 extension.
A.8.3. Proposed Alternatives
Eurac Research proposed the direct use of the path /collections/{collectionid}/{coverageid}
instead of the path /collections/{collectionid}/coverages
. The reason being that if collections can have different types of collections e.g. a feature collection and a coverage collection, it may be more appropriate that this information is delivered in the metadata of the collection with a type field.
A.8.4. Experiences with OGC API Specifications
The overall impression of the Hackathon was, for Alexander, that there still needs to be more integration between the different OGC API specifications. The goal should not be to just "restify" the existing standards, but to create a new well-defined suite of functionality that takes the current state of available data and technology into account. Most importantly the data available today is multidimensional, covering at least 3 or more dimensions that should be considered everywhere in the API. Secondly, in order to make actual use of the enormous amount of data available today, one cannot simply download the data an then process everything on the client-side. Processing should be performed as much as possible, where the data is, in order to avoid unnecessary copies, and unnecessary delay due to long Input/Output times. Finally processing should be as flexible as possible and allow for chaining of arbitrary functions or operations in order to allow a user to achieve whatever he wants with the data. Here, Eurac Research urges OGC to look into how processing is designed in openEO (https://open-eo.github.io/openeo-api/v/0.4.1/index.html) with its concept of a graph representation of workflows, that can contain any number of processes chained into arbitrarily complex graphs including even user-defined functions, when necessary processes are not natively supported by a given back-end implementation.
A.8.5. Other Impressions & Recommendations
The concept of collections of coverages needs to be further specified more precisely. In particular it needs to be discussed and decided if collections should have the same projection and underlying grid, or if they can have arbitrary projections and grids. In the latter case a defined behavior should be decided of how to access a collection as opposed to an individual coverage. Questions like how are implementations mosaicking and integrating data from coverages on-the-fly when belonging to same collections, need to be answered. Are re-sampling methods, blending and mosaicking decided implicitly by the back-end implementation or can those be selected by query parameters or other means as well? How do we deal with multi-temporal (or arbitrary n-dimensional) mosaicking and resampling?
A.9. Geobeyond
Geobeyond is a geospatial software and solutions provider. Geobeyond is involved in the development of the GeoNode open source toolkit. GeoNode is a web-based application and platform for developing solutions for spatial data infrastructures (SDI). Francesco Bartoli represented Geobeyond at the hackathon.
A.9.1. Motivation to Participate
Geobeyond was motivated to participate in the hackathon by:
-
the potential to port the GEE-Bridge API to OGC API - Commons and OGC API - Processes.
-
discussion within the community on how to handle WPS remote processes and process chaining (local and remote).
-
the need to understand and find a way to implement several specifications together for the new GeoNode API 4.0 which will be driven by the API-first approach and totally based on the OpenAPI v3 specification.
-
alignment with the Catalogue Services community about the new OpenAPI based specification.
A.9.2. Implemented Solution
During the hackathon, Geobeyond implemented a draft GeoNode API based on:
-
OGC API - Processes specification which could provide a generic solution for algorithms as functions.
-
Implemented interface with out-of-the-box validation for jobs and result as modeled in the WPS REST Binding
-
Support of asynchronous processing and jobs persistence
-
Deploy ready for containers to Docker Swarm
-
This starting point will be the base building block to add more specifications to the next GeoNode 4.0 in order to be a reference implementation with at least the following OGC standards:
-
OGC API - Commons standard
-
OGC API - Features standard
-
OGC API – Coverages standard
-
OGC API – Map Tiles standard
A.9.3. Proposed Alternatives
The following considerations of alternative approaches were identified by Geobeyond:
-
Process chaining and consequently workflows should be part of the perimeter of the specification or can be an abstract concept within GeoNode?
-
Processing from cloud infrastructure (Google Earth Engine, IBM Geoscope, etc) have to be considered remote or local? Sort of WPS Cascading?
A.10. GeoCat B.V.
Established in the Netherlands in 2007, GeoCat (https://www.geocat.net) offers products that enable publishing geospatial data on the internet or cloud. GeoCat customized software and services help their customers succeed with Spatial Data Infrastructures (SDI) and geospatial-enabled technologies. GeoCat is committed to sustainable applications with following the principles of free and open-source software and open standards.
GeoCat has an established reputation with our products and services supporting the National SDIs for The Netherlands, Switzerland, Norway, Sweden, Finland, Denmark, Scotland, The European Environment Agency, Eurostat and many others.
A.10.1. Motivation to Participate
GeoCat actively support the OGC through participation in standards development and shipped implementations. Committed to SDI standards, especially with geospatial catalogues, GeoCat has implemented a wide range of OGC standards. GeoCat participated in the GeoNovum testbed for spatial data on the web, from which results were contributed to the final report of the OGC/W3C best practice for spatial data on the web report. This report was taken as the foundation for the OGC API developments. GeoCat believe enabling OGC standards to connect to web domain standards enlarges the audience of spatial data, and allows the spatial community to benefit from the latest web domain research and innovations.
There is a number of focus areas for GeoCat, especially related to GeoNetwork (https://www.geonetwork-opensource.org), in such events:
-
GeoCat are looking forward to participating in the next generation of UML, YAML & RDF models for spatial data and cartography and how they are exchanged in the scope of OGC API’s.
-
To collect experience and contribute the discussion to implement support for OGC APIs for catalogues, map tiles and features.
-
Research how existing client tooling (QGIS, OpenLayers, PowerBI, Talend) can benefit from OGC API standards
-
Enable crawling by search engines (and humans) of OGC APIs, preferably using (extensions to) common ontologies, such as schema.org, W3C Data Catalog, etc.
A.10.2. Implemented Solution
-
GeoCat contributes to the pygeoapi (https://pygeoapi.io) project, focussing on dataset discovery.
-
GeoCat is evaluating how to integrate the OGC API – Catalogues specification into the GeoNetwork catalog product.
-
GeoCat completed a pilot to introduce an OGC API - Features client into GeoNetwork.
A.10.3. Experiences with OGC API Specifications
GeoCat has been constantly an active supporter of OGC and OGC standards, including recent efforts on the OGC API – Features specification.
A.10.4. Other Impressions & Recommendations
GeoCat recognized the group’s admirable motivation towards creating standards that easy to understand and are developer-friendly.
GeoCat recognized valid remarks on the OGC API being very strict around the Collections concept. This was especially apparent with the OGC API – Processes specification where a collections-driven approach was markedly less intuitive than an OpenAPI approach.
These discussions are beneficial and lead to a strong standardization process.
A.11. GeoLabs
GeoLabs (http://www.geolabs.fr) is a world-wide provider of geospatial management solutions based on open source technologies. GeoLabs is involved in the development of numerous open source geospatial projects, as well as providing SaaS and Platform-as-a-Service (PaaS) solutions for geospatial data. GeoLabs has developed MapMint (mapmint.com), a complete web-based infrastructure, participated in the development of geoportail.fr, and the development of Senegal’s National Cadastre. Further, GeoLabs provides commercial cloud-based GIS services, and contributes in numerous open source projects.
A.11.1. Motivation to Participate
The motivation for GeoLabs was to get more information about the direction followed by the working groups for the different standards, as well as to get answers to some questions that GeoLabs had about the OGC API - Processes specification. Indeed, GeoLabs implemented part of the OGC API - Processes specification before attending the hackathon and encountered some issues in trying to mimic the different options available in WPS 2.0. The hackathon therefore provided an opportunity for GeoLabs to discuss and share experiences with participants from other organizations.
A.11.2. Implemented Solution
GeoLabs came to the hackathon with the ZOO-Project implementation demonstration swagger interface available at: https://demo.mapmint.com/swagger-ui/dist/ for interacting with two instances based on the OGC API - Processes specification. The instances are available at: http://demo.mapmint.com/WPS2/ and http://demo.mapmint.com/WPS3/ (where the former is using the model available on the wps-rest-binding repository and the latter one is based on the tests GeoLabs made to change the wps-rest-binding, in order to make it fit the current WPS 2.0 definitions).
This implementation of the OGC API - Processes specification is based on the one available at http://www.zoo-project.org with some modifications. It is based on an implementation that is able to offer access to libraries and applications such as GDAL, OGR, GEOS, PROJ, the Orfeo ToolBox (https://www.orfeo-toolbox.org/) and the SAGA-GIS application. The demonstration includes numerous services available to be run using the implementation of the OGC API - Processes specification.
A.12. GeoSeer
GeoSeer is a search engine for OGC Services. At the time of writing it has just shy of 200,000 such services in its index, making their data easily and freely searchable.
A.12.1. Motivation to Participate
The Motivation behind creating GeoSeer was to help solve the discoverability problem. End users often find it difficult to find the services or data that exists. GeoSeer’s participation was an extension of this seeking to facilitate making life easier for finding data through the new OGC API specifications, or at least to ensure it did not get even harder. In fact, the team behind GeoSeer suggests that discovery is one of the aspects that could be improved in current OGC services and should be getting more consideration in the new OGC API specifications.
A.12.2. Experiences with OGC API Specifications
For GeoSeer, the OGC API specifications all seem quite interesting, though the concept of "collections" took some getting used to and remains somewhat confusing. This suggests that collections may not be as intuitive as could be desired and users may struggle with the concept.
In relation to discoverability:
Good
-
The HTML reports that are created are good for improving discoverability with mainstream search engines.
-
The OGC API specifications are easily parsable.
Issues
A number of potential discoverability issues with the current specifications were identified by GeoSeer. The issues include:
-
The specifications do not include "keywords" currently. Ideally this should be mandatory in core to facilitate discovery. While popular search engines may not currently use this field, that does not mean they and/or others would not in the future. GeoSeer does use this field for indexing, and many current OGC Web Services have this set with meaningful keywords by their deployers. GeoSeer would suggest having it both at the root level (to indicate the type of "service"), and at the /collections level for each collection. This would improve discoverability.
-
There may be too much reliance on extensions. Many deployers will not install extensions even if they should. For example, the data for services that claim to be compliant to Implementing Rules of the European Union’s INSPIRE directive shows that only around half of the services actually have the INSPIRE ExtendedCapabilities. And that is for something that INSPIRE says is mandatory. An extension for "discovery" would therefore not provide its peak usefulness unless its components were in core.
-
The "Title", and "Description", fields are both optional in the Common, Features and Map Tiles specifications. These fields should be mandatory. If they are not, they will not be there for many services and that will make them considerably less discoverable. It will also significantly reduce usability with desktop GIS (imagine selecting a feature collection when none of them have these…).
-
There should be a mandatory Bounding Box (BBOX) in WGS84, required for each collection, in the OGC API - Common specification. This will facilitate discovery of spatial data - "WHERE" being critical to such data. There are many thousands of "tree" datasets out there for instance, how can a user otherwise know where the data is without this? Some wording to allow exclusion for non-spatial datasets could be incorporated. This could be in addition to a native BBOX defined by the extensions as necessary.
-
Metadata URLs should be included too. While GeoSeer were not big fans of external metadata documents, many large organizations find them extremely important and they are used a fair percentage on current services. A consistent way to specify them would make access to this information automatically easier.
-
GeoSeer would like to highlight that if something is not explicitly specified in the OGC API specifications and instead relies on the deployer deciding what/how to implement it (as has been suggested with Keywords), this obviates much of the benefit of a standard. Even with standards, developers end up finding many different ways to do things! Without standards the number of ways to do things just makes life extremely difficult for anyone who wishes to automate access to services. It is advisable not to rely on the deployers/implementers being consistent.
Many of the above would also make it easier for end-users who are accessing these services via a desktop client like QGIS/ArcGIS. Without title/description information in a JSON format it will be impossible for such a user to know what they want without opening stuff in parallel web-browser; hardly easy.
A.13. GeoSolutions
GeoSolutions (http://www.geo-solutions.it/) is specialized in the processing and dissemination of raster and vector geospatial data with Open Source software according to the specifications created by OGC and the ISO Technical Committee 211 (TC211) which provide the base building blocks for the INSPIRE regulations.
The GeoSolutions team is composed of international professionals with leading roles in some of the main Open Source products for the geospatial field like GeoServer, GeoNode, GeoNetwork and MapStore for which GeoSolutions provides professional support services. It is worth pointing out that GeoSolutions does not only use Open Source software products mentioned above but actively promotes, supports, develops and steers the projects behind those products.
A.13.1. Motivation to Participate
-
GeoSolutions have participated in the WFS 3.0 hackathon and want to continue supporting the development of the new wave of OGC APIs, along with their implementation in GeoServer
-
As implementors of a variety of OGC services, including WMS, WFS, WCS, WPS, CSW as well as OpenSearch for EO, GeoSolutions have a direct interest in being part of the definition of the new set of services that will replace them in the future
-
In particular, as a company dealing with imagery and raster n-dimensional models, there is a strong interest in understanding the future direction of coverage services
-
As implementors of multiple specifications in the same server, GeoSolutions wanted to participate in the discussion related to OGC API - Common to help get a strong common base that will hopefully reduce implementation efforts
-
Finally, GeoSolutions wanted to understand and discuss OGC API – Map Tiles as part of GeoSolutions' participation in OGC Testbed-15
-
A.13.2. Implemented Solution
GeoServer WFS 3 had been implemented in GeoServer as prototype community module, but is still based around a shared OWS dispatcher to avoid laying down a new architecture based on a single service example. The hackathon provided the occasion to prepare a new base architecture, dedicated to the OGC API services, based on a vision of other service API directions, as well as the formation of the emerging OGC API – Common specification.
The result is a new "OGC API" module divided between a core dispatch subsystem implementing common aspects between the various API, and a much-simplified Features API extending it.
This work will be extended in the next few months during OGC Testbed-15, implementing on top of the same base structure a Tiles API, a Styles API, a Image API, along with a dedicated API to collect tiles modified via the Image API, thus further strengthening the common code base.
A.13.3. Proposed Alternatives
GeoSolutions' participation in the separate thread has been focused on the Coverage API. As others have noticed, the current approach of treating the "collection" as a possibly heterogeneous set of coverages (e.g., accessing a single coverage via collection/{collectionId}/coverages/{coverageId}
raises some doubts in terms of practical usage of the service for the simpler cases.
There are evident needs of supporting different use cases, including:
-
Simple standalone raster datasets, or composite raster datasets that can be seen, from the eyes of the users, as a single seamless coverage
-
Stitched mosaics where the mosaic/collection can still be managed as a coverage of its own, while giving users access to its internal composition
-
Ensembles/heterogeneous collections where multiple coverages with different physical phenomenon, bands, resolutions are stored, allowing grouping by intended usage, but lacking the possibility of considering the collection itself as a coverage
GeoSolutions believe the subdivision of these use cases in a core specification and extension likely merits some further discussion, involving parties from both API Common and the coverages API.
Another relevant discussion that happened during the hackathon relates to the Map Tiles API, initially conceived as building blocks that could be added on top of the Features and Coverages API. While this is an important use case, GeoSolutions argued that it is also important to allow creation of standalone maps and tiles services where collections are opaque and the server is allowed to implement their rendering the desired way (e.g., cascading WMS and WMTS service is a case where the source is not feature nor coverage, standing up a simple mapping service without exposing the actual nature of the source data is another). The specification of Maps and Tiles has since then included the possibility of standalone usage.
A.13.4. Experiences with OGC API Specifications
GeoSolutions has been implementing OGC services in the GeoServer for well over 15 years, ranging between WMS and WMTS (mapping), WFS and WCS (data access), CSW and OpenSearch for EO (catalogues) and WPS (processing). At the same time the same services have been used extensively to provide solutions on the client side.
GeoSolutions' participation in OGC has been growing in the last few years, with active participation in multiple threads of OGC Testbeds, starting with Testbed 12 and continuing to the current date.
A.13.5. Other Impressions & Recommendations
The hackathon has been very helpful to bring all parties interested in OGC specification together to discuss the future directions of the various API, confirming a shared approach and allowing each group to consider the concepts and how they apply to their specific service.
For future events GeoSolutions recommends that a larger amount of time be spent in shared sessions where portions of the API Common can be discussed and their suitability to the various services verified (as opposed to have a dedicated parallel group discussing Common).
A.14. Helyx SIS
Helyx SIS is a professional services company that specializes in the provision of information management and information exploitation, as well as the provision of geospatial information services and solutions. Amongst its professional services and on-site support, Helyx also undertakes innovation and applied research for customers.
A.14.1. Motivation to Participate
As well as being an active participant on multiple OGC initiatives, e.g. Testbeds and Pilots, Helyx is also a provider of services to various government departments that are also members of the OGC.
A.14.2. Implemented Solution
Helyx prototyped an implementation of a routing profile of the OGC API - Processes specification. Much of the work going in the hackathon was done as part of the OGC Open Routing API Pilot. This initiative is focused specifically on routing as an application with use cases including online, offline and hybrid connectivity. Additionally, the routing engines in the Pilot are required to support parameters that include; shortest distance, shortest time and algorithms such as the traveling salesman problem. The solution provided a good use case for the OGC API – Processes specification including contributing to the debate in the WPS SWG, which is concerned with the role of WPS in the OGC API. In addition to the server-side solution, Helyx also produced two different clients; a web-based JavaScript client and a QGIS Client built using the QGIS plugin architecture.
Standalone Web Client
The purpose of this client was to enable a walkthrough of the OGC API to discover processes. The client was able to identify the inputs and outputs of each process, request inputs from the user, execute the WPS and display the result. The purpose of this was to demonstrate the possibilities of clients if OGC APIs were all built to the same specification. If this was the case, then clients could likely be universal. Discovery of the processes is shown in below.
QGIS Client
The QGIS client performs a similar function to the web client, except it is designed and built in the QGIS plugin environment. The client walks through the API and identifies processes and parameters to automatically populate the GUI for each process therefore providing the user with well-defined inputs. A full implementation of the QGIS client is currently being produced as part of the OGC Open Routing API Pilot, a screen shot can be found Figure 13.
A.14.4. Experiences with OGC API Specifications
Helyx has implemented and used several OGC Services in the web services suite and also have implementations for:
-
WFS 3.0
-
WPS 3.0 (OGC API)
Helyx’s experience with WFS has been largely positive as much of the work has focused on the security aspects of data services. OGC API or WPS has been more challenging as there is a discussion going on within OGC regarding the purpose or utility of the WPS specification. There are currently two schools of thought about WPS within the OGC:
-
Use the OpenAPI specification to do Processing
-
Create a facade within OpenAPI to make a processing service look like WPS 2.
Each of their approaches have their advantages, option 1 is more flexible, looser and does not impose any well-defined paths or parameters. This means that generic clients are more likely to be able to recognize the pure OpenAPI specification. Option 2 is useful as it reflects the calls done as part of WPS 2 and REST bindings can be created accordingly. The tradeoff between the two has yet to be resolved.
A.14.5. Other Impressions & Recommendations
It appears as though the many OGC standards will eventually transition to OpenAPI and JSON schemas, although this is far from defined. Perhaps a wider consideration is what this new approach means for architectures in both the OGC overall operating picture and by those utilizing OGC standards as part of their own architectures.
A.15. Hexagon
Hexagon is a provider of sensor, software and autonomous solutions that work to boost efficiency, productivity, and quality across industrial, manufacturing, infrastructure, safety, and mobility applications. Hexagon technologies are helping to shape urban and production ecosystems to become increasingly connected and autonomous — ensuring a scalable, sustainable future. Hexagon Geospatial creates solutions that visualize location intelligence, bridging the divide between the geospatial and operational worlds.
A.15.1. Motivation to Participate
Hexagon Geospatial has been an active supporter of OGC and OGC standards for many years. Next to implementing a wide range of OGC standards, Hexagon Geospatial have ample experience in applying OGC standards within industry solutions for a variety of domains, such as Aviation, Defense & Intelligence, Maritime, Transportation, Mining or Disaster Management. By being part of many testbeds and interoperability experiments over the past decade and contributing numerous software components and engineering reports, Hexagon Geospatial also learned that cooperation with other people on real-world use cases is an excellent way of testing and improving specifications. Hexagon Geospatial is motivated to share its expertise as a long-term implementer and user to support the advancements of OGC standards related to map tiles, coverages and processes.
A.15.2. Implemented Solution
A desktop Java-based client was implemented by Hexagon Geospatial to experiment with the OGC API - Map Tiles specification. The client retrieved data from the server provided by Esri UK, accessing the maps using the tile-based approach.
Interesting about the client implementation is that it started from /collections/{collectionId}
and used the provided metadata to look up the appropriate tile matrix set from /tileMatrixSets/{tileMatrixSetId}
. Now that the tile structure was known, the client used /collections/{collectionId}/tiles/{styleId}/{tileMatrixSetId}/…
to get the actual tile data. Note that the specification was still evolving and there was no map/
before {styleId}/
yet.
The implementation showed that the necessary metadata is available to access the map tiles generically.
Figure 14 shows the client accessing a map tiles collection from the server. The tiles are shown in the native CRS of the tile matrix set.
Figure 15 shows the client accessing a map tiles collection from the server. The tiles are requested in their native CRS, but reprojected onto a 3D globe.
A.15.3. Proposed Alternatives
A number of questions were raised in relation to consistency and duplication in various parts of the metadata in the API.
Hexagon Geospatial participated in the discussions about composition of the tiling scheme on top of collections or maps.
It was noted that there seems to be an opportunity for having more concepts in the Common API. Specifically, it seems that extent could be included.
When generating a map depicting multiple collections, the request will probably get quite complex. Perhaps it is useful to think of such a map as a composition of multiple single-collection maps. The multiple-collection map request could perhaps refer to multiple single-collection maps?
A.15.4. Experiences with OGC API Specifications
The Hexagon Geospatial product portfolios applied OGC standards from the start and currently implements more than a dozen OGC standards and candidate standards, including implementations of WFS, WMS, WCS, WMTS, WPS, CSW, GeoPackage, Filter Encoding, SLD / SE, GML, KML, 3D Tiles and NetCDF.
A.15.5. Other Impressions & Recommendations
Hexagon Geospatial sees as a positive development that OGC is trying to make the APIs more easily consumable by users. However, and perhaps specifically to the Map Tiles specification, the variety of use cases and access patterns still leads to considerable complexity, for instance by having request parameters related to parts of the URL path.
Hexagon Geospatial believe the hackathon was useful to get a feel for the practicality of the proposed APIs. However, when each group goes off to work on their specification separately, it is easy for the APIs to start diverging. It would be good to have a convergence phase where ideas from the various group are compared and commonalities can be extracted for the Common API.
A.16. interactive instruments GmbH
interactive instruments has been a strong supporter of the current OGC API activities in OGC and ISO/TC 211 from the beginning. The company has also contributed to the W3C/OGC Spatial Data on the Web Best Practices and started developing ldproxy as an open source Web API for feature data based on WFS 2.0 capabilities in 2015 in the Geonovum "Spatial Data on the Web" testbed.
The interactive instruments XtraServer software is an OGC reference implementation for WFS 1.1/2.0, GML 3.2, and WMS 1.1/1.3.
A.16.1. Motivation to Participate
-
interactive instruments are the main editor of "OGC API - Features - Part 1: Core" (formerly known as WFS 3.0). Before the hackathon, most of the open issues raised since the first draft release (April 2018) had been resolved and the draft standard was close to being submitted for approval votes in the OGC and ISO Technical Committees. As the draft of OGC API Common is largely a subset of that draft standard, the OGC members asked OGC to organize the hackathon to verify that the "common" part is extensible for other resource types.
-
Build on the good experience with the WFS 3.0 hackathon to accelerate specification development with a focus on developer feedback and a "code first" approach.
-
Be available for questions on OGC API, in particular OGC API Features.
-
Understand and discuss resource types for Maps and Tiles. In OGC Testbed 14 and the OGC Vector Tiles Pilot, experimental extensions have been implemented in ldproxy. This work is continuing in OGC Testbed 15 in the Open Portrayal Framework task.
-
In ongoing work in the OGC Open Routing API Pilot, interactive instruments raised some questions about the approach taken by OGC API Processes (see the draft API documentation and the related GitHub issue. The goal was to discuss the topic with developers of OGC API Processes.
-
Work on upgrading ldproxy to the latest draft of OGC API Features.
A.16.2. Implemented Solution
At the start of the hackathon ldproxy implemented the first draft release of OGC API Features (draft.1 from April 2018) plus several extensions (CRS, /items
path, property selection, geometry simplification, transactions, dynamic links, etc.) as well as other resource types (tiles, styles).
Example services:
Most of the time at the hackathon was spent answering questions and discussing various approaches. Some progress was made in updating ldproxy to the latest draft of "OGC API - Features - Part 1: Core". The updates were tested and included in our OGC Testbed 15 implementation.
A.16.3. Proposed Alternatives
Features
Two issues were raised regarding OGC API - Features as a result of discussions at or related to the hackathon.
Both issues were resolved and addressed in the release candidate of OGC API - Features - Part 1: Core.
Note that the second issue is relevant for a future OGC API – Common specification.
Common
In the discussions about OGC API - Common several aspects were raised where coverage collections differ from feature collections. No issues were identified that would require a change in OGC API - Features, but the specification of the conformance classes of OGC API – Common will need to take the different resource requirements into account.
Processes
As mentioned in the motivation section, one goal was to discuss the design of OGC API - Processes with developers of the specification. The discussion took place on the second day.
The following topics were discussed.
-
"Process" and "Job" are not the resources a developer would expect in a dedicated API for a process, for example, a routing API.
-
The process description defines an OGC-specific schema language while OpenAPI already uses a schema language (JSON Schema). As a result, a developer has to understand the JSON schema of the OGC-specific schema language first (defined in the OpenAPI definition) to understand the input and output schemas of the routing process (from the response to
/processes/{processId}
). -
This extra layer of information also results in a more complex and verbose representation of a job definition in the OGC API Processes variant.
An important aspect in this is that the OGC API standards are intended to be easier to use (than the current OGC Web Services standards), including for those that are not geo-experts. Web APIs implementing at least the core parts of the OGC API standards should be useable by developers that are not familiar with OGC standards and that do not have a comprehensive toolset supporting all kinds of OGC standards.
With this in mind, one option for moving WPS into the OGC API family could be to mainly specify guidance and patterns for API building blocks for processing geospatial data. i.e., building blocks for how to implement asynchronous or synchronous processes, simple notifications using webhooks, more advanced notifications using MQTT or AsyncAPI, how to specify input and output schemas of processes, etc. Where OpenAPI is used, the inputs and outputs of the processes should be described using JSON Schema.
In the discussion, interactive instruments identified some aspects of the current WPS standard that might also lead to an OGC API standard. For example:
-
One of the motivations for the WPS-specific process descriptions was to limit the schema complexity that WPS-implementations have to support. One approach could be to specify a simple JSON Schema profile for OGC API processing resources that would be based on the existing WPS standard. Since this would be an OGC standard, a key part of this would be spatial and temporal components. i.e., existing WPS implementations would become backends for the rapid implementation of processing resources that follow the OGC API guidance.
-
Another capability that needs further thought is WPS-T, i.e., the capability to deploy new processing resources. With the uptake of virtualization, containerization, cloud infrastructures, etc. it is obvious, however, that this is more a general IT topic than an OGC topic as there is nothing "geospatial" about deploying a new container on a server.
In the discussion there was consensus that such an approach could be a way forward for supporting standards-based processing of geospatial data in Web APIs. It was agreed to continue the discussion in the OGC WPS Standards Working Group.
Catalogues / Records and STAC
A break-out also discussed an OGC API approach for catalogues and records ("CAT4.0"). interactive instruments supports this activity and joined the group working on a charter for such an OGC API standard since it is not restricted to metadata records, but explicitly includes other types of records, too, for example, for publishing code lists.
STAC and OGC API Features started in parallel and aligned common aspects during the WFS 3.0 hackathon in March 2018, which was co-located with a STAC sprint and basically a joint event. With Part 1 of OGC API - Features becoming stable, the focus of the Features group in OGC will move towards commonly requested extensions. Some of those are also under discussion in STAC - and important for the CAT4.0 activity. Examples include more query capabilities and transactions. The goal would be to keep the specifications aligned, where we have the same requirements.
There was agreement in discussions to have a common web-meeting in a few weeks to start the discussion and potentially another joint hackathon/sprint event later.
A.16.4. Experiences with OGC API Specifications
-
Main editor of "OGC API - Features - Part 1: Core"
-
Co-chair of WFS SWG and the ISO 19168-1 project
-
Developer of the ldproxy software
-
Use of ldproxy and WFS 3.0 / OGC API in various projects
-
Work in OGC initiatives Testbed-14, Vector Tiles Pilot, Testbed-15, Open Routing API Pilot on OGC API / OpenAPI topics
-
Use of Swagger (version 2.0) in implementations for several years
A.16.5. Other Impressions & Recommendations
The hackathon was very helpful to broaden the OGC API discussions and to confirm the approach taken by OGC API Features. The event was very well organized, and the location was excellent.
Such two- or three-day implementation-driven "specification sprints" are an excellent mechanism for moving draft OGC standards that follow the same open process as OGC API Features forward.
A.17. Jacobs University
The Large-Scale Scientific Information Systems Research Group at Jacobs University is researching on flexible, user-oriented, scalable services on massive multi-dimensional arrays, aka "datacubes". Among its results are 160+ publications on the topic [22], the pioneer Array DBMS, rasdaman, and a series of OGC and ISO datacube standards [23]; the OGC WCS suite meantime is implemented by a large, growing number of open-source and proprietary raster service tools.
A.17.1. Motivation to Participate
Being actively engaged in coverage standardization over many years, it was important to support development of new APIs for coverages to ensure proper use of the coverage concept, to contribute an implementation based on rasdaman, and also to give assistance to other implementers in coverage concepts.
A.17.2. Implemented Solution
The rasdaman engine, which supports GET/KVP, POST/XML, and SOAP protocol bindings for coverage services, was extended with an experimental facade translating OpenAPI requests into standard WCS requests.
A.17.3. Proposed Alternatives
No alternatives are proposed, but more rigorous definitions are strongly encouraged, also to spot and resolve current issues - see below for details.
A.17.4. Experiences with OGC API Specifications
Jacobs University sees OpenAPI, as used by OGC, representing a minimalistic approach that aims at providing all functionality through URL syntax. Naturally, there are strong limitations in expressiveness and syntactic elegance. Additionally, some basic concepts need to be defined more clearly, see issues in the OGC API - Coverages repo:
Additional issues include
-
Ontology links, CRSs as per OGC-NA and other objects are usually expressed as URLs, too. Using them - i.e., "URL in URL" - is awkward.
-
mixed use of path components - in the URL /collections/{collectionId}/coverages/{coverageID}/rangetype the path component "collections" is a fixed keyword; "{collectionid} is an identifier in the service offering, whereby the pair "collection and "collectionid" always must appear (i) at that position in the path and (ii) in that sequence; "rangeType" is a function that extracts part of a coverage. Hence, a path component can be a keyword, an identifier, or a function. In the case of a function, in the case of "rangetype" the function input is the left-hand side, but it is not clear that this is always so. Additional parameters are only possible in the query part, and this query part constitutes one single pool of arguments where it needs extra effort to disentangle what parameter belongs to what function.
-
there is a one-level collection concept, ie: every service must offer a collection of items, which cannot contain other collections. It remains unclear why variable-depth collections are not supported (although they have been discussed).
-
Harmonization is addressed explicitly by bringing four important groups together, which is a precious step. However, currently this is more on the syntactic level than on the semantics level. Example: OGC API - Features insists on keeping their coordinate lists which maintains the old, well-known problem of coordinate ambiguity and subsequent discussions about x/y versus y/x sequence; this bad practice is continued with height/depth now: h/x/y versus x/y/h etc. The OGC coverage standards do not have this problem because with each coordinate the axis is mentioned explicitly, hence despite arbitrary sequence of the parameters the semantics is always unambiguous. Further, the Features API specification applies separate treatment - syntactically and semantically - of (horizontal) space and time, bypassing the experience in spatio-temporal handling in Coverages.
A.17.5. Other Impressions & Recommendations
Jacobs University strongly recommends OGC pursues two "housekeeping" tasks before groups may have established their own interpretations:
-
establish a clear correspondence between WCS Core and additionally all extensions (discussion has started about range subsetting, for example). This will constitute an easy guidance on how to proceed with considering further functionality, as well as the mechanics of each functionality (which has been elaborated over 10+ years by coverage stakeholders from all sort of domains), and (iii) speed up implementation as service implementers just need to provide facades to their existing frontends, rather than establishing a parallel silo.
-
establish a clear semantics for the basics of OpenAPI use in OGC - a task for OGC API - Common.
A.18. lat/lon GmbH
lat/lon GmbH has provided services in the field of space-related and state-of-the-art internet-supported information systems for more than 10 years. The services range from software development and consulting to training and workshops. An interdisciplinary team consisting of geographers, computer scientists, and management scientists links the technical know-how to the necessary and creative experience. lat/lon GmbH has been a member of the OGC from the beginning and is actively involved in the development of spatial data infrastructures in the local sector, for example, at a state level or a federal level. The aspiration of lat/lon GmbH is a coherent and interoperable infrastructure for the administration and exchange of spatial data and information.
A.18.1. Motivation to Participate
lat/lon GmbH is involved in the OGC Compliance and Interoperability Testing (CITE) program, in the capacity of "Lead Compliance Tools". Thus, there is great interest in advancing the OGC test suites to be capable of testing the different OGC API specifications. During OGC Testbed-14, lat/lon GmbH developed a WFS 3.0, now called "OGC API - Features", test suite. This test suite represents a good base for other OGC API test suites. So, one major motivation is to investigate and evaluate the need for and technical preconditions of other OGC API test suites. Also, lat/lon GmbH is interested in whether there is demand for an executable test suite for the OGC API - Common specification and whether the WFS 3.0 test suite can be used as a base for a test suite based on the OGC API - Common specification.
In general, lat/lon GmbH is highly interested in further development of all OGC API specifications and provides input to discussions e.g. through GitHub issue trackers.
A.18.2. Implemented Solution
lat/lon GmbH advanced the OGC WFS 3.0 test suite, now "OGC API - Features", by working on open bugs and tasks. Also, the test suite was used by other participants to evaluate other participant’s service implementations and to find weaknesses in the test suite itself.
A.18.3. Proposed Alternatives
There were discussions trying to answer the question about technical preconditions of other OGC API test suites. Also, the need for an OGC API - Common test suite was discussed.
A.18.4. Experiences with OGC API Specifications
As OGC API specifications are closer to well-known IT standards, it is easier for non-geospatial developers to understand and work with the APIs. In addition, the JSON and HTML encodings enable users with less advanced technical skills to use the APIs. Especially, the HTML encoding might become interesting for non-technical users enabling even more users to work with OGC APIs.
A.18.5. Other Impressions & Recommendations
lat/lon GmbH found the atmosphere at the OGC API Hackathon was very friendly, leading to productive work. Especially, the discussions about OGC API - Common and at which degree common content might be shared between all OGC API specifications helped a lot to generate a common understanding of OGC APIs and to bring all specifications forward. This hopefully leads to homogeneous OGC API specifications following the same pattern.
Thus, the hackathon was very helpful at this early stage as it will have an impact on the specifications itself. Future hackathons might help to continue creating homogeneous specifications already proven in practice.
A.19. Meteorological Service of Canada
The Meteorological Service of Canada (MSC) is the national meteorological agency of Canada. It is a division of Environment and Climate Change Canada. The MSC primarily provides public meteorological information, weather forecasts, and warnings of severe weather and other environmental hazards.
A.19.1. Implemented Solution
The MSC implemented and deployed an instance of pygeoapi - a Python server implementation of the emerging OGC API specifications. A screenshot of the landing page of the deployed service is shown in Figure 16. The software was configured to offer an interface that conforms to the OGC API - Features and OGC API - Processes specifications.
A screenshot of the OpenAPI page of the deployed service is shown in Figure 17.
A.20. Met Office
The Met Office is the national meteorological service for the United Kingdom. It produces both daily weather forecasts and long-term climate predictions as well as performing fundamental science. It also runs several forecasting services for oceanography. Its customers cover a wide range of domains, such as aviation, defense, public sector, marine, private industry, media.
It has been an active Member of OGC since 2009, and, along with several other national meteorological services, founded the OGC Met-Ocean Domain Working Group and initiated a Memorandum of Understanding between OGC and the World Meteorological Organization (WMO). WMO is the United Nations international treaty organization that coordinates 193 national hydrometeorological services. It also defines international standards for meteorology, hydrology and oceanography.
The Met Office is also active in the World Wide Web Consortium (W3C) standards development organization.
A.20.1. Motivation to Participate
Meteorology has had a long tradition of inventing and using technologies for its specific and very demanding requirements. As weather and climate information become ever more important to many aspects of society, it has become increasingly important to make information available using widespread technologies and approaches. It is envisaged that using OpenAPI version 3 for defining public and private APIs to Met Office data and information will have many benefits, for both customers and Met Office infrastructure, especially when supporting services from computing clouds. The Met Office would like the APIs to be consistent with, and conformant to, any OGC OpenAPI standards.
A.20.2. Implemented Solution
Weather on the Web (WotW) is an initiative to agree APIs for common data retrieval patterns, such as points, time-series, polygons, and trajectories, in 2, 3 and 4 Dimensions. The intent is to make it a global standard for meteorological and environmental services.
Point Data has been working for some time, as have Time-series at a point, and Polygons. Trajectories and Data Tiles are being developed.
A.20.3. Proposed Alternatives
Fall-back is to develop our meteorological APIs separately from the OGC proposals and standardize through WMO, though this will be much slower.
A.20.4. Experiences with OGC API Specifications
A Hackathon was held in December 2018 in Washington DC, USA, building on the OGC WFS3.0 specification. Servers and clients based on existing WFS software were readily developed. Agreement was reached on the initial data retrieval patterns to support: point, timeseries, etc..
A.21. U.S. National Geospatial-Intelligence Agency, GEOINT Services, Mobile Apps
- Developers
-
- Brian Osborn, CACI-BITS
-
Author of NGA’s published open source GeoPackage libraries used in NGA mobile applications
- Robert St. John, CACI-BITS
-
Developer on NGA’s open source MAGE mobile, server, and web applications
A.21.1. Motivation to Participate
-
Assess the feasibility of implementing OGC’s new OpenAPI-based Features API as native operations in the MAGE server to expose MAGE data through a standard, interoperable API.
-
Assess the feasibility of implementing a consumer of OGC’s new OpenAPI-based Features API that can build GeoPackages using standard feature data from multiple different services for offline use in MAGE and any other offline-capable mobile app.
A.21.2. Implemented Solution
-
-
Extends Simple Features GeoJSON
-
-
GeoPackage Feature generator
A.21.3. Experiences with OGC API Specifications
-
The OGC API - Features repository reuse of the Simple Features specification was helpful.
A.21.4. Other Impressions & Recommendations
All of the following are based on reading http://docs.opengeospatial.org/DRAFTS/17-069r2.html.
-
Keep the OGC API - Features repository up to date, including
-
the SwaggerHub referenced from the README
-
the local yaml documents
-
-
Improve the documentation on CRS extension usage
-
Validate the referenced implementations against the current specification
-
Update Simple Feature references to refer to Simple Feature Access - Part 1: Common Architecture, version 1.2.1, document 06-103r4
-
Consider requiring XML syntax for HTML for HTML conformance, which implies all HTML documents are well-formed.
-
makes the document more machine-friendly without sacrificing human-readability
-
makes the document easier to consume for dynamic/generic clients using widely available XML libraries instead of more lax, HTML-specific libraries with HTML’s specific parsing requirements
-
facilitates HTTP/1.1 agent-driven negotiation for non-user-facing clients whose initial request to a service returns an HTML response
-
enables the use of XPath and XSLT on HTML documents
-
-
Section 5.5.3: core response requirements defined using OpenAPI JSON Schema fragments imply a response media type of
application/json
. Is this actually the requirement? Either way, this requires more specific explanation. -
Section 7.2.2, landing page response:
-
Is the core requirement for the landing page to return JSON by default?
-
If following RFC 8288, the link relation types
conformance
anddata
should be URIs, according to RFC 8288, section 2.1.2, because they are "extension" link types that do not appear in the IANA Registry.
-
-
section 7.4: Ostensibly, the response for the
/conformance
path must be a JSON document, but the language in the spec is not clear. Is that the case? If so, the requirements should state the requiredContent-Type
of the response isapplication/json
and the JSON document must be valid with respect to the OpenAPI JSON Schema. -
Section 7.9: another reference to content negotiation as defined by HTTP/1.1. HTTP/1.1 content negotiation is quite abstract without many concrete requirements. The NOTE at the end of the section gives the
accept
andf
query parameters as examples, but not requirements. See below. -
Require specific attributes on HTML links so a dynamic client can easily parse and inspect them, and to enable automated testing of the HTML conformance class rather than having to "Manually inspect the document against the schema." Some ideas for HTML
link
anda
tags are below.-
Require the
rel
attribute to include the relationship types the spec defines. -
Require the
type
attribute to specify the media type of the target link. -
Perhaps require the
class
attribute to include a meaningful marker, such as ogc:api. -
If other link attributes are necessary, the spec could define data tag requirements.
-
-
Consider Roy Fielding’s description of content negotiation in REST, 6.3.2.7 Content Negotiation
Content Negotiation
During the hackathon, the team from CACI had some issues developing the OGC API - Features client against the available services relating to content negotiation. The team observed that many of the OGC API - Features service implementations used at the hackathon relied on the f=json
query parameter to return GeoJSON to the client, while the value in the Accept
request header had no effect. This is presumably due to the note block in section 7.9 and some example snippets in the OGC API - Features draft spec document using that parameter as a strategy for content negotiation. However, that parameter is not a formal requirement or recommendation anywhere in the specification.
There are several points in the spec document that reference HTTP content negotiation to determine the format of the response as described in the HTTP/1.1 spec. Requirement req/core/http, and section 7.9 states that req/core/http
implies server implementations must support content negotiation as the HTTP/1.1 spec defines. Unfortunately, while the HTTP/1.1 spec describes the options of server-driven and agent-driven negotiation, requirements for implementing both types of negotiation are open-ended, leaving many details to individual implementations.
The OGC API - Features Core conformance class could simplify client development by defining concrete requirements for content negotiation. For example, all server implementations must use a format
query parameter whose value is a media type string or media type short alias, such as format=json
. This would be the implementation of server-driven negotiation.
For agent-driven negotiation, the OGC API - Features Core could include a requirement that all resources with alternate
links to other representations must include those alternate
links in the Link
response header and must include the link type
attribute, per RFC 8288. This is a formal http://docs.opengeospatial.org/DRAFTS/17-069r2.html#link_headers[recommendation] in the _OGC API - Features spec at the time of this writing, but includes wording that invalidates the recommendation under certain circumstances. For the specific purpose of alternate
links of the context resource, the Link
header should be a requirement so generic clients can have concrete expectations to negotiate the content types they support. This would also allow clients to obtain the alternate
links with a HEAD
request as opposed to a more expensive GET
request.
Missing DescribeFeatureType
While developing the OGC API - Features client at the Hackathon, the team questioned the lack of a DescribeFeatureType
operation in OGC API - Features analogous to that of WFS 2. CACI’s use case was to request features from an implementation of OGC API - Features and to import the features into GeoPackage feature tables. The initial concept assumed the client would request information on the type of features in a feature collection to setup the database schema in a GeoPackage before beginning to import the features themselves to the tables. Without an explicit DescribeFeatureType
operation to describe the feature structure, the solution was to build the schema on-the-fly as the client encountered features and their properties, which required quite complex transactions in the context of a GeoPackage relational database.
CACI’s server implementation took the approach of specialized schema components in the OpenAPI document for each collection. That produced quite an unwieldy OpenAPI document and could make the data model more difficult for generic clients to construct.
The team observed that this is an open issue. There are as some comments on the issue that reflect the problems in the server implementation’s OpenAPI document. The discussion on the issue appears to have led to the conclusion that some DescribeFeatureType
operation should be part of the OGC API - Features Core spec, and the team agrees.
A.22. Open Source Geospatial Foundation (OSGeo)
The Open Source Geospatial Foundation (OSGeo) is a not-for-profit organization whose mission is to foster global adoption of open geospatial technology by being an inclusive software foundation devoted to an open philosophy and participatory community driven development.
A.22.1. Motivation to Participate
OSGeo projects have a long history of implementing OGC standards. Examples include (but are not limited to) PostGIS, QGIS, MapServer, GeoServer and many others.
The recent efforts around modernizing the OGC API standards provide opportunities for any project to implement OGC standards with a lower barrier to entry. In addition, the clean break approach provides opportunity to streamline codebases and implementations with less dependencies. Finally, OSGeo projects already provide reference implementations for numerous OGC standards. Participating at early stages of specification development allows for testing of approaches as well as leading the initial support of the standards into the FOSS4G community ecosystem.
A.22.2. Implemented Solution
This subsection provides a summary of participating projects:
-
pycsw
-
meetings on CAT 4.0
-
CAT 4.0 SWG will be proposed at OGC TC next week (Leuven)
-
pycsw 3 will be the Long-Term Release (LTR) for CSW 2/3
-
pycsw 4 will align with CAT 4.0
-
discussions / testing on whether pycsw 4 is built with pygeoapi underneath with addition of full search conformance class
-
-
pygeoapi
-
continued implementation of WPS REST binding (jobs, results)
-
implementation of process manager to support asynchronous processing and job storage
-
wrote documentation
-
-
ZOO-Project:
-
test implementation available at https://demo.mapmint.com/WPS3/
-
Swagger-ui demonstration available at https://demo.mapmint.com/swagger-ui/dist/
-
Demo UI using both pygeoapi demo server (https://demo.pygeoapi.io/master/) and, ZOO-Project test implementation server for processing, available at https://demo.mapmint.com/examples3/spatialtools.html (based on old code from https://zoo-project.org)
-
Sample execute requests for using Orfeo ToolBox BandMath application using wps-rest-api available at http://www.zoo-project.org/trac/wiki/OGC_Hackathon_2019
-
-
EOxServer:
-
Very basic OGC API - Coverages implementation available at https://ows.eox.at/openapi/oapi/
-
Good discussion and progress on OGC API - Coverages in general
-
A.22.3. Experiences with OGC API Specifications
The abovementioned projects (as well as others) are already implementing the OGC API Specifications and are actively participating in discussions to address gaps and improvements. Making the specification development process openly available on GitHub (as well as Gitter for chat) provides more opportunities for non-OGC members to provide input/feedback.
A.22.4. Other Impressions & Recommendations
It is recommended to hold similar Hackathon events more regularly given the synergies and progress made during such a focused event. It is also recommended for Hackathons to be longer than 2 days in duration which may result in increased participation so as to justify travel.
A.23. SigmaBravo
Sigma Bravo is a specialist provider of ICT services focused specifically on military operations. Sigma Bravo enable and support an integrated, informed and agile 5th generation force.
A.23.1. Motivation to Participate
Sigma Bravo supports open standards as a path to interoperability. The company recognizes the value of simple, implementer-friendly standards.
A.23.2. Implemented Solution
Sigma Bravo extended the OpenSphere web application to support OGC API - Features and OGC API - Map Tiles.
Interoperability with GeoServer, pygeoapi and SpaceBel OGC API - Features servers was demonstrated.
Interoperability with ESRI OGC API - Map Tiles was also demonstrated.
A.23.3. Experiences with OGC API Specifications
Sigma Bravo has significant experience with previous OGC standards, particularly on GeoPackage. The most mature part of the OGC API implementations is for OGC API - Features.
A.23.4. Other Impressions & Recommendations
Sigma Bravo commends the OGC on the OGC API program of work, and thanks OGC staff and GeoVation for their work in organizing and hosting the hackathon. Sigma Bravo recommends that OGC seek to mature the OGC API standards through ongoing engagement and outreach activities, development of comprehensive Executable Test Suites and ongoing "in the open" standards development.
A.24. Sinergise
Sinergise is a GIS company building large turn-key geospatial systems in the fields of cloud GIS, agriculture and real-estate administration. One of the Sinergise’s disruptive technologies is Sentinel Hub (https://sentinel-hub.com/), which enables real-time visualization of multi-spectral data and supports building new earth-observation products, such as vegetation indices, in a matter of seconds.
A.24.1. Motivation to Participate
Motivation to participate was to assess possibility of using the new OGC API for Sinergise products and services and to contribute feedback to standards body.
A.24.2. Implemented Solution
Sinergise have implemented a frontend client which connects to two different backends and displays data, obtained via an implementation of the OGC API – Coverages specification, on the map. The client application is available at http://webdev.sentinel-hub.com/ogc-hackathon/index.html (view source for additional info). At the time of this writing one of the backends is not available, so Sinergise have updated the example so that it still loads after timeout.
A.25. Solenix
Solenix is a privately held company providing software engineering and consulting services. Earth Observation and the processing of geospatial information are domains, where all parts of the company have been involved for many years.
A.25.1. Motivation to Participate
As an OGC member, Solenix is interested in contributing to standardization efforts, providing the experience of offering services to major European and national space agencies. As a software engineering company, Solenix is interested in the definition of versatile, practical and focused APIs, which benefit the OGC, the company’s software, and the experience that can be provided to customers.
This Hackathon was a natural fit to participate in the discussion and as a platform for learning and exchange of ideas.
A.25.2. Implemented Solution
During OGC Testbed-14, Solenix had developed a web-based client that allows interacting with WPS servers that used a preliminary REST and JSON binding for communication over HTTP. The OGC API – Processes specification is essentially an extension of this approach, which was modified in some of the areas.
During this OGC API Hackathon 2019 event, Solenix provided, adapted and extended the existing web client in order to account for modifications brought in by the new API. By the end of the Hackathon, a total of 7 servers were connected. Various small issues were discovered and addressed during the Hackathon on the connected server implementations, but of course also in the client itself.
The client is purely web based and developed using TypeScript and the Angular framework. Without a server-side counterpart that acts as trusted channel, the client communicates with the respective servers directly via the browser. The use of HTTP(S) and JSON via a REST interface is thus a natural technological fit, providing most of the tools for processing exchanged data out of the box.
From a security point of view, a browser is a particularly hardened runtime environment, which prefers that all data is received from the same origin, i.e., the same server location. Connecting to services on other servers requires the cooperation and adherence to the imposed rules by both sides to establish communication and safe operation. The most important set of rules is Cross-Origin Resource Sharing (CORS), which allows a server to negotiate the locations and types of requests that are available to clients. In close collaboration with the other participants, various specific issues and bugs in the respective use of CORS headers and HTTP statuses were identified, analyzed and rectified during the Hackathon, immediately benefiting the server implementers.
The client was also used to exercise the various endpoints as supported by the state of the OGC API – Processes specification at that stage, including the form generation for request parameters as well as the status display and result download for completed tasks.
A.25.3. Experiences with OGC API Specifications
A major part of the Processing Track during the Hackathon was dedicated to the discussion of REST-based interfaces and the applicable best practices to represent all of the elements as "Resources" with a URL, particularly to express Processes and their lifecycle.
All of the OGC APIs are intended to build on the OGC Common API, which defines a means for service discovery with a well-known initial structure. Consequently, the Processing API expands on this approach and proposes a structure to describe, announce and find available processes.
Most of the other OGC API standards deal with classical resources, e.g. imagery at a specific location on the globe. Once the representation of data is agreed, data remains clearly identifiable as a resource. The Processing API instead deals with ephemeral resources, e.g. the status of a task while it is running. Resources are thus in a constant flux and require defined behavior, e.g. an appropriate redirect, once the resource has become obsolete.
During the Hackathon, various means for providing meta-information about processes, their execution and chaining into more complex workflows was discussed and viewed through the lens of a RESTful interface design.
A.25.4. Other Impressions & Recommendations
Participants gained the following two main points directly from using the Solenix client:
-
The correct use of SSL and CORS are absolutely vital for the direct use in web browsers.
In particular, the following points were encountered with some of the server implementations:-
The client’s location must be allowed to issue requests, i.e. must be an accepted request origin.
-
The CORS response must contain the appropriate headers, which should be processed by a client. This is particularly important for
HTTP 201 Created
responses, which often indicate to the client where a created resource can be found. -
HTTP connections on a client loaded via HTTPS will not succeed. Browsers can be configured to allow such requests, but this is only recommended during development or testing, not for a public-facing deployment.
-
-
Handling a large number of processes requires pagination or a higher-level grouping of thematically similar processes.
This was particularly evident when connecting to a server providing over 1500 processes, which required a long time to load and led to an unruly overview list. The search functionality provided by the client was useful to pinpoint specific processes, but should only be seen as workaround to the described issue.
Both observations were also highlighted and discussed briefly during the presentation of the Solenix client towards the end of the Hackathon.
A.26. Spacebel
A.26.1. Motivation to Participate
Spacebel was present in London to participate in the OGC API for Processes activities contributing an OGC API Processes implementation (Proxy).
In addition, Spacebel participated remotely on behalf of the H2020 DataBio project contributing a Catalog Server implementation hosting application and collection metadata from the DataBio Hub (https://www.databiohub.eu/registry/) aiming to improve alignment of the DataBio catalog and Hub implementation with the OGC API Common specification in addition to the Testbed-15 EOPAD discovery approach.
A.26.2. Implemented Solution
(1) DataBio Catalog Server (https://databio.spacebel.be/eo-catalog/readme.html) hosting EO applications and services (OGC 19-020), EO collections (OGC 17-084) and EO product (OGC 17-003) metadata implementing OpenSearch (OGC 10-032r8 and OGC 13-026r8) and Open API Common interfaces. Resources /
, /conformance
, /collections
were implemented and interoperability was demonstrated through TIE testing with the OpenSphere client implementing OGC API Features provided by another participant. A limit
parameter needed to be added server-side in addition to the maximumRecords
parameter (which was used to comply with OASIS searchRetrieve (SRU) specifications) which was originally mapped on {count}
.
(2) Web Processing Service (http://34.77.240.214/ades-proxy/swagger-ui/index.html) with a OGC API for Processes as defined in OGC Testbed 14 (https://raw.githubusercontent.com/spacebel/testbed14/master/json-spec/wps-t_tb14_spacebel-v1.6.yaml), including the Transactional and the Quoting & Billing extensions. Resources /
, /conformance
, /processes
, `/jobs`were implemented and interoperability was shown through TIE testing with the Solenix client.
A.26.3. Proposed Alternatives
The Catalog Server combines an OpenSearch interface with GeoJSON responses (OGC 13-026r8, OGC 17-047) for simple clients and a more advanced OpenAPI-based interface.
A.26.4. Experiences with OGC API Specifications
Spacebel has experience with Swagger and OpenAPI since 2016 and already used this technology in previous OGC Testbeds.
OGC API Common
Wrapping an OpenSearch compliant catalog with an OGC API Common interface was achieved as part of the hackathon. Extending the interface to OGC API Features (mainly temporal and geographical searches) is future work.
The main issue encountered was to define what /collections (which has a fixed response) format might return in the case of an OpenSearch catalog hosting EO application and service metadata, EO collection metadata and EO product metadata simultaneously. The proposed approach can be seen at https://databio.spacebel.be/eo-catalog/collections. The hyperlinks included in this response allow to refer directly to an OpenSearch OSDD (rel="search") and to the applicable JSON Schemas (rel="describedby").
The figure below shows that service and application data could be successfully discovered via the OpenSphere client accessing the DataBio Catalog Server.
The OpenSpere client also allows browsing EO Product metadata, visualizing corresponding footprints on the map and displaying metadata properties for a particular EO Product.
OGC API for Processes
A major discussion during the OGC Hackathon 2019 event in London was about describing the process interfaces (i.e. the Process Description including inputs and outputs definitions) directly in JSON Schema and/or OpenAPI. Indeed, as OpenAPI already supports descriptions of schemas/interfaces, this would remove the need of using a specific Process Description schema, and this would also ease the work of Web client developers.
For each existing process, a resource with a HTTP path is defined in the API document. Therefore, processes are discovered through the API document (no need of discovery and describe process operations) and the Client directly knows how to invoke the execution. The API document is illustrated below:
openapi: 3.0.0
paths:
# For each process the path and interface is provided as below
'/processes/mySampleProcess/jobs':
post:
summary: Start mySampleProcess execution.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/mySampleProcessExecuteRequest'
responses:
'201':
headers:
Location:
schema:
type: string
description: URL to check the status of the execution/job.
A complete report about the mapping between the Process Description specification and the JSON Schema format is available at https://github.com/spacebel/testbed14/wiki/OGC-hackathon-2019.
Other topics have also been covered during the hackathon:
-
The transactional extension specification has been submitted to the official Github repository at https://github.com/opengeospatial/wps-rest-binding/commit/7bdee9df5652ad3a7ad13075c535b84f9b264d0b.
-
An extension supporting callbacks would allow a more modern pattern for monitoring the jobs status. Instead of observing (repeated polling), the client can be notified on the following event: onSuccess, onFailure, onUpdate. Spacebel has proposed a draft specification for such notification feature (relying on OpenAPI callbacks): https://github.com/opengeospatial/wps-rest-binding/commit/8cc2bdaf6483af7d8c5a85c7ad0a45b8e68cc4b6
-
A very classical issue related to the possibility to report lists of files as outputs was discussed. The conclusion of the discussion was that the new OGC API – Processes specification should support the presence of output file arrays.
-
Some fixes listed at https://github.com/opengeospatial/wps-rest-binding/issues have been proposed during the hackathon.
A.26.5. Other Impressions & Recommendations
Further alignment of the OpenSearch Catalog Server with OGC API Features interfaces, requires reconciling the time and bbox related search parameters from OGC 10-032 and OGC API Features. While OGC 10-032r8 has separate search parameters representing the start and end of a search interval {time:start}
and {time:end}
respectively, OGC API Features imposes a single search parameter to represent the interval.
OpenSearch and OpenAPI Common convergence would benefit from a revision of OGC 10-032r8 to ensure that the geo:box, time:start and time:end can be combined in a single URL template with the actual HTTP query parameter names imposed by OpenAPI Common for temporal and geographical search.
The approach to represent hyperlinks in JSON is unfortunately different from the encoding proposed by OGC 14-055r2 which means that an OpenSearch implementation based simultaneously on OGC 14-055r2 and OGC 17-047 in combination with OGC API Common will have different encodings for links in search responses and in other resource representations (e.g. /conformance
, /
etc).
The OGC API specifications are imposing to advertise "paths" in the Landing Page response and also contain wording suggesting that actual path names such as "api", "conformance", "collections" are mandatory and not just examples. This should be made clearer and it seems redundant to impose the declaration of paths in the landing page if indeed the path names are "fixed".
Making (JSON) data models available as separate JSON Schemas (https://swagger.io/docs/specification/data-models/keywords/) and not mixing them with actual OpenAPI descriptions (but refer to them) would allow validating JSON representations separately with JSON schema validation tools and before a service is put up.
A.27. University of Münster
Participant: Matthias Mohr
A.27.1. Motivation to Participate
The motivation for the University of Münster was to:
-
align the openEO API with OGC API - Common,
-
start discussions with the WPS community about alignment and their take on process chaining,
-
figure out future steps of WFS3 to port them back to the STAC specification, and
-
discuss with CSW/CAT group about the planned steps and alignment with STAC.
A.27.2. Implemented Solution
-
Tried to implement a WPS on top of the openEO Google Earth Engine (GEE) driver (https://github.com/Open-EO/openeo-earthengine-driver), however the implementation was not possible due to WPS/GEE restrictions.
A.27.3. Proposed Alternatives
-
Workflows (process chaining) for WPS would be mandatory, but is not foreseen yet.
-
WPS: Use JSON Schema for data types? See openEO approach for processes (https://open-eo.github.io/openeo-api/apireference/#tag/Process-Discovery).
-
CSW/CAT should align with STAC which has a very similar approach. Diverging would not benefit the Catalogues community.
A.27.4. Experiences with OGC API Specifications
Problems with WPS for openEO:
-
WPS appears not to be flexible enough for some modern workflow execution approaches, in particular chaining of processes is missing.
-
openEO only allows a single return value (like mathematical functions), WPS allows multiple. This is problematic for process chaining (openEO process graphs).
-
A parameter can be specified multiple times, which was possible in XML, but needs a workaround in JSON.
-
Data types between openEO and WPS are quite different. WPS allows sending the data to the process, openEO prefers to load it from the cloud, which is more feasible with big data sets.
-
Synchronous execution still has a state on the server and doesn’t directly return the result in WPS, see https://github.com/opengeospatial/wps-rest-binding/issues/40
WFS:
-
How to propose extensions?
-
What query language to use for the API? perhaps Common Query Language (CQL)?
A.27.5. Other Impressions & Recommendations
-
The university is of the view that OGC should not just make standalone specifications, but to instead make them work together. This is not only having a common set of functionality with OGC API - Commons, but using WFS ,WCS, WPS, and CAT in a single API. The university tried this, unsuccessfully, with openEO for the previous versions of the standards. Therefore, the university had to come up with non-OGC standards, especially for processing. So OGC should make sure there is communication between the groups on how the standards can be used seamlessly together!
-
OGC should plan a CAT and/or WFS sprint together with STAC
A.28. West University of Timisoara
The West University of Timisoara (UVT) is a university from Timisoara, Romania.
The research group that participated in the OGC API Hackathon is involved in a multitude of research projects spanning from Earth Observation, Machine Learning to Cloud Computing.
Participants:
A.28.1. Motivation to Participate
The university’s participation in the EOEP Hackathon was motivated by the aim of further extending the WPS 2.0 server developed as part of the ESA-funded EO4SEE Project.
Particularly the research group is interested in ensuring interoperability with third-party WPS implementations and adherence to the recommendations originating from the Testbed activities.
A.28.2. Implemented Solution
As part of the Hackathon UVT extended EWPS (the university’s server implementation) to support the REST-based bindings suggested by the draft standard. The implementation was successfully tested with two client implementations, particularly those developed by Solenix and Helyx.
A.28.3. Proposed Alternatives
UVT proposes modifying the current proposal to be more REST friendly by adapting WPS 2.0 conventions to RESTful alternatives.
A.28.4. Experiences with OGC API Specifications
UVT is using OGC WMS, WPS and WCS in research systems.
A.28.5. Other Impressions & Recommendations
During the hackathon UVT submitted a series of recommendations regarding the standard, particularly an callback
or notification
API that would allow for more micro-service oriented applications. The notification API would allow the development of Workflow based (DAG) applications.
Also, UVT suggested extending the Common API
to provide monitoring information in an implementation agnostic way. This would allow various tools to interoperate in a more friendly manner with OGC compliant services.
A.29. The ZOO-Project
The ZOO-Project provided a Swagger demonstration interface available at https://demo.mapmint.com/swagger-ui/dist.
A.29.1. Very Basic OpenLayers Demonstration Interface
A demonstration user interface based on old interfaces available at www.zoo-project.org is available here: https://demo.mapmint.com/examples3/spatialtools.html. You can use it to invoke execution of 4 services using the OGC API - Processes. The data used as input for execution comes from pygeoapi OGC API - Features.
A.29.2. OGR base vector operations
From here, you can use the following scenario to run OGR base vector operations:
-
Search for Execute EndPoint and click on the green line below (showing "/processes/{id}/jobs").
-
Press the "Try it out" button to display the interface to run an Execute request.
-
Set: "vector-tools.BufferPy" in the process id field then, in the "Request body" part, enter the following content:
{
"inputs": [
{
"id": "InputPolygon",
"input": {
"format": {
"mimeType": "application/json"
},
"value": {
"href": "https://demo.pygeoapi.io/master/collections/utah_city_locations/items?f=json"
}
}
},
{
"id": "BufferDistance",
"input": {
"dataType": {
"name": "double"
},
"value": 0.05
}
}
],
"outputs": [
{
"id": "Result",
"format": {
"mimeType": "application/json"
},
"transmissionMode": "reference"
}
]
}
-
To get directly the json object containing the result directly within the answer you may use the following value for "Request Body":
{
"inputs": [
{
"id": "InputPolygon",
"input": {
"format": {
"mimeType": "application/json"
},
"value": {
"href": "https://demo.pygeoapi.io/master/collections/utah_city_locations/items?f=json"
}
}
},
{
"id": "BufferDistance",
"input": {
"dataType": {
"name": "double"
},
"value": 0.05
}
}
],
"outputs": [
{
"id": "Result",
"format": {
"mimeType": "application/json"
},
"transmissionMode": "value"
}
]
}
-
To visualize the result, go to http://geojson.io and load the result content from there.
A.29.3. Orfeo ToolBox Application example: BandMath
The scenario presented here is the same as the one used for the OGR base vector operations. The only modification is that it uses an image as input data and run an Orfeo ToolBox application named BandMath.
-
Search for Execute EndPoint and click on the green line below ("/processes/{id}/jobs").
-
Press the "Try it out" button to display the interface to run an Execute request.
-
Set: "OTB.BandMath" in the process id field, select "respond-async" option in the select list then, in the "Request body" part, please enter the following content:
{
"inputs": [
{
"id": "il",
"input": {
"format": {
"mimeType": "image/tiff"
},
"value": {
"href": "http://geolabs.fr/dl/Landsat8Extract1.tif"
}
}
},
{
"id": "exp",
"input": {
"dataType": {
"name": "string"
},
"value": "im1b1/im1b2"
}
},
{
"id": "out",
"input": {
"dataType": {
"name": "string"
},
"value": "float"
}
}
],
"outputs": [
{
"id": "out",
"format": {
"mimeType": "image/tiff"
},
"transmissionMode": "reference"
}
]
}
-
Press the "Execute" button down the form. You should identify the line showing the Location header returned by the server (providing the jobId created).
-
You can either go down the "GetStatus" or "GetResult" section to access the status of your running service or the result (set "OTB.BandMath" in the id field and the returned jobId found in the Location header).
Appendix B: Invitation to Participate
B.1. Invitation Announcement
The Open Geospatial Consortium (OGC) is organizing a Hackathon to develop OGC Application Programming Interface (API) specifications and invites you to participate.
The motivation for these OGC APIs is discussed on the OGC Blog at http://www.opengeospatial.org/blog/2996
This hackathon will test draft OpenAPI-based standards for coverages, map tiles, processes using a common template based on the OGC API for features, aka WFS3 (OGC 17-069).
The event will be instrumental to the evolution of the OWS standards to a modern API based approach, setting the course for open geospatial standards for the next decade. The hackathon will be organized around:
-
Coverages
-
Map Tiles
-
Processing
Use of the OGC API for features, aka WFS3, is anticipated during many of the hackathon activities.
The outputs of the hackathon will inform the development of the OGC API - Common standard [15], the OGC API - Features standard [16], OGC API – Processes standard [17], the OGC API – Coverages standard [19] and the OGC API – Map Tiles standard [18].
An OGC Hackathon is a collaborative and inclusive event driven by innovative and rapid programming with minimum process and organization constraints to support the development of new applications and open standards.
The scope of the event is proposed to include service development and testing, using one or more implementations of OpenAPI/Swagger. Participants are welcome to bring partial or complete implementations of servers or clients to support the Hackathon.
A repository for collaborative work across the OGC API teams has been set up [3].
The Hackathon will begin on June 20th, 2019 at 09:00am, and end on June 21st, 2019 at 05:00pm. It will be hosted by Ordnance Survey at the Geovation Hub (https://geovation.uk/) in London. The physical address of the Geovation Hub is:
Sutton Yard, 4th Floor
65 Goswell road
London
EC1V 7EN
There will be opportunity for joint discussion with all participants on the goals and objectives of the event, as well as final briefing of findings and opinions of the participants. However, the majority of the time will be spent in collaboration between participants in active coding.
The Hackathon will be run by Standards Working Group (SWG) Chairs, with support from OGC staff.
Attendance priority will be given to those with an implementation or desire to implement the specifications.
Register by 1st May 2019 at https://ogc-api-hack2019.eventbrite.com
If you require funding to support your travel to the hackathon, please also complete the form (by May 1st, 2019) at https://docs.google.com/forms/d/1c0Zxy1d-9PvuRnfN2R-iIeP3Rcgbc9PMw1UfdN6Kw-A
Logistics information can be found at https://portal.opengeospatial.org/files/?artifact_id=83748
Remote Participation information can be found at https://portal.opengeospatial.org/files/?artifact_id=83864
The agenda for the event can be found at https://portal.opengeospatial.org/files/?artifact_id=83865
We’re looking forward to seeing you at the Hackathon.
B.2. Questionnaires
This section presents the questionnaires that were presented to hackathon participants to facilitate organization of the event.
B.3. Travel Support Request
Software Development Experience
-
❏ Coding is not my day to day job, but I often hack on things to solve key problems.
-
❏ I am fluent in a variety of program languages and have shipped production systems with thousands of users.
-
❏ I have several years of professional software development experience and write code almost every day.
-
❏ I am comfortable with code, and can copy and paste pieces or script things together.
-
❏ Other
Experience with WFS, WCS, WMTS or WPS Specifications
-
❏ No experience with any of the web services listed (totally ok! We want you too!)
-
❏ Have used web services based on one or more of the standards listed above
-
❏ Have created a client implementation of one or more of the web service standards listed above
-
❏ Have created a server implementation of one or more of the web service standards listed above
-
❏ Have implemented web services and API’s that are not based on OGC standards
-
❏ Other
What is your LinkedIn profile link
What is your GitHub profile link
Are you a Chair of one or more of the following OGC Standards Working Groups: WPS SWG, WCS SWG, WMS SWG, WFS SWG ?
-
❏ Yes
-
❏ No
Are you an editor of one or more of the following specifications: OGC API - Coverages, OGC API - Features, OGC API - Processes, OGC API - Map Tiles?
-
❏ Yes
-
❏ No
Have you implemented one or more of the following draft specifications: OGC API - Coverages, OGC API - Features, OGC API - Processes, OGC API - Map Tiles?
-
❏ Yes
-
❏ No
Do you agree to the terms in the OGC Privacy Policy at https://www.opengeospatial.org/ogc/policies/privacy ?
-
❏ Yes
-
❏ No
B.3.1. Infrastructure
Which challenge are you proposing to work on?
-
❏ OGC API - Processes
-
❏ OGC API - Common
-
❏ OGC API - Map Tiles
-
❏ OGC API - Coverages
-
❏ Other
How much data (in Gigabytes) are you bringing to the Hackathon?
Does the data you are bringing to the Hackathon contain any personal or personally identifiable information that would fall under GDPR?
-
❏ Yes
-
❏ No
Are you bringing any commercially sensitive data to the Hackathon?
-
❏ Yes
-
❏ No
Which base image will your containers be built on? Include operating system or distribution if known.
What is the minimum required RAM for running and testing your software?
-
❏ 1 GB
-
❏ 2 GB
-
❏ 4 GB
-
❏ More than 4GB (Please justify this requirement in the Notes section)
What is the minimum number of CPUs required to run your software?
-
❏ 1
-
❏ 2
-
❏ More than 2 (Please justify this requirement in the Notes section)
What is the minimum storage (in Gigabytes) you will require for running and testing your software?
Please rate your team’s Microsoft Azure knowledge
-
❏ None
-
❏ Other Cloud Knowledge eg AWS
-
❏ Azure Developer
NOTES: anything else you think we should know about your requirements for the environment your application and data require for the Hackathon?
B.3.2. Additional Information
What is your Github Handle?
Dietary restrictions
-
❏ None
-
❏ Vegetarian
-
❏ Vegan
-
❏ Kosher
-
❏ Gluten-free
-
❏ Other
Which team will you work mostly with during the Hackathon?
-
❏ OGC API - Processes
-
❏ OGC API - Common
-
❏ OGC API - Map Tiles
-
❏ OGC API - Coverages
-
❏ Other
Do you agree to the terms in the OGC Privacy Policy at https://www.opengeospatial.org/ogc/policies/privacy ?
-
❏ Yes
-
❏ No
Appendix C: Revision History
Date | Editor | Release | Primary clauses modified | Descriptions |
---|---|---|---|---|
2019-06-02 |
G. Hobona |
.1 |
5 |
Adapted Scott Simmons’s blog |
2019-06-03 |
G. Hobona |
.2 |
all |
initial version |
2019-08-13 |
G. Hobona |
.3 |
all |
consolidated version |
Appendix D: Bibliography
-
Percivall, G.: OGC® Open Geospatial APIs - White Paper. OGC 16-019r4,Open Geospatial Consortium, http://docs.opengeospatial.org/wp/16-019r4/16-019r4.html (2017).
-
Tandy, J., Brink, L. van den, Barnaghi, P.: OGC/W3C Spatial Data on the Web Best Practices. OGC 15-107,Open Geospatial Consortium & World Wide Web Consortium, https://www.w3.org/TR/sdw-bp/ (2017).
-
Open Geospatial Consortium: OGC API Hackathon 2019 Cross Team Github repository, https://github.com/opengeospatial/OGC-API-Hackathon-2019.
-
Wikipedia: 2018 European floods, https://en.wikipedia.org/wiki/2018_European_floods.
-
Wikipedia: 2019 Midwestern U.S. floods, https://en.wikipedia.org/wiki/2019_Midwestern_U.S._floods.
-
Idol, T., Thomas, R.: OGC Development of Disaster Spatial Data Infrastructures for Disaster Resilience. OGC 18-087r5,Open Geospatial Consortium, https://portal.opengeospatial.org/files/18-087r5 (2018).
-
European Space Agency: Copernicus - Observing the Earth, https://www.esa.int/Our_Activities/Observing_the_Earth/Copernicus/Overview4, (2018).
-
Sinergise: Sentinel Hub, https://www.sentinel-hub.com/develop/capabilities/wms.
-
MetOffice: Data Point, https://www.metoffice.gov.uk/datapoint.
-
MetOffice: UK Met Office Atmospheric Deterministic and Probabilistic Forecasts, https://registry.opendata.aws/uk-met-office/.
-
Ordnance Survey: OS Open Zoomstack, https://www.ordnancesurvey.co.uk/business-and-government/products/os-open-zoomstack.html.
-
Meteorological Service of Canada: Meteorological Service of Canada Datamart, https://dd.weather.gc.ca.
-
Meteorological Service of Canada: Geospatial web services, https://www.canada.ca/en/environment-climate-change/services/weather-general-tools-resources/weather-tools-specialized-data/geospatial-web-services.html.
-
National Oceanic and Atmospheric Administration: National Weather Service Data as OGC Web Services, https://www.weather.gov/gis/WebServices.
-
Open Geospatial Consortium: OGC API - Common Github repository, https://github.com/opengeospatial/oapi_common.
-
Open Geospatial Consortium: OGC API – Features Github repository, https://github.com/opengeospatial/WFS_FES.
-
Open Geospatial Consortium: OGC API – Processes Github repository, https://github.com/opengeospatial/wps-rest-binding.
-
Open Geospatial Consortium: OGC API – Map Tiles Github repository, https://github.com/opengeospatial/OGC-API-Map-Tiles.
-
Open Geospatial Consortium: OGC API – Coverages Github repository, https://github.com/opengeospatial/ogc_api_coverages.
-
Pross, B.: Testbed-12 WPS Conflation Service Profile Engineering Report. OGC 16-022,Open Geospatial Consortium, http://docs.opengeospatial.org/per/16-022.html (2016).
-
Yutzler, J.: Vector Tiles Pilot Extension Engineering Report. OGC 18-101,Open Geospatial Consortium, http://docs.opengeospatial.org/per/18-101.html (2019).
-
Baumann, P., Misev, D., Merticariu, V., Pham Huu, B.: Datacubes: Towards Space/Time Analysis-Ready Data. In: Service Oriented Mapping - Changing Paradigm in Map Production and Geoinformation Management, Lecture Notes in Geoinformation and Cartography. Springer (2018).
-
Baumann, P.: The OGC Web Coverage Processing Service (WCPS) Standard. Geoinformatica. 447–479 (2010).