-
Notifications
You must be signed in to change notification settings - Fork 17
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
"Run now" mode for web services #277
Comments
What would you think about the following approach:
We have to support this in Jupyter Notebook too, so I'd prefer not to write the code for this in multiple places. |
Hmm, honestly, I don't like it (but I might be biased):
|
How about the part of modifying the process graph within the service to match its needs (parametrised spatial extent) as opposed to doing it on the client side? |
The API doesn't prescribe this and it is very much up to the type of service how it is handled (e.g. via process parameters or implicitly via other information from the context). For example, the XYZ implementation in the GEE back-end does it implicitly, so the extents given in load_collection just restrict the overall extent that it is allowed to process on. The extent for a specific tile is then derived from the X, Y and Z given in the URL. I assume you can follow a similar approach? |
No, our XYZ secondary service returns the results of the process graph as it is defined. That is, if a "static" process graph (with fixed spatial extent) is defined, every tile will look the same. User can however use parameters that our XYZ service defines (coordinates of the tile bounding box) wherever they want in the process graph to get dynamic results - logically they would use it in the load_collection's spatial extent. |
Why though? That seems more complex than it would need to be... |
It is not very complex to implement, the available parameters are simply injected into the process graph when a tile is requested, and if none are used, it just goes through unchanged. Reading the standard this is how it seemed like the implementation was intended to be done. |
I know which part of the API spec you refer to, but that's only an example. So from the API perspective, you can also implement the implicit behavior, which is the easier approach for the user as he does not need to apply all the parameters in the spatial_extent. You also just run into fewer issues where used did not use the parameters. At least in XYZ the spatial extent for each tile seems well-defined. |
OK, we can change it so that if no parameters are used explicitly, we overwrite the spatial extent in the load collection and that should enable this. So on our side this would then be the only thing we should change on our backend. |
This change was now deployed to https://openeo.sentinel-hub.com/production/, which is also included in the testing aggregator. I assume you will implement it in the editor? |
v0.11.3 has been deployed and supports this behavior. Unfortunately, I could only test it with GEE as my process returns a "'NoneType' object is not subscriptable" error from the Sinergise back-end. Do you have a process for testing purposes at hand? Process: {
"process_graph": {
"load1": {
"process_id": "load_collection",
"arguments": {
"id": "VEGETATION_INDICES",
"spatial_extent": null,
"temporal_extent": [
"2016-10-01T09:20:22Z",
"2016-10-10T09:20:22Z"
],
"bands": [
"NDVI"
]
}
},
"save2": {
"process_id": "save_result",
"arguments": {
"data": {
"from_node": "reduce3"
},
"format": "PNG",
"options": {
"datatype": "byte"
}
},
"result": true
},
"reduce3": {
"process_id": "reduce_dimension",
"arguments": {
"data": {
"from_node": "load1"
},
"dimension": "t",
"reducer": {
"process_graph": {
"mean1": {
"process_id": "mean",
"arguments": {
"data": {
"from_parameter": "data"
}
},
"result": true
}
}
}
}
}
},
"parameters": []
} |
This one always used to work (you will probably need to still adjust the spatial extent)
|
Thanks, this gives me a result for some tiles at least. Anyway, it is implemented and deployed. Please let me know if you need any further changes. |
@m-mohr I wanted to start writing some documentation on this (part of the deliverable) but can't find the functionality. Can you maybe point me to where you implemented this? |
Nevermind, I went through the issue description and actually found it: |
Shouldn't this functionality be available in the Data Processing tab? |
Plus: What would we need to do to also have this in the Platform editor? (I think this is where Patrick expects it). Obviously we would need to get our backend into the production aggregator. Further, I don't see |
Hmm, not sure. Originally the "Data Processing" tab was "Batch Jobs" and got just renamed because we added the "Run now" for synchronous due to the lack of a better place. I see reasons for both... maybe add it to both? Not sure...
I was waiting for a confirmation from you two that this works for you as expected in editor.openeo.org. If you can confirm that the work is finished, I can deploy it to the Platform Editor, too. But: The aggregator needs web service functionality, so additions to GET / in endpoints and the new endpoints GET /service_types and /services/...
The aggregator need to be updated. The Web Editor works adaptive and only shows what the back-end supports. So the aggregator needs to be updated with the corresponding functionality.
No, it would still not show up until the aggregator adds the web service functionality. |
I actually think the most logical location would be among the process graph tools, next to "validate on server-side". Given this feature is all about helping to test out the process graph while creating it. |
We had the "Run now" (as play icon) there in the beginning but many people did not realize that it's there and what it is for, so I moved it to a more prominent place where you can also add text. I'll think about how to best handle the "Data Processing" thing with the buttons... I was wondering whether it makes sense to merge Batch Jobs and Web Services.... |
Please see #283 |
@m-mohr |
Moved to Open-EO/openeo-api#465 because it is mostly unrelated to the Web Editor. |
Currently, the web services work as follows:
It would be more user-friendly if there would also be a "quick run" mode, similar to synchronous processing:
cc @dthiex (funded through a openEO Platform SAP)
The text was updated successfully, but these errors were encountered: