-
Notifications
You must be signed in to change notification settings - Fork 13
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
How will Coverage Processing be supported? #80
Comments
@ghobona seems like a low-hanging fruit: |
In the previous issue ( #79 ) which is exactly about this, I propose that this can nicely integrate with OGC API - Processes, e.g. as a process at Also considering uploading WCPS code as a deployment method (called Processes transactional right now, though I really think the name transaction is miused and it should be This integration to act upon different data source would require substitution capabilities which we are investigating as part of our Modular OGC API Workflows project (generic WCPS code which would work on different collections, and also considering different AoI / scale and formats for MOAW workflows). |
I'm not sure why you would have .../processes/wcps (or expanding the acronym .../processes/web_coverage_processing_service) it's not like there's .../processes/wps That doesn't seem like integration of WPS and WCPS into a single form. |
@nmtoken Well the idea is that processing is a general concept for generic processing, while a WCPS process (integrated within that generic processing framework) would be able to perform processing on coverages, with code supplied in a specific WCPS language as a parameter. As I mentioned, a service could also potentially be able to create a number of different processes by uploading (generic) WCPS code. |
@jerstlouis but it could be integrated
Executes a process, i.e. creates a new job. Inputs and outputs will have to be specified in a JSON document like:
and
Could list the WCPS processioning capability (equivalent to
Could return a detailed description of the WCPS functionality i.e the supported coverage processing expressions |
@nmtoken The integration is the idea, yes. I see both processes at |
Maybe we are seeing two perspectives here:
IMHO Jerome has shown a way forward by seeing WCPS as one class of algorithms that can be offered via the WPS protocol, in addition to the pre-existing view. This to me induces a natural view of WCPS as an OAPI-Coverages extension (is planned already, actually) plus an embedding in WPS. This also reflects past work: WPCS is industrially offered via WCS, and a WPS binding has been done earlier. So we know it works :) |
@pebau
Yes, exactly, but that OGC API - Coverages extension for processing could potentially have a very light dependency on the very core of OGC API - Processes (i.e. simply a link to |
@jerstlouis The data view we should not give up while exploring how to make it also available via WPS. One way to easily marry both is that, based on the OAPI-Coverages definition, there is a conformance class in OAPI-Processes which says "/processing/wcps?q=X" is equivalent to "/collections?q=X". That would be the most lightweight thing I could think of. |
Due to the need to keep Part 1: Core specifications simple enough for the basic developer to use, it would be advisable to plan for an OGC API - Coverages - Part 2: Processing standard that specifies how to use a Coverage Processing Language (CPL) which would be a renaming of WCPS. This is just a thought. |
@pebau I really don't think @ghobona I agree that WCPS (the language) is a processing language rather than a service. A service supporting queries in the language is a service :) |
@ghobona I would strongly object to renaming. WCPS must remain WCPS. (Remember the confusion that had been caused by WMS flipping default coordinate sequence.) As we talk about extensions implementers anyway can freely choose what to support. And renaming would not make it simpler to implement. |
@jerstlouis WCPS GET is working flawlessly. If it is to be constrained in a WPS environment, that's a decision of the WPS carrier protocol. But for the OAPI-Coverages, why should we constrain. And I am absolutely sure that I would immediately loose overview on how to use the API if now functionality depends on GET vs POST or ..., it would explode complexity. |
20200914: Coverages SWG: Discussion resulted in this proposal:
|
friendly amendment:
|
@pebau regarding In both cases, the user could either supply the WCPS code along with the request, or deploy WCPS code as a specific process at an arbitrary If supplying the WCPS code along with the request (to a generic With core Processes, the execution document is submitted as a POST request to In the MOAW Workflow extension approach, depending on the path used either the workflow is set up in a deferred manner, in which case a description document is returned (e.g. for |
@jerstlouis ok, I see you have a solution in mind already. Let me suggest to have the plain /wcps part in the OAPI-Cov section and the /processing/wcps in the OAPI-Proc section, would that make sense? |
@pebau While the general mechanics of Processing is defined in the core OGC API - Processes, and the modular workflow extension would be defined in a Workflow extension to Processes, for the For the For the MOAW project I would be interested in us prototyping the |
2020-09-15 OGC API Cross Cutting Issues session during OGC Member Meeting The issue was discussed and there was no objection to the proposed approach. |
Given the outcome of the 2020-09-15 OGC API Cross Cutting Issues session, I propose that this issue be closed at the next OGC API - Coverages SWG meeting. |
So I understand there will be the (approved) |
@ghobona as you close it, can we summarize the result for the generations to come? I understand this is supporting /wcps and /processing/wcps . |
The And here is an example OGC API - Processes / Workflows approach to Coverage processing, using generic expressions: {
"process": "https://example.com/ogcapi/processes/coverage-processor",
"inputs": {
"data" : [
{ "collection": "https://someserver.com/ogcapi/collections/sentinel2" },
{ "collection": "https://someserver.com/ogcapi/collections/landsat8" }
],
"bandsExpressions" : {
"value" : {
"ndvi" : "(ds[0].B08 - ds[0].B04 ) / (ds[0].B04 + ds[0].B08)",
"lsb4" : "ds[1].B04 / 4000"
}
}
},
"mode": "collection"
} In Workflows, the area / time range of interest / format is provided separately, e.g. via a subsequent OGC API - Coverages request on the resulting virtual collection. Different coverage processes can exist supporting different languages, e.g. WCPS, Python, etc. |
@jerstlouis thanks for summarizing! I guess the WPS group will want to update their specs, I can take care of the WCPS part (which requires little change, if at all - will check). |
@pebau A number of OGC API - Processes issues have recently been resolved bringing the specifications in line with this, but some updates may still be pending.
So I will add |
It is foreseeable that a future extension of OGC API - Coverages may offer coverage processing capabilities similar to those offered by WCPS.
So what would such an extension look like?
Please coordinate with the OGC API - Processes SWG on this.
The text was updated successfully, but these errors were encountered: