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

@estebanzimanyi estebanzimanyi 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

File Role
generator/movfeat.py OGC 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.py Top-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 path Method MEOS function OGC operation
/collections GET, POST — (persistence-layer) List / create collections
/collections/{collectionId} GET, PUT, DELETE Get / replace / delete collection
/collections/{collectionId}/items GET List items
/collections/{collectionId}/items POST temporal_from_mfjson Create item from MF-JSON
/collections/{collectionId}/items/{featureId} GET temporal_as_mfjson Retrieve item as MF-JSON
/collections/{collectionId}/items/{featureId} DELETE Delete item
/collections/{collectionId}/items/{featureId}/tgsequence GET temporal_as_mfjson Full trajectory geometry
/.../tgsequence/velocity GET tpoint_speed Velocity profile
/.../tgsequence/acceleration GET temporal_derivative Acceleration profile
/.../tgsequence/distance GET tpoint_cumulative_length Distance profile
/.../tgsequence/azimuth GET tpoint_azimuth Azimuth profile
/.../tproperty/{propertyName} GET temporal_as_mfjson Temporal property
/.../tproperty/{propertyName} DELETE Delete 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 estebanzimanyi force-pushed the feat/movfeat-openapi-generator branch from 8b7a86a to efe2400 Compare May 20, 2026 19:19
@estebanzimanyi estebanzimanyi changed the title feat: generate an OGC API – Moving Features OpenAPI projection (PR #5 follow-up) feat: generate an OGC API – Moving Features OpenAPI projection May 22, 2026
@estebanzimanyi estebanzimanyi force-pushed the feat/openapi-generator branch from fc1c600 to 185b201 Compare July 6, 2026 17:43
@estebanzimanyi estebanzimanyi force-pushed the feat/movfeat-openapi-generator branch from efe2400 to 3f3d9f0 Compare July 6, 2026 17:43
@estebanzimanyi estebanzimanyi force-pushed the feat/openapi-generator branch from 185b201 to 675e4fa Compare July 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 estebanzimanyi force-pushed the feat/movfeat-openapi-generator branch from 3f3d9f0 to 7236be1 Compare July 7, 2026 12:08
@estebanzimanyi estebanzimanyi changed the base branch from feat/openapi-generator to master July 7, 2026 12:21
@estebanzimanyi estebanzimanyi reopened this Jul 7, 2026
@estebanzimanyi estebanzimanyi merged commit 92edd28 into master Jul 7, 2026
1 check passed
Sign up for free to 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