Awesome
OGC API - Features
This GitHub repository contains OGC's multi-part standard for querying geospatial information on the web, "OGC API - Features". All approved versions of the specification can be found here.
OGC API standards define modular API building blocks to spatially enable Web APIs in a consistent way. OpenAPI is used to define the reusable API building blocks with responses in JSON and HTML.
The OGC API family of standards is organized by resource type. OGC API Features specifies the fundamental API building blocks for interacting with features. The spatial data community uses the term 'feature' for things in the real world that are of interest.
If you are unfamiliar with the term 'feature', the explanations on Spatial Things, Features and Geometry in the W3C/OGC Spatial Data on the Web Best Practice document provide more detail.
Overview
OGC API Features provides access to collections of geospatial data.
GET /collections
Lists the collections of data on the server that can be queried (section 7.13), and each describes basic information about the geospatial data collection, like its id and description, as well as the spatial and temporal extents of all the data contained.
GET /collections/buildings/items?bbox=160.6,-55.95,-170,-25.89
Requests all the data in the collection "buildings" that is in the New Zealand economic zone. The response format (typically HTML or a GeoJSON feature collection, but GML is supported, too, and extensions can easily supply others) is determined using HTTP content negotiation.
Data is returned in pageable chunks, with each response containing a next
link
as many collections are quite large. The core specification supports a few basic filters, in
addition to the bbox
filter above, with extensions providing more advanced options
(section 7.15).
GET /collections/{collectionId}/items/{featureId}
Returns a single 'feature' - something in the real-world (a building, a stream, a county, etc.) that typically is described by a geometry plus other properties. This provides a stable, canonical URL to link to the 'thing' (section 7.16).
See here for an overview of the extensions to support additional coordinate reference systems beyond WGS 84.
Using the standard
The standard is on the OGC website:
- OGC API - Features - Part 1: Core
- OGC API - Features - Part 2: Coordinate Reference Systems by Reference
- OGC API - Features - Part 3: Filtering
Those who want to just see the endpoints and responses can explore examples of OpenAPI definitions.
The reference version of the OpenAPI components and XML schemas are published in the OGC schema repository.
Closely related is the Common Query Language (CQL2) standard:
- Common Query Language (CQL2)
Server and client implementations
Overview of tools implementing OGC API Features
- Server implementations - examples, more information and how-to guides
- Client implementations - examples, more information and how-to guides
To test APIs, the following resources are available:
The OGC Validator is approved by the OGC Membership and is also used in the OGC Compliance Program to certify software products implementing OGC API Features. It currently tests against version 1.0.0 of Part 1 and Part 2.
The OGC Checker requests the Landing Page, Conformance Declaration and API Definition. Tests are mainly executed against the API Definition. It currently tests against version 1.0.1 of Part 1.
OGC Product Database
OGC maintains a public database of software products implementing approved OGC standards. The database also identifies products that pass the OGC Compliance Test for the standard, where available.
Implementers of OGC standards are encouraged to register their products in the database.
- OGC API - Features - Part 1: Core 1.0 (All Products, Compliant Products, Reference Implementations)
- OGC API - Features - Part 2: Coordinate Reference Systems by Reference 1.0 (All Products, Compliant Products, Reference Implementations)
Communication
Join the mailing list or
Most all work on the specification takes place in GitHub issues, so browse there to get a good idea of what is happening, as well as past decisions.
Additional parts of OGC API - Features
The OGC Features API SWG has identified the following extensions as the highest priority:
- OGC API - Features - Part 4: Create, Replace, Update and Delete
- The draft is complete and in the Public Comment Period.
- OGC API - Features - Part 5: Schemas
- The draft is complete and in the Public Comment Period.
- OGC API - Features - Part 6: Property Selection
- The draft is an initial, complete draft.
- OGC API - Features - Part 7: Geometry Simplification
- The draft is an initial, complete draft.
- OGC API - Features - Part 8: Sorting
- The draft is an initial, complete draft.
- OGC API - Features - Part 9: Text Search
- The draft is an initial, complete draft.
OGC API Features in ISO
Part 1 (Core) has been published by ISO as ISO 19168-1:2020.
Part 2 (Coordinate Reference Systems by Reference) has been published by ISO as ISO 19168-2:2022.
Additional information
Open issues for all parts are organized in GitHub projects:
- Open issues for Part 1: Core,
- Open issues for Part 2: Coordinate Reference Systems by Reference
- Open issues for Part 3: Filtering / Common Query Language (CQL2)
- Open issues for Part 4: Create, Replace, Update and Delete
- Open issues for Part 5: Schemas
- Open issues for Part 6: Property Selection
- Open issues for Part 7: Geometry Simplification
- Open issues for Part 8: Sorting
- Open issues for Part 9: Text Search
- Open issues for Part 10: Search/Queries
Additional links:
- Background of this activity
- The next version of WFS - an overview
- UML for Part 1, Core
- Status of Part 1, Core, in ISO
- Home of the standard on the OGC website
Building
The latest drafts of each standard in this repository are build daily (based on the configuration contained in the asciidoctor.json file):
- Part 1: Core
- Part 2: Coordinate Reference Systems by Reference
- Part 3: Filtering
- Part 4: Create, Replace, Update and Delete
- Part 5: Schemas
- Part 6: Property Selection
- Part 7: Geometry Simplification
- Part 8: Sorting
- Part 9: Text Search
- Common Query Language (CQL2)
To generate the HTML versions of the standards from this repository yourself, ensure that you have Ruby and Asciidoctor set up and installed. Then run:
# Part 1: Core
asciidoctor -a data-uri -r asciidoctor-diagram core/standard/17-069.adoc
# Part 2: Coordinate Reference Systems by Reference
asciidoctor -a data-uri -r asciidoctor-diagram extensions/crs/standard/18-058.adoc
# Part 3: Filtering
asciidoctor -a data-uri -r asciidoctor-diagram extensions/filtering/standard/19-079.adoc
# Common Query Language (CQL2)
asciidoctor -a data-uri -r asciidoctor-diagram cql2/standard/21-065.adoc
# Part 4: Create, Replace, Update and Delete
asciidoctor -a data-uri -r asciidoctor-diagram extensions/transactions/create-replace-update-delete/standard/20-002.adoc
# Part 5: Schemas
asciidoctor extensions/schemas/standard/23-058.adoc
# Part 6: Property Selection
asciidoctor extensions/property-selection/standard/24-019.adoc
# Part 7: Geometry Simplification
asciidoctor extensions/geometry-simplification/standard/24-020.adoc
# Part 8: Sorting
asciidoctor extensions/sorting/standard/24-030.adoc
# Part 9: Text Search
asciidoctor extensions/text-search/standard/24-031.adoc
The resulting HTML files will be built in the same directory as the AsciiDoc file, e.g. as core/standard/17-069.html
.
Contributing
The contributor understands that any contributions, if accepted by the OGC Membership and ISO/TC 211, shall be incorporated into OGC and ISO/TC 211 OGC API standards documents and that all copyright and intellectual property shall be vested to the OGC.
The Features API Standards Working Group (SWG) is the group at OGC responsible for the stewardship of the standard, but is working to do as much work in public as possible.
Pull Requests from contributors are welcomed. However, please note that by sending a Pull Request or Commit to this GitHub repository, you are agreeing to the terms in the Observer Agreement https://portal.ogc.org/files/?artifact_id=92169