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


OGC Public 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.

Table of Contents

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.

  1. 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.

  2. 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.

  3. The Web Coverage Service (WCS) SWG should continue to work on specifying the concept of collections of coverages.

  4. The OGC Architecture Board (OAB) should consider potential revisions to the OGC Reference Model to reflect the role of the OGC APIs.

  5. 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.

  6. 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.

  7. 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).

  8. The WPS SWG should consider further alignment between the OGC API – Processes specification and WPS 2.0 schemas.

  9. 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).

  10. 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.

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

processterm

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].

disastermgmtcycle2
Figure 1. Disaster management cycle

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.

Table 1. Steps in the flood risk management scenario
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.

aoi
Figure 2. Area-of-Interest (Contains OS data © Crown copyright and database right 2019; Satellite image: ESA Copyright)

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.

azure
Figure 3. OGC Hackathon Azure Infrastructure sponsored by Ordnance Survey

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.

Table 2. Participating organizations
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 (en­coding) 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.

DeploymentDiagram2
Figure 4. Solution Architecture of the OGC API Hackathon

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 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.

ganttlibre
Figure 5. A Gantt chart of the planning and execution of the hackathon

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.

membership
Figure 6. OGC membership of participating organizations

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.

interests
Figure 7. Participants' interests

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).

issues
Figure 8. The total number of issues logged in Github repositories for Processes, Map Tiles, Common and Coverages

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.

commits
Figure 9. The total number of 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.

Table 3. Technology Integration Experiments (TIE) for OGC APIs
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.

  1. The WMS SWG should consider separating the Map Tiles API into separate building blocks (specifications), one for maps and the other for tiles.

  2. 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.

  3. The WCS SWG should continue to work on specifying the concept of collections of coverages.

  4. The OAB should consider potential revisions to the OGC Reference Model to reflect the role of the OGC APIs.

  5. 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.

  6. 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.

  7. 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).

  8. The WPS SWG should consider further alignment between the OGC API – Processes specification and WPS 2.0 schemas.

  9. 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).

  10. 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.

52n wps
Figure 10. Swagger Hub page of the OGC API - Processes implementation deployed by 52°North GmbH

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
52n wps submit job
Figure 11. User interface to submit new processing jobs to the 52°North javaPS

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

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 thro