-
Notifications
You must be signed in to change notification settings - Fork 4
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
integrate CLMS HRL VPP #460
Comments
@JohanKJSchreurs This is a good candidate to test our new STAC api. |
Collection id: copernicus_r_3035_x_m_hrvpp-vpp_p_2017-now_v01_openeo Example collection metadata that we would also target: Python code to get the product metadata: Opensearch collections: |
Example url for getting S3 links: |
We are implementing this in the stac-catalog-builder project. The issue linked below is the main one that contains a breakdown of the parts/features we need for this integration |
The implementation in the stac-catalog-builder is complete: VitoTAP/stac-catalog-builder#16 Some small improvements can still be done, to update the collections & items in the STAC API with improved information, but those should be separate GH issues. At present, three of the VPP collections have been converted and uploaded now to the development environment of the terra-stac-api at VITO. |
Fourth collection has also been uploaded to the STAC API. Overview:
|
How we can solve the long download of the large collection: We can add some options to the command to tell it what time slice to download. We already divide that entire period into smaller time slots in order to limit the number of products in each query to a reasonable number. So if we add options for a start and end date then we could do a partial download. Furthermore, with same additional work we could download the whole collection in several parts, and in each run save out the STAC items for just those slices. |
Update: I have been trying to load the uploaded stac collections in openeo, without luck. |
It seems that the eo:bands are missing from the stac items, which is needed for openeo. |
Will take 2 weeks of debugging. We already have 4/5 collections but does require someone to help testing of STAC API and integration with openEO. |
I'll keep editing this column as bugs are found. I ran some different load_stac's from different sources, as I noticed the errors I encounter often differ. comments:
|
#460 Traceback (most recent call last): File "batch_job.py", line 1347, in <module> main(sys.argv) File "batch_job.py", line 1014, in main run_driver() File "batch_job.py", line 985, in run_driver run_job( File "/opt/venv/lib64/python3.8/site-packages/openeogeotrellis/utils.py", line 56, in memory_logging_wrapper return function(*args, **kwargs) File "batch_job.py", line 1078, in run_job result = ProcessGraphDeserializer.evaluate(process_graph, env=env, do_dry_run=tracer) File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 377, in evaluate result = convert_node(result_node, env=env) File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 402, in convert_node process_result = apply_process(process_id=process_id, args=processGraph.get('arguments', {}), File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 1572, in apply_process args = {name: convert_node(expr, env=env) for (name, expr) in sorted(args.items())} File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 1572, in <dictcomp> args = {name: convert_node(expr, env=env) for (name, expr) in sorted(args.items())} File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 416, in convert_node return convert_node(processGraph['node'], env=env) File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 402, in convert_node process_result = apply_process(process_id=process_id, args=processGraph.get('arguments', {}), File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 1604, in apply_process return process_function(args=ProcessArgs(args, process_id=process_id), env=env) File "/opt/venv/lib64/python3.8/site-packages/openeo_driver/ProcessGraphDeserializer.py", line 2216, in load_stac return env.backend_implementation.load_stac(url=url, load_params=load_params, env=env) File "/opt/venv/lib64/python3.8/site-packages/openeogeotrellis/backend.py", line 1079, in load_stac pyramid_factory = jvm.org.openeo.geotrellis.file.PyramidFactory( File "/opt/spark3_4_0/python/lib/py4j-0.10.9.7-src.zip/py4j/java_gateway.py", line 1587, in __call__ return_value = get_return_value( File "/opt/spark3_4_0/python/lib/py4j-0.10.9.7-src.zip/py4j/protocol.py", line 326, in get_return_value raise Py4JJavaError( py4j.protocol.Py4JJavaError: An error occurred while calling None.org.openeo.geotrellis.file.PyramidFactory. : java.lang.IllegalArgumentException: requirement failed at scala.Predef$.require(Predef.scala:268) at org.openeo.geotrellis.file.PyramidFactory.<init>(PyramidFactory.scala:47) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374) at py4j.Gateway.invoke(Gateway.java:238) at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80) at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69) at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182) at py4j.ClientServerConnection.run(ClientServerConnection.java:106) at java.base/java.lang.Thread.run(Thread.java:829)
FYI, this error when querying https://stac.terrascope.be:
is because the underlying assets require authentication (if you click an asset's href in your browser, it will redirect you to a login page; it's this response that doesn't have an |
Update: S3 seems to work on CDSE
|
The following collection are now available on https://stac.openeo.vito.be/ and should work on CDSE-staging
I am still trying to build |
@bossie Define collections that are stac based (layercatalog). So load_collection has to call load_stac. |
important note: |
Note: the assets are in the |
@VictorVerhaert I did notice that For some reason loading these collections seems to take a really long time, much longer than I remember. 🤔 Maybe something similar to #250? |
TODO: incorporate property filters defined in |
|
Confirmed: works (for "s1" and "s2"): data_cube = (connection
.load_collection(collection_id, bands=["SPROD", "TPROD", "QFLAG"], properties={"season": lambda s: s == "s1"})
.filter_temporal(["2017-07-01", "2018-07-31"])
.filter_bbox([5.00, 51.20, 5.01, 51.21])
.save_result("GTiff")) |
commited collection config for seasonal collections |
Still needs work wrt/ bands order defined in Adapt related test:
|
https://land.copernicus.eu/pan-european/biophysical-parameters/high-resolution-vegetation-phenology-and-productivity
problem here is that there's one collection, with multiple producttypes, and each type has a single band
this should become one collection with multiple bands
The text was updated successfully, but these errors were encountered: