From 07bb6244d7adc0e84dcd423d326109c63a54388f Mon Sep 17 00:00:00 2001 From: Adrien Perrin Date: Thu, 15 Feb 2024 13:02:45 +0100 Subject: [PATCH] add converters for Sentinel 1 & 2 level 1 --- .../converters/idf/converter.py | 35 +++++++++++++++++-- .../converters/idf/parameters/sentinel1_l1 | 3 ++ .../converters/idf/parameters/sentinel2_l1 | 3 ++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 geospaas_processing/converters/idf/parameters/sentinel1_l1 create mode 100644 geospaas_processing/converters/idf/parameters/sentinel2_l1 diff --git a/geospaas_processing/converters/idf/converter.py b/geospaas_processing/converters/idf/converter.py index 330cbce..91cceee 100644 --- a/geospaas_processing/converters/idf/converter.py +++ b/geospaas_processing/converters/idf/converter.py @@ -137,8 +137,12 @@ class Sentinel1IDFConverter(MultiFilesIDFConverter): """IDF converter for Sentinel-1 datasets""" PARAMETER_SELECTORS = ( - ParameterSelector(matches=lambda d: re.match('^S1[AB]_[A-Z0-9]{2}_OCN.*$', d.entry_id), - parameter_files=('sentinel1_l2_rvl',)), + ParameterSelector( + matches=lambda d: re.match('^S1[AB]_[A-Z0-9]{2}_OCN.*$', d.entry_id), + parameter_files=('sentinel1_l2_rvl',)), + ParameterSelector( + matches=lambda d: re.match('^S1[AB]_[A-Z0-9]{2}_(GRD|SLC).*$', d.entry_id), + parameter_files=('sentinel1_l1',)), ) @staticmethod @@ -157,6 +161,33 @@ def list_files_to_convert(dataset_file_path): f"Could not find a measurement directory inside {dataset_file_path}") from error +@IDFConversionManager.register() +class Sentinel2IDFConverter(MultiFilesIDFConverter): + """IDF converter for Sentinel-2 datasets""" + + PARAMETER_SELECTORS = ( + ParameterSelector( + matches=lambda d: re.match('^S2[AB]_MSIL1C.*$', d.entry_id), + parameter_files=('sentinel2_l1',)), + ) + + @staticmethod + def list_files_to_convert(dataset_file_path): + """Returns the path to the granule L1C directory of the + dataset + """ + measurement_dir = os.path.join(dataset_file_path, 'GRANULE') + try: + return [ + os.path.join(measurement_dir, path) + for path in os.listdir(measurement_dir) + if path.startswith('L1C') + ] + except (FileNotFoundError, NotADirectoryError) as error: + raise ConversionError( + f"Could not find a measurement directory inside {dataset_file_path}") from error + + @IDFConversionManager.register() class Sentinel3SLSTRL2WSTIDFConverter(MultiFilesIDFConverter): """IDF converter for Sentinel 3 SLSTR L2 WST datasets""" diff --git a/geospaas_processing/converters/idf/parameters/sentinel1_l1 b/geospaas_processing/converters/idf/parameters/sentinel1_l1 new file mode 100644 index 0000000..03e2e3f --- /dev/null +++ b/geospaas_processing/converters/idf/parameters/sentinel1_l1 @@ -0,0 +1,3 @@ +-t sentinel1/L1 +-o path = seacope/data + collection = sentinel1_l1 diff --git a/geospaas_processing/converters/idf/parameters/sentinel2_l1 b/geospaas_processing/converters/idf/parameters/sentinel2_l1 new file mode 100644 index 0000000..61eeeec --- /dev/null +++ b/geospaas_processing/converters/idf/parameters/sentinel2_l1 @@ -0,0 +1,3 @@ +-t sentinel2/L1 +-o path = seacope/data + collection = sentinel2_l1