Skip to content
Stéphane Brunner edited this page May 5, 2023 · 16 revisions

OGC API report

Major changes

All the old API will be rewritten, major changes:

  • Based on OpenAPI
  • Return (Geo)JSON or images (or binary like pbf)
  • Have a browsable API (Landing pages)

New naming

  • WMS -> OGC API Map
  • WFS -> OGC API Feature
  • WMTS -> OGC API Tiles
  • ...

Status

OGC API Map: Draft

OGC API Feature:

  • Part 1: Accepted
  • Part 2 (CRS): Accepted
  • Part 3 (Filtering: CQL): Draft
  • Part 4: (CURD: Create, Replace, Update, Delete): Draft

OGC API Tiles: Accepted

OGC API Common:

  • Part 1: Accepted
  • Part 2 (Collections): Draft

OGC API Styles: Draft

OGC API Precesses: Accepted

Regressions

  • It's not possible to add extra parameters like the Map (especially because of the landing page)
  • The returned GeoJSON doesn't contain the related layer name.
  • The returned GeoJSON doesn't contain the srs event if it's possible to get a geometry in a local srs.
  • It's not possible to do a query on OGC API Feature multiple layers.
  • It's not possible to do a query on OGC API Map on multiple layers (it should be verified, it can be a performance issue).

Implementation changes

  • On QGIS server we have URL prefix with a project id (it's like a hash, but it does look to change when we modify the project). This means that in GeoMapFish we take care on that in the mapserv_proxy -> change the OGC server structure.

Ecosystem status

  • OGC API Feature part 1
  • OGC API Feature part 1
  • OGC API Feature part 1 & 2
  • Base implementation of nearly everything!

OpenLayers

Nothing, needed:

  • CQL formatter
  • OGC API Tile source
  • OGC API Tile parser
  • OGC API Map source

Required and Opportunities in GeoMapFish

We should know where we and OGC go to directly implement correctly the new version.

mapserv_proxy

Actually, the MapServer proxy works on URL like /mapserve_proxy?ogsserver=<ogsserver_name>

First issue: the ogcserver parameter is not allowed in the API, it will not be added by the landing pages, then we should have URL like: /mapserve_proxy/<ogsserver_name>.

The with QGISServer the project ID is not editable and obscure. This looks to be possible, but a clearer solution will be to add a new object in the database named e.g. Base OGC Server with a Base URL, Server Type, Auth type (what about support WFS)

The new URL will be something like (for QGIS) /ogcapi_proxy/<base_ogc_server_name>/<project_id>

The <project_id> can be get from the .../index.json.

The old API should continue to work.

The QGIS server plugin should be updated.

QGISServer configuration:

  • QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES=/etc/qgisserver
  • QGIS_SERVER_LANDING_PAGE_PREFIX=/ogcapi_proxy/<base_ogc_server_name>

MapServer configuration

  • MAPSERVER_CONFIG_FILE=/etc/mapserver/mapserver.conf
  • OGCAPI_HTML_TEMPLATE_DIRECTORY=/usr/local/share/mapserver/ogcapi/templates/html-bootstrap4/

MapServer specific

  • Don't serve a global landing page...

A c2cgeoportal global landing page should be created (and one for MapServer)

TinyOWS and MapFish-protocol (editing)

Booth of them should be replaced internally by a service that serves an OGC API Features part 4 (CRUD: Create, Replace, Update, Delete)

TileCloud-chain

Should implement OGC API Tiles and Process (to manage the generation)