diff --git a/src/openeo_processes/cubes.py b/src/openeo_processes/cubes.py index 418bd42e..3bd3668f 100644 --- a/src/openeo_processes/cubes.py +++ b/src/openeo_processes/cubes.py @@ -6,6 +6,7 @@ import odc.algo import rioxarray # needed by save_result even if not directly called import xarray as xr +from openeo_processes.errors import DimensionNotAvailable from openeo_processes.extension.odc import write_odc_product from openeo_processes.utils import process, get_time_dimension_from_data from scipy import optimize @@ -17,7 +18,13 @@ def odc_load_helper(odc_cube, params: Dict[str, Any]) -> xr.DataArray: """Helper method to load a xarray DataArray from ODC.""" - datacube = odc_cube.load(**params) + try: + datacube = odc_cube.load(**params) + except ValueError as exp: + raise ValueError('For the provided collection, spatial and temporal extent no data is available. Please try' + ' a different extent.') + except KeyError: + raise DimensionNotAvailable() # Improve CPU and MEM USAGE for name, data_var in datacube.data_vars.items(): diff --git a/src/openeo_processes/errors.py b/src/openeo_processes/errors.py index eff901b9..f9d54c0b 100644 --- a/src/openeo_processes/errors.py +++ b/src/openeo_processes/errors.py @@ -45,3 +45,11 @@ def __init__(self, msg): def __str__(self): return self.message + + +class DimensionNotAvailable(Exception): + def __init__(self, msg): + self.message = "A dimension (band) with the specified name does not exist." + + def __str__(self): + return self.message