OGC API - Features
Lucenia serves its indices as OGC API - Features collections, so a GIS client can open the cluster directly.
Vector tiles draw a map. This serves the features behind it: a click can open a record, QGIS and ArcGIS Pro can connect to the cluster, and OpenLayers or GDAL/OGR can read it without a translating service in between.
The mapping is direct:
| Concept | In Lucenia |
|---|---|
| A collection | An index |
| A feature | A document |
| A bounding box | The same shape query the tile endpoint issues |
| A geometry | Already normalized to GeoJSON by the fields API |
Endpoints
GET /_ogc landing page
GET /_ogc/conformance what is implemented
GET /_ogc/collections every collection
GET /_ogc/collections/{collection_id} one collection
GET /_ogc/collections/{collection_id}/items features in a collection
GET /_ogc/collections/{collection_id}/items/{feature_id} one feature
A client is handed the landing page and discovers everything else from its links, so /_ogc is the only URL you need to give it.
The service lives under /_ogc rather than the server root because the root already answers with cluster information. The specification does not require otherwise — it only requires that a landing page exist and that the rest be reachable from its links.
Query parameters
On /items:
| Parameter | Default | Description |
|---|---|---|
bbox | none | minLon,minLat,maxLon,maxLat. Applied as a query rather than a filter, so the index narrows before anything is read. |
limit | 10 | Features per page. Maximum 10000. |
offset | 0 | Where the page starts. |
f | json | Output format. |
Connecting a client
Point the client at the landing page:
https://your-cluster:9200/_ogc
In QGIS that is Layer → Add Layer → Add WFS / OGC API - Features Layer, with the landing page as the URL. GDAL/OGR reads the same address:
ogrinfo -ro "OAPIF:https://your-cluster:9200/_ogc"
Authentication is the cluster's own — the endpoints inherit index-read authorization like any other request, so a caller sees exactly the indices they are allowed to read.
What is claimed, and what is not
Conformance is declared honestly, because a class claimed but not implemented produces a client that fails later and further away, where nobody can debug it.
| Class | Claimed | Why |
|---|---|---|
core | Yes | The resource model: landing, conformance, collections, items, single item. |
geojson | Yes | Features are GeoJSON. |
oas30 | No | No OpenAPI document is served. |
html | No | Responses are JSON, not browsable HTML. |
crs | No | Everything is CRS84, the default. There is no CRS negotiation to advertise. |
Why not WFS 2.0
Classic WFS is a capabilities document, feature types in XML Schema, queries in the FES filter language and GML on the wire. It is a large specification whose partial implementation fails in real clients in ways that are very hard to diagnose.
OGC API - Features is the same idea over plain HTTP and JSON, and it is what the current generation of clients speaks.
Feature counts
A count is reported when it is exact. Where the search only counted up to its own limit, the response says "at least this many" rather than presenting a bounded count as a total.
Related
- Vector tiles — draw the map; this serves the features behind it
- Geospatial