Skip to content
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

add WCPS as a processing means #1

Open
pebau opened this issue Apr 22, 2024 · 3 comments
Open

add WCPS as a processing means #1

pebau opened this issue Apr 22, 2024 · 3 comments

Comments

@pebau
Copy link

pebau commented Apr 22, 2024

The GDC specification should allow WCPS queries the same way it references CQL.

Background: Currently, GDC offers openEO, OAPI-Processing, and CQL. The latter has in common with WCPS that it is a query language approach, albeit with different mechanisms. So both should be possible.

I will be happy to discuss and co-work on prose.

@jerstlouis
Copy link
Member

jerstlouis commented Apr 27, 2024

Thanks @pebau

Currently as far as I know, CQL2 is not actually included in the Draft API output from Testbed 19, but like WCPS, it is mentioned in the Summary Engineering Report (D011).

However, I do think CQL2 can play an important role for both "Coverages - Part 2: filtering, deriving and aggregating fields" and for Processes - Part 3: Workflows "input/output modifiers".

Back to WCPS, it could be an alternative way of describing the workflow generating a virtual GeoDataCube (aka Collection aka Coverage), just like an openEO process graph or an OGC API - Processes execution request (whether or not extended with Part 3: Worfklows capability and optional CQL2).

The idea is that you could submit the workflow specification in any way that a given implementation understands using a POST operation, and get back an OGC API Collection (as defined by Common - Part 2: Geospatial Data) from which you can then make OGC API - Coverages request (which could map to the basic "Core" profile of the GeoDataCube API), including the ability to get a description of the coverage, subset the domain and range and request downsampled data.

You would make these Core GeoDataCube description / data requests the exact same way regardless of how the virtual GeoDataCube was defined (using openEO, Processes execution request with or without Workflows/CQL2, or WCPS).

Is that in line with what you have in mind for WCPS integration?

(see also #8)

@pebau
Copy link
Author

pebau commented May 2, 2024

@jerstlouis yes indeed, as you describe it: several different ways to express workflows.

I would just see it simplified, unless I am getting this wrong: I read a 2-step process where WCPS delivers all in 1 step already. But then again, different mechanisms may employ different methods...

@jerstlouis
Copy link
Member

jerstlouis commented May 3, 2024

I read a 2-step process where WCPS delivers all in 1 step already.

The 1 step process you mention is WCPS as it is already standardized.

As such, it does not integrate easily with openEO, OGC API - Processes, OGC API - Coverages, or OGC API - GeoDataCubes.

The 2-step process is necessary to facilitate integration with these (which I understand is what we're trying to achieve here):

  1. Define the processing workflow you want to perform (operations on one or more input coverages) using the WCPS language (where we ignore the Service aspect of the WCPS standard). Instead, the WCP(S)(language) workflow would be provided as an alternate workflow definition as defined by OGC API - Processes - Part 3: Workflows and/or OGC API - GeoDataCubes.
  2. Now that the processing workflow is defined producing a coverage (possibly "virtual", generated on-demand), this resulting coverage can be accessed as usual just like any Coverage aka Collection aka GeoDataCube using OGC API - Coverages, OGC API - GeoDataCubes, OGC API - Processes - Part 3: Workflows "Collection Input", possibly also openEO with the "LoadCollection" process (or by openEO process graphs together with Processes-3: Workflows "Collection Input").

Note that this second step determines the final encoding format (through HTTP content negotiation with an Accept: header), subsetting (with the subset and/or bbox and/or datetime and/or properties parameters) and downsampling (using width/height and/or scale-factor and/or scale-axes and/or scale-size parameters), and this should ideally trickle down to the downsampling / subsetting used by the workflow defined by the WCPS processing, so that it doesn't perform unnecessary processing on parts of the coverage that will get discarded by the request, so as to satisfy that request efficiently.

Similarly, this could also allow integration between WCPS and WCS, so that once you've instantiated your virtual coverage using WCPS, you can reqest data from it using WCS, and that will trigger the WCPS workflow on demand based on the specifics of the WCS request.

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

No branches or pull requests

2 participants