-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Design software architecture for OGC API Maps #123
Comments
There are some OGCAPI maps like features in
Endpoints 1. and 2. are limited by the fact that they involve image tiles and can span multiple items, which would require stitching. I was thinking of initially dealing with this somehow using MosaicJSON until I @j08lue mentioned
This approach has as a benefit further of supporting and connecting open tools such as Noting also some drawbacks to this approach:
Any input is greatly appreciated. @vincentsarago @Schpidi @pantierra @kalxas @jonas-eberle |
Great to see your work towards OGC API Maps via pygeoapi in https://github.com/EOEPCA/eoapi-maps-plugin, @jankovicgd. @vincentsarago made me aware that adding Maps support directly in TiTiler has been discussed in the past, too: Have you considered this, actually? |
We reviewed the current architecture approach that @jankovicgd has been pursuing: POC of a pygeoapi based architecture
DemoNicely prepared by @jankovicgd:
Issue: no dynamic specification of resourcesWhile the POC works nicely, an issue is that resources have to be configured at application level - i.e. users cannot request Maps for collections that are not yet configured in the application and that configuration requires operator access to Kubernetes. As @kalxas pointed out, this approach is similar to how GeoServer classically works. In contrast, the classic MapServer approach, which is also TiTiler's, is that resources can be specified dynamically - either by user input of an asset URL accessible to the service, or via STAC collection/item (TiTiler-PgSTAC). Also wit this approach, restrictions can be imposed on which resources a user can access via private STAC collections or application-level enforcement logic. DecisionArguments from one or the other approach can be derived from target use cases - do EOEPCA platform owners require dynamic configuration of resources or not? Another consideration is consistency with the other (eoAPI) data access services. Maps should not behave differently from Tiles. Conclusion: Let us see whether it is feasible to implement Maps support directly in TiTiler, as discussed above. |
Yes, terrabyte would need dynamic configuration of resources. E.g., when a new collection is being added to the STAC API, this should be automatically available in the OGC Maps service. In addition, it would be nice to have that a user can reference an individual STAC item or geospatial file (e.g., COG) without the need to register it to a STAC API (similar to TiTiler's functionality). |
There is https://docs.pygeoapi.io/en/latest/admin-api.html which may be of use for dynamic generation. I'm investigating |
WMO is using pygeoapi in production and dynamic generation of collections is supported by storing the pygeoapi configuration in a database. More details to follow. |
Investigate automatic syncing of STAC to pygeoapi via admin api. Reasoning: the user experience may be a bit tedious if they would need to create a very similar request twice to different endpoints. Periodically sync and maybe take a look at adding an ogc STAC extension. @jonas-eberle one thing that is a bit unclear since there are also the registration, processing and datacube BBs. How is the user creating collections/adding data? Is this also handled by the processing BB/registration BB? The second point is solved via /cog & /stac but i notice that these are missing in the deployment, I was using them for some tests: https://titiler.xyz/api.html#/ @j08lue |
Also look at: https://github.com/stac-extensions/render |
After reading through the extension, tinkering with it and a little help from @fabricebrito the best approach is to avoid adding a new extension and use/work on this. So in the end the user creating the collection, and wanting to render it, would need to use the extension. For default rendering (eg. tci) the user should create a render with the @kalxas there is some work going on with |
As discussed, let us consider not requiring a render that has a specific key ("default") and instead use the first one in the (ordered) mapping. |
I'll add this as an additional check before the fallback.
|
OGC API Maps is the successor to good old WMS and on the roadmap for implementation in EOEPCA 2.0 data access services.
Its target behaviour is very similar to OGC API Tiles, except that clients request a bounding box instead of tile matrix coordinates. As such, it shares a lot of backend logic with TiTiler, too.
This ticket is to explore how we can provide OGC API Maps on top of TiTiler and/or TiTiler-PgSTAC.
Initial considerations were to use pygeoapi to implement the standard-compliant API and use TiTiler-PgSTAC as a provider.
Note on demoing / validation
OGC API Maps has a few clients already: https://github.com/opengeospatial/ogcapi-maps/blob/master/implementations.adoc, among others for Leaflet, which could be used in a demo of the capabilities.
Acceptance criteria
The text was updated successfully, but these errors were encountered: