Skip to content

feat: generate an OGC API – Moving Features OpenAPI projection - #13

Merged
estebanzimanyi merged 1 commit into
masterfrom
feat/movfeat-openapi-generator
Jul 7, 2026
Merged

feat: generate an OGC API – Moving Features OpenAPI projection#13
estebanzimanyi merged 1 commit into
masterfrom
feat/movfeat-openapi-generator

Conversation

@estebanzimanyi

@estebanzimanyiestebanzimanyi commented May 20, 2026

Copy link
Copy Markdown
Member

Adds the OGC API – Moving Features (OGC 22-003r3) projection alongside the generic RPC-style generate_openapi.py, so the catalog has two complementary OpenAPI views:

  • Generic (generator/openapi.py): every stateless-exposable MEOS function as one POST /{function} RPC operation — faithful to MEOS's value-algebra shape but not OGC-aligned.
  • Moving Features (this projection): only the MEOS functions with an OGC analogue, placed under the OGC-defined REST resource hierarchy, with x-meos-{function,decode,encode} extensions on every route so a downstream OGC server can dispatch to MEOS without re-deriving the mapping.

Files

FileRole
generator/movfeat.pyOGC API – Moving Features path map (~16 routes) + build_movfeat_openapi(catalog); reuses _value_schema / _type_schema / _enum_schema from generator/openapi.py so component schemas are byte-identical across the two projections.
generate_movfeat_openapi.pyTop-level script: python generate_movfeat_openapi.py [in.json] [out.json] reads the enriched catalog and writes output/meos-movfeat-openapi.json.

Routes covered

OGC pathMethodMEOS functionOGC operation
/collectionsGET, POST— (persistence-layer)List / create collections
/collections/{collectionId}GET, PUT, DELETEGet / replace / delete collection
/collections/{collectionId}/itemsGETList items
/collections/{collectionId}/itemsPOSTtemporal_from_mfjsonCreate item from MF-JSON
/collections/{collectionId}/items/{featureId}GETtemporal_as_mfjsonRetrieve item as MF-JSON
/collections/{collectionId}/items/{featureId}DELETEDelete item
/collections/{collectionId}/items/{featureId}/tgsequenceGETtemporal_as_mfjsonFull trajectory geometry
/.../tgsequence/velocityGETtpoint_speedVelocity profile
/.../tgsequence/accelerationGETtemporal_derivativeAcceleration profile
/.../tgsequence/distanceGETtpoint_cumulative_lengthDistance profile
/.../tgsequence/azimuthGETtpoint_azimuthAzimuth profile
/.../tproperty/{propertyName}GETtemporal_as_mfjsonTemporal property
/.../tproperty/{propertyName}DELETEDelete property

Routes are wired to their MEOS function when that function has a stateless-exposable backing in the enriched catalog. A route whose MEOS function is not exposable (e.g. temporal_from_mfjson, which returns the abstract Temporal and so carries no concrete wire encoding) is recorded under the output document's info.x-meos-coverage.missing_in_catalog rather than emitted unbacked, so consumers see exactly what is not yet backed.

@estebanzimanyi
estebanzimanyiforce-pushed the feat/movfeat-openapi-generator branch from 8b7a86a to efe2400CompareMay 20, 2026 19:19
@estebanzimanyiestebanzimanyi changed the title feat: generate an OGC API – Moving Features OpenAPI projection (PR #5 follow-up)feat: generate an OGC API – Moving Features OpenAPI projectionMay 22, 2026
@estebanzimanyi
estebanzimanyiforce-pushed the feat/openapi-generator branch from fc1c600 to 185b201CompareJuly 6, 2026 17:43
@estebanzimanyi
estebanzimanyiforce-pushed the feat/movfeat-openapi-generator branch from efe2400 to 3f3d9f0CompareJuly 6, 2026 17:43
@estebanzimanyi
estebanzimanyiforce-pushed the feat/openapi-generator branch from 185b201 to 675e4faCompareJuly 7, 2026 10:29
Add generator/movfeat.py and generate_movfeat_openapi.py as a second
OpenAPI projection alongside the generic RPC-style projection in
generator/openapi.py.
The Moving Features projection maps the subset of MEOS functions that
have an OGC API – Moving Features (OGC 22-003r3) analogue onto the
OGC-defined REST resource hierarchy under
/collections/{collectionId}/items/{featureId}/…. Each route carries
x-meos-{function,decode,encode} extensions so a downstream OGC server
can dispatch each call to the right MEOS function without re-deriving
the mapping. Routes whose MEOS function is absent from the exposable
catalog are reported and skipped rather than emitted unbacked.
Reuses the _value_schema / _type_schema / _enum_schema helpers from
generator/openapi.py so component schemas and the MeosError response
are byte-identical across the two projections.
@estebanzimanyi
estebanzimanyiforce-pushed the feat/movfeat-openapi-generator branch from 3f3d9f0 to 7236be1CompareJuly 7, 2026 12:08
@estebanzimanyi
estebanzimanyi changed the base branch from feat/openapi-generator to masterJuly 7, 2026 12:21
@estebanzimanyi
estebanzimanyi merged commit 92edd28 into masterJul 7, 2026
1 check passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@estebanzimanyi