diff --git a/algorithm_catalog/david_frantz/force_level2/records/force_level2.json b/algorithm_catalog/david_frantz/force_level2/records/force_level2.json new file mode 100644 index 00000000..c903f566 --- /dev/null +++ b/algorithm_catalog/david_frantz/force_level2/records/force_level2.json @@ -0,0 +1,145 @@ +{ + "id": "force_level2", + "type": "Feature", + "conformsTo": [ + "https://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core", + "https://apex.esa.int/core/openeo-udp" + ], + "geometry": null, + "properties": { + "created": "2026-06-26T11:00:00Z", + "updated": "2026-08-19T11:37:00Z", + "type": "service", + "title": "FORCE level 2", + "description": "Framework for Operational Radiometric Correction for Environmental monitoring (FORCE) Level 2 processor to generate Analysis Ready Data Cubes from Sentinel-2 products", + "keywords": [ + "Sentinel-2" + ], + "language": { + "code": "en-US", + "name": "English (United States)" + }, + "languages": [ + { + "code": "en-US", + "name": "English (United States)" + } + ], + "contacts": [ + { + "name": "David Frantz", + "position": "Professor", + "organization": "Geoinformatics - Spatial Data Science, Trier University", + "email": "david.frantz@uni-trier.de", + "roles": [ + "principal investigator" + ], + "links": [ + { + "href": "https://www.uni-trier.de/universitaet/fachbereiche-faecher/fachbereich-vi/faecher/geoinformatik", + "title": "Fachverbund Geoinformatik - Universität Trier", + "rel": "about", + "type": "text/html" + }, + { + "href": "https://github.com/davidfrantz/force", + "title": "FORCE source code repository - Github", + "rel": "about", + "type": "text/html" + }, + { + "href": "https://force-eo.readthedocs.io/", + "title": "FORCE documentation", + "rel": "about", + "type": "text/html" + } + ] + + }, + { + "name": "Hannes Neuschmidt", + "position": "Software Engineer", + "organization": "Brockmann Consult GmbH", + "links": [ + { + "href": "https://www.brockmann-consult.de/", + "title": "Brockmann Consult GmbH website", + "rel": "about", + "type": "text/html" + } + ], + "contactInstructions": "Contact via Brockmann Consult GmbH", + "roles": [ + "implementor" + ] + } + ], + "themes": [ + { + "concepts": [ + { + "id": "Sentinel-2 MSI" + } + ], + "scheme": "https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/sciencekeywords" + } + ], + "formats": [ + { + "name": "GeoTIFF" + } + ], + "license": "GPLV3.0" + }, + "linkTemplates": [], + "links": [ + { + "rel": "about", + "type": "text/html", + "title": "Scientific Publication: FORCE - Landsat + Sentinel-2 Analysis Ready Data and Beyond", + "href": "https://doi.org/10.3390/rs11091124" + }, + { + "rel": "code", + "type": "text/html", + "title": "Source code repository of the FORCE EO Application Package implementing this process", + "href": "https://github.com/bcdev/apex-force-openeo" + }, + { + "rel": "notebook", + "type": "application/x-ipynb+json", + "title": "Example notebook: Query, process, download results", + "href": "https://github.com/bcdev/apex-force-openeo/blob/main/examples/run-level2-and-download/FORCE_level2_and_download_external_query.ipynb" + }, + { + "rel": "application", + "type": "application/x-ipynb+json", + "title": "Example notebook: Query, process, download results", + "href": "https://github.com/bcdev/apex-force-openeo/blob/main/examples/run-level2-and-download/FORCE_level2_and_download_external_query.ipynb" + }, + { + "rel": "service", + "type": "application/json", + "title": "CDSE openEO federation", + "href": "https://openeofed.dataspace.copernicus.eu" + }, + { + "rel": "platform", + "type": "application/json", + "title": "CDSE openEO federation", + "href": "../../../../platform_catalog/cdse_openeo_federation.json" + }, + { + "rel": "provider", + "type": "application/json", + "title": "David Frantz", + "href": "../../record.json" + }, + { + "rel": "thumbnail", + "type": "image/png", + "title": "Thumbnail image", + "href": "./thumbnail.png" + } + ] +} diff --git a/algorithm_catalog/david_frantz/force_level2/records/force_level2_description.md b/algorithm_catalog/david_frantz/force_level2/records/force_level2_description.md new file mode 100644 index 00000000..31a4fc5a --- /dev/null +++ b/algorithm_catalog/david_frantz/force_level2/records/force_level2_description.md @@ -0,0 +1,71 @@ +# FORCE level 2 + +FORCE (Framework for Operational Radiometric Correction for Environmental Monitoring) is a processing framework for Sentinel-2 and Landsat imagery. It supports the generation of Analysis Ready Data Cubes (level 2 processing) and many higher level processing operations such as time series analysis. FORCE is developed by Prof. David Frantz (Geoinformatics - Spatial Data Science, Trier University) and the FORCE Open Source community. Please make sure to [acknowledge their work accordingly](https://force-eo.readthedocs.io/en/latest/policy/citation.html) when processing with FORCE. + +This process provides the FORCE [level 2 processing system](https://force-eo.readthedocs.io/en/latest/components/lower-level/level2/index.html) to produce Analysis Ready Data Cubes from Sentinel-2 L1C data. +The process supports [many of the parameters](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/guide/parametrization.html) of the FORCE level 2 processing system. + +The FORCE toolbox was cloudified as part of the [APEx toolbox cloudification activity](https://apex.esa.int/services/toolbox-cloudification). + +> Please note that this is an experimental integration of FORCE into openEO, which is not suitable for large scale processing. For an overview of features and limitations compared to running FORCE locally, please consult the [official documentation](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/feature_overview.html). + +> Please be aware that FORCE processing uses FORCE's native data cube model instead of openEO data cubes. Therefore, further processing of the data in openEO is limited to the FORCE Time Series Analysis +> process. + +## Features + +- Dedicated openEO process `force_level2` to generate FORCE Analysis Ready Data Cubes +- STAC generation for FORCE data cubes produced by the process +- Automatic Sentinel-2 and Copernicus DEM input data staging +- Asynchronous further processing with FORCE Time Series Analysis on CDSE without download of level 2 products using OpenEO workspaces. + + +## Example usage + + +```Python +import openeo +from openeo.rest.stac_resource import StacResource +from openeo.internal.graph_building import PGNode + + +connection = openeo.connect("openeo.dataspace.copernicus.eu").authenticate_oidc() + + +# Select a STAC item to process (collections, catalogs and item collections are also supported!) +stac_item_url = "https://stac.dataspace.copernicus.eu/v1/collections/sentinel-2-l1c/items/S2A_MSIL1C_20260419T100711_N0512_R022_T32TPQ_20260419T152521" + +# Create the process graph +processing_name = "FORCE_level2" +force_l2_stac_resource = StacResource( + graph=PGNode( + process_id="force_level2", + arguments={ + "stac_url": stac_item_url, + "name": processing_name, + "do_brdf": True, + # other FORCE level 2 parameters + }, + ), + connection=connection, +) + +# Run processing +l2_job = force_l2_stac_resource.create_job(title=processing_name) +l2_job.start_and_wait() + +# Download results (alternatively: Continue processing without download with Time Series Analysis. Check out the guide!) + +l2_results = l2_job.get_results() +l2_results.download_files("force-level2-results") +``` + +## Documentation + +- [FORCE on CDSE using openEO](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/): Main documentation site for the FORCE integration into CDSE openEO. Part of the APEx [toolbox documentation portal](https://esa-apex.github.io/apex_toolbox_documentation/docs/) + - [Features and Limitations](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/feature_overview.html) + - [User Guide](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/guide/intro.html) + +- [FORCE](https://force-eo.readthedocs.io/) Documentation of the FORCE processing engine +- [Example notebooks](https://github.com/bcdev/apex-force-openeo/tree/main/examples) + diff --git a/algorithm_catalog/david_frantz/force_level2/records/thumbnail.png b/algorithm_catalog/david_frantz/force_level2/records/thumbnail.png new file mode 100644 index 00000000..a78d2afc Binary files /dev/null and b/algorithm_catalog/david_frantz/force_level2/records/thumbnail.png differ diff --git a/algorithm_catalog/david_frantz/force_tsa/records/force_tsa.json b/algorithm_catalog/david_frantz/force_tsa/records/force_tsa.json new file mode 100644 index 00000000..59e59fb6 --- /dev/null +++ b/algorithm_catalog/david_frantz/force_tsa/records/force_tsa.json @@ -0,0 +1,145 @@ +{ + "id": "force_tsa", + "type": "Feature", + "conformsTo": [ + "https://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core", + "https://apex.esa.int/core/openeo-udp" + ], + "geometry": null, + "properties": { + "created": "2026-06-26T11:00:00Z", + "updated": "2026-08-19T11:37:00Z", + "type": "service", + "title": "FORCE Time Series Analysis", + "description": "Framework for Operational Radiometric Correction for Environmental monitoring (FORCE) Time Series Analysis processor to generate time series statistics from FORCE level 2 data cubes", + "keywords": [ + "Sentinel-2" + ], + "language": { + "code": "en-US", + "name": "English (United States)" + }, + "languages": [ + { + "code": "en-US", + "name": "English (United States)" + } + ], + "contacts": [ + { + "name": "David Frantz", + "position": "Professor", + "organization": "Geoinformatics - Spatial Data Science, Trier University", + "email": "david.frantz@uni-trier.de", + "roles": [ + "principal investigator" + ], + "links": [ + { + "href": "https://www.uni-trier.de/universitaet/fachbereiche-faecher/fachbereich-vi/faecher/geoinformatik", + "title": "Fachverbund Geoinformatik - Universität Trier", + "rel": "about", + "type": "text/html" + }, + { + "href": "https://github.com/davidfrantz/force", + "title": "FORCE source code repository - Github", + "rel": "about", + "type": "text/html" + }, + { + "href": "https://force-eo.readthedocs.io/", + "title": "FORCE documentation", + "rel": "about", + "type": "text/html" + } + ] + + }, + { + "name": "Hannes Neuschmidt", + "position": "Software Engineer", + "organization": "Brockmann Consult GmbH", + "links": [ + { + "href": "https://www.brockmann-consult.de/", + "title": "Brockmann Consult GmbH website", + "rel": "about", + "type": "text/html" + } + ], + "contactInstructions": "Contact via Brockmann Consult GmbH", + "roles": [ + "implementor" + ] + } + ], + "themes": [ + { + "concepts": [ + { + "id": "Sentinel-2 MSI" + } + ], + "scheme": "https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/sciencekeywords" + } + ], + "formats": [ + { + "name": "GeoTIFF" + } + ], + "license": "GPLV3.0" + }, + "linkTemplates": [], + "links": [ + { + "rel": "about", + "type": "text/html", + "title": "Scientific Publication: FORCE - Landsat + Sentinel-2 Analysis Ready Data and Beyond", + "href": "https://doi.org/10.3390/rs11091124" + }, + { + "rel": "code", + "type": "text/html", + "title": "Source code repository of the FORCE EO Application Package implementing this process", + "href": "https://github.com/bcdev/apex-force-openeo" + }, + { + "rel": "notebook", + "type": "application/x-ipynb+json", + "title": "Example notebook: Query, process, download results", + "href": "https://github.com/bcdev/apex-force-openeo/blob/main/examples/run-level2-and-tsa/FORCE_level2_and_TSA.ipynb" + }, + { + "rel": "application", + "type": "application/x-ipynb+json", + "title": "Example notebook: Query, process, download results", + "href": "https://github.com/bcdev/apex-force-openeo/blob/main/examples/run-level2-and-tsa/FORCE_level2_and_TSA.ipynb" + }, + { + "rel": "service", + "type": "application/json", + "title": "CDSE openEO federation", + "href": "https://openeofed.dataspace.copernicus.eu" + }, + { + "rel": "platform", + "type": "application/json", + "title": "CDSE openEO federation", + "href": "../../../../platform_catalog/cdse_openeo_federation.json" + }, + { + "rel": "provider", + "type": "application/json", + "title": "David Frantz", + "href": "../../record.json" + }, + { + "rel": "thumbnail", + "type": "image/png", + "title": "Thumbnail image", + "href": "./thumbnail.png" + } + ] +} diff --git a/algorithm_catalog/david_frantz/force_tsa/records/force_tsa_description.md b/algorithm_catalog/david_frantz/force_tsa/records/force_tsa_description.md new file mode 100644 index 00000000..f9803f91 --- /dev/null +++ b/algorithm_catalog/david_frantz/force_tsa/records/force_tsa_description.md @@ -0,0 +1,82 @@ +# FORCE Time Series Analysis (TSA) + +FORCE (Framework for Operational Radiometric Correction for Environmental Monitoring) is a processing framework for Sentinel-2 and Landsat imagery. It supports the generation of Analysis Ready Data Cubes (level 2 processing) and many higher level processing operations such as time series analysis. FORCE is developed by Prof. David Frantz (Geoinformatics - Spatial Data Science, Trier University) and the FORCE Open Source community. Please make sure to [acknowledge their work accordingly](https://force-eo.readthedocs.io/en/latest/policy/citation.html) when processing with FORCE. + +This process provides the FORCE Time Series Analysis, part of the [Higher Level Processing System](https://force-eo.readthedocs.io/en/latest/components/higher-level/index.html) to produce +Time Series Statistics and other analysis products in the FORCE data cube format. +The process supports [many of the parameters](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/guide/parametrization.html) of the FORCE Time Series Analysis module. + +As an input, the `force_tsa` process requires a STAC catalog referring to FORCE level 2 data cube as produced by the `force_level2` process. + +The FORCE toolbox was cloudified as part of the [APEx toolbox cloudification activity](https://apex.esa.int/services/toolbox-cloudification). + +> Please note that this is an experimental integration of FORCE into openEO, which is not suitable for large scale processing. For an overview of features and limitations compared to running FORCE locally, please consult the [official documentation](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/feature_overview.html). + +> Please be aware that FORCE processing uses FORCE's native data cube model instead of openEO data cubes. Therefore, further processing of the data in openEO is limited to the FORCE Time Series Analysis +> process. + +## Features + +- Dedicated openEO process `force_tsa` to generate FORCE Analysis Ready Data Cubes +- STAC generation for FORCE data cubes produced by the process + + +## Example usage + + +```Python +import openeo +from openeo.rest.stac_resource import StacResource +from openeo.internal.graph_building import PGNode + + +connection = openeo.connect("openeo.dataspace.copernicus.eu").authenticate_oidc() + + + +# Select a FORCE level2 data cube to process. You must run the `force_level2` process first to create such a cube. +# See the user guide and example notebook for a full example on how to do this. +WORKSPACE_URL = "https://s3.waw4-1.cloudferro.com/apex-force-results-waw4-1-exotc5yuexi2c5tvwqhoivj62fz8v0uupy0me" + +# merge = +l2_catalog_url = f"{WORKSPACE_URL}/{merge}/catalog.json" + +# Create the process graph +processing_name = "FORCE_TSA" + +tsa_stac_resource = openeo.rest.stac_resource.StacResource( + graph=openeo.internal.graph_building.PGNode( + process_id="force_tsa", + arguments={ + "stac_url": l2_catalog_url + "name": processing_name, + "date_range": temporal_extent, + "output_stm": True, + # update process parameters + "x_tile_range": [30, 32], + "y_tile_range": [30, 30], + "stm": ["AVG", "MAX"], + }, + ), + connection=connection, +) + +# Run processing +tsa_job = tsa_stac_resource.create_job(title=processing_name) +tsa_job.start_and_wait() + +# Download results (alternatively: Continue processing without download with Time Series Analysis. Check out the guide!) + +tsa_results = tsa_job.get_results() +tsa_results.download_files("force-tsa-results") +``` + +## Documentation + +- [FORCE on CDSE using openEO](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/): Main documentation site for the FORCE integration into CDSE openEO. Part of the APEx [toolbox documentation portal](https://esa-apex.github.io/apex_toolbox_documentation/docs/) + - [Features and Limitations](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/feature_overview.html) + - [User Guide](https://esa-apex.github.io/apex_toolbox_documentation/docs/force/guide/intro.html) + +- [FORCE](https://force-eo.readthedocs.io/) Documentation of the FORCE processing engine +- [Example notebooks](https://github.com/bcdev/apex-force-openeo/tree/main/examples) + diff --git a/algorithm_catalog/david_frantz/force_tsa/records/thumbnail.png b/algorithm_catalog/david_frantz/force_tsa/records/thumbnail.png new file mode 100644 index 00000000..a78d2afc Binary files /dev/null and b/algorithm_catalog/david_frantz/force_tsa/records/thumbnail.png differ diff --git a/algorithm_catalog/david_frantz/record.json b/algorithm_catalog/david_frantz/record.json new file mode 100644 index 00000000..7e90b5b3 --- /dev/null +++ b/algorithm_catalog/david_frantz/record.json @@ -0,0 +1,64 @@ +{ + "id": "david_frantz", + "type": "Feature", + "conformsTo": [ + "https://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core" + ], + "properties": { + "created": "2026-05-15T14:00:00Z", + "updated": "2026-05-15T14:00:00Z", + "type": "algorithm_provider", + "title": "David Frantz", + "description": "Author ", + "keywords": [], + "language": { + "code": "en-US", + "name": "English (United States)" + }, + "languages": [ + { + "code": "en-US", + "name": "English (United States)" + } + ], + "contacts": [], + "themes": [], + "license": "other", + "acl": { + "admin": [] + } + }, + "linkTemplates": [], + "links": [ + { + "rel": "website", + "type": "text/html", + "title": "FORCE documentation", + "href": "https://force-eo.readthedocs.io/en/latest/" + }, + { + "rel": "website", + "type": "text/html", + "title": "University website", + "href": "https://www.uni-trier.de/universitaet/fachbereiche-faecher/fachbereich-vi/faecher/geoinformatik/team/prof-dr-d-frantz" + }, + { + "rel": "website", + "type": "text/html", + "title": "FORCE source code repository", + "href": "https://github.com/davidfrantz/force" + }, + { + "rel": "logo-light", + "type": "image/png", + "title": "Logo", + "href": "https://www.uni-trier.de/typo3conf/ext/zimktheme_unitrier/Resources/Public/Logos/Logo_Universitaet.svg" + }, + { + "rel": "logo-dark", + "type": "image/png", + "title": "Logo", + "href": "https://www.uni-trier.de/typo3conf/ext/zimktheme_unitrier/Resources/Public/Logos/Logo_Universitaet.svg" + } + ] +}