diff --git a/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.csv b/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.csv index d4a2aa235f6f58e7c22da743adf9eec4edf1a721..99eb237102ac69f75f46f3ef2402af1d74abae4b 100644 --- a/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.csv +++ b/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.csv @@ -1,36 +1,5 @@ pre1_pre2_starttime_pre3_pre4_tile_pre5_endtime_maxclouds_site_nom_indices -#~ S2A_MSIL1C_20161023T070232_N0204_R120_T39LUG_20161023T070234 -#~ S2A_MSIL1C_20160611T072212_N0202_R063_T38KLB_20160611T072355 -#~ S2A_MSIL1C_20160621T072212_N0204_R063_T38KME_20160621T072212 -#~ S2A_MSIL1C_20160608T071222_N0202_R020_T38KLV_20160608T071512 -#~ S2A_MSIL1C_20160608T071222_N0202_R020_T38KMD_20160608T071219 -#~ S2A_MSIL1C_20160621T072212_N0204_R063_T38KLF_20160621T072212 -#~ S2A_MSIL1C_20160628T071222_N0204_R020_T38JMT_20160628T071217 -#~ S2A_MSIL1C_20160611T072212_N0202_R063_T38KMC_20160611T072355 -#~ S2A_MSIL1C_20160608T071222_N0202_R020_T38KLU_20160608T071512 -#~ S2A_MSIL1C_20160628T071222_N0204_R020_T38JLT_20160628T071217 -#~ S2A_MSIL1C_20161108T072212_N0204_R063_T38KLA_20161108T072535 -#~ S2A_MSIL1C_20160516T070242_N0202_R120_T39LTG_20160516T070240 -#~ S2A_MSIL1C_20160516T070242_N0202_R120_T39LTF_20160516T070240 -#~ S2A_MSIL1C_20160516T070242_N0202_R120_T38LRK_20160516T070240 -#~ S2A_MSIL1C_20160708T071222_N0204_R020_T38LRK_20160708T071218 -#~ S2A_MSIL1C_20160715T070242_N0204_R120_T38LRL_20160715T070238 -#~ S2A_MSIL1C_20160715T070242_N0204_R120_T39LTF_20160715T070238 -#~ S2A_MSIL1C_20160830T072212_N0204_R063_T38KMG_20160830T072348 -#~ S2A_MSIL1C_20160817T071222_N0204_R020_T38LNH_20160817T071218 -#~ S2A_MSIL1C_20160817T071222_N0204_R020_T38LPJ_20160817T071218 -#~ S2A_MSIL1C_20160817T071222_N0204_R020_T38LQJ_20160817T071218 -#~ S2A_MSIL1C_20160827T071222_N0204_R020_T38LQH_20160827T071227 -#~ S2A_MSIL1C_20160827T071222_N0204_R020_T38LPH_20160827T071401 -#~ S2A_MSIL1C_20160827T071222_N0204_R020_T38LPH_20160827T071227 -#~ S2A_MSIL1C_20160830T072212_N0204_R063_T38LMH_20160830T072348 -#~ S2A_MSIL1C_20160906T071212_N0204_R020_T38LRJ_20160906T071214 -#~ S2A_MSIL1C_20160926T071212_N0204_R020_T38KMC_20160926T071210 -#~ S2A_MSIL1C_20160926T071212_N0204_R020_T38KLC_20160926T071210 -#~ S2A_MSIL1C_20161108T072212_N0204_R063_T38KLA_20161108T072535 + +# L1C identifier list S2A_MSIL1C_20160830T072212_N0204_R063_T38KLE_20160830T072348 -S2A_MSIL1C_20160909T072212_N0204_R063_T38KLF_20160909T072258 -S2A_MSIL1C_20161029T072212_N0204_R063_T38KME_20161029T072230 -S2A_MSIL1C_20161003T070232_N0204_R120_T39LUC_20161003T070230 -S2A_MSIL1C_20161003T070232_N0204_R120_T39LVC_20161003T070230 -S2A_MSIL1C_20161003T070232_N0204_R120_T39LUC_20161003T070230 + diff --git a/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.py b/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.py index 8e555fce92399283b0d20e74e80ee95949764572..176857e5367164231efa2c790d631644566d3c11 100644 --- a/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.py +++ b/script_examples/process_l2a_and_indices_by_identifier_multiprocessing.py @@ -1,8 +1,19 @@ # -*- coding:utf-8 -*- -""" lance les traitements sur les fichiers L1C qui ont -été téléchargés mais qui n'ont pas été traités +""" Process L1C products by identifiers + + Input : - an identifier list in a csv file + - a Sen2chain L1C library + Output : L2A / indices + + If any argument is supplied nothiing is done, this script outputs only a product list to process but without any processing + + This script uses multiprocessing to process files. + Please adapt the number of process lines 65, 79, 96 according to your hardware + + Please refer to sen2chain wiki for more info : https://framagit.org/jebins/sen2chain/wikis/home """ + import logging import datetime import pandas as pd @@ -19,18 +30,18 @@ except: arg = [] print(arg) -logger = logging.getLogger("Traitement L2A") +logger = logging.getLogger("L2A Processing") logging.basicConfig(level=logging.INFO) logger.setLevel(logging.INFO) -# default nombre de jours à requeter à partir de today -# si le champs n'est pas renseingné ds le csv +# default number of days to check before today +# if this field is empty in the csv file delta_t = 15 -# liste de tuiles à traiter +# file path to tile identifiers list to process fwd = os.path.dirname(os.path.realpath(__file__)) -tiles_file = fwd + "/97_02_traitement_l2a_identifier_multiprocessing.csv" +tiles_file = fwd + "/process_l2a_and_indices_by_identifier_multiprocessing.csv" tiles_list = pd.read_csv(tiles_file, sep = '_', na_values="", na_filter=False, comment='#') @@ -45,15 +56,7 @@ for index, row in tiles_list.iterrows(): logger.info("\n{}".format(tiles_list)) -# Nettoyage de la librairie -clean_list = [] -for index, row in tiles_list.iterrows(): - clean_list.append(row.tile) -lib = Library() -lib.clean(clean_list, remove=True) - - -# Traitement des L1C en L2A +# Processing L1C to L2A l1c_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile) @@ -67,7 +70,7 @@ if l1c_process_list: l2a_res = l2a_multiprocessing(l1c_process_list, nb_proc=12) -# Traitement des L2A (clouds) +# Processing L2A cloud masks cld_l2a_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile) @@ -81,7 +84,7 @@ if cld_l2a_process_list: cld_res = cld_multiprocessing(cld_l2a_process_list, nb_proc=4) -# Traitement des L2A (indices) +# Processing L2A indices indices_l2a_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile) diff --git a/script_examples/process_l2a_and_indices_multiprocessing.csv b/script_examples/process_l2a_and_indices_multiprocessing.csv index 5ab74bfbc6b3df8aaa2e1ce462c66dbd300a78ed..7cda20ded26131a449406b5957460ac4fd544787 100644 --- a/script_examples/process_l2a_and_indices_multiprocessing.csv +++ b/script_examples/process_l2a_and_indices_multiprocessing.csv @@ -1,38 +1,3 @@ tile;start_time;end_time;max_clouds;site;nom;indices - -40KCB;2018-10-01;;;France;Reunion;NDVI/NDWIGAO/NDWIMCF/MNDWI/BIGR/BIRNIR/BIBG -#~ 40KEC;2019-01-01;;;Maurice;Maurice -#~ 41KNU;2019-03-01;;;Maurice;Rodrigues;NDVI/NDWIGAO/NDWIMCF/BIGR/BIRNIR/BIBG -#~ 38LML;2019-01-01;;;France;Mayotte -#~ 38LNL;2019-01-01;;;France;Mayotte -#~ 38LNM;2019-01-01;;;France;Mayotte -#~ 38LMM;2019-01-01;;;Comores;Anjouan_MAY -#~ 38LLN;2019-01-01;;;Comores;Grande_Comores -#~ 38LLM;2019-01-01;;;Comores;GC_Moheli - -#~ #37KFR;2015-01-01;2020-01-01;;TAAF_Eparses;Europa -#~ #37KES;2015-01-01;2020-01-01;;TAAF_Eparses;Bassas -#~ #38KKG;;;;TAAF_Eparses;Juan -#~ #38LPM;20190101;;;TAAF_Eparses;Geyser_Zelee -#~ #38LQN;;;;TAAF_Eparses;Glorieuses -#~ #40MCV;;;;Seychelles;Mahe -#~ #40MCA;;;;Seychelles;Praslin - -#~ 38LPQ;2019-01-01;;;Seychelles;Aldabra - -#~ #38LQQ;;;;Seychelles;Cosmoledo_Cosmoledo -#~ #38LQP;;;;Seychelles;Cosmoledo_Astove -#~ #39GWJ;;;;TAAF_Subantarctique;Crozet_Possession -#~ #39GVJ;;;;TAAF_Subantarctique;Crozet_Cochons_Manchots -#~ #39GVK;;;;TAAF_Subantarctique;Crozet_Cochons_Apotres -#~ #42FXL;;;;TAAF_Subantarctique;Kerguelen_E -#~ #42FWL;;;;TAAF_Subantarctique;Kerguelen_C -#~ #42FVL;;;;TAAF_Subantarctique;Kerguelen_W -#~ #42FVM;;;;TAAF_Subantarctique;Kerguelen_NW -#~ #42FWM;;;;TAAF_Subantarctique;Kerguelen_NC -#~ 38KLA;2019-01-01;;;Madagascar;Morombe;NDVI/NDWIGAO/NDWIMCF/MNDWI/BIGR/BIRNIR/BIBG - -#~ 38KQE;;;;Madagascar;Tana -#~ 38KQD;;;;Madagascar;Sud_Tana -#~ 38KRE;;;;Madagascar;Est_Tana -#~ 38KRD;;;;Madagascar;Sud-Est_Tana +# max_clouds parameter not implemented yet +40KCB;2018-10-01;2018-11-01;;France;Reunion;NDVI/NDWIGAO/NDWIMCF/MNDWI/BIGR/BIRNIR/BIBG diff --git a/script_examples/process_l2a_and_indices_multiprocessing.py b/script_examples/process_l2a_and_indices_multiprocessing.py index 5c3f0ba100043d9371dcca0593ad34acffaa7667..1881b8408f40b495ed09074d58d885b16b3f0b74 100644 --- a/script_examples/process_l2a_and_indices_multiprocessing.py +++ b/script_examples/process_l2a_and_indices_multiprocessing.py @@ -1,16 +1,25 @@ # -*- coding:utf-8 -*- -""" lance les traitements sur les fichiers L1C qui ont -été téléchargés mais qui n'ont pas été traités +""" Process L1C products + + Input : - a tile list in a csv file (tile;start_time;end_time;max_clouds;site;nom;indices) + - a Sen2chain L1C library + Output : L2A / indices + + If any argument is supplied nothiing is done, this script outputs only a product list to process but without any processing + + This script uses multiprocessing to process files. + Adapt the number of process (lines 65, 79, 96) according to your hardware + + Please refer to sen2chain wiki for more info : https://framagit.org/jebins/sen2chain/wikis/home """ + import logging import datetime import pandas as pd -from sen2chain import Tile, L1cProduct, L2aProduct -from sen2chain import l2a_multiprocessing, cldidx_multiprocessing, cld_multiprocessing, idx_multiprocessing -import os, shutil, sys -import glob -import math +from sen2chain import Tile +from sen2chain import l2a_multiprocessing, cld_multiprocessing, idx_multiprocessing +import os, sys from itertools import chain try: @@ -19,18 +28,18 @@ except: arg = [] print(arg) -logger = logging.getLogger("Traitement L2A") +logger = logging.getLogger("L2A Prcessing") logging.basicConfig(level=logging.INFO) logger.setLevel(logging.INFO) -# default nombre de jours à requeter à partir de today -# si le champs n'est pas renseingné ds le csv +# default number of days to check before today +# if this field is empty in the csv file delta_t = 15 -# liste de tuiles à traiter +# file path to tile list to process fwd = os.path.dirname(os.path.realpath(__file__)) -tiles_file = fwd + "/99_traitement_l2a_multiprocessing.csv" +tiles_file = fwd + "/process_l2a_and_indices_multiprocessing.csv" tiles_list = pd.read_csv(tiles_file, sep = ';', na_values="", na_filter=False, comment='#') @@ -45,7 +54,7 @@ for index, row in tiles_list.iterrows(): logger.info("\n{}".format(tiles_list)) -# Traitement des L1C en L2A +# Processing L1C to L2A l1c_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile) @@ -59,7 +68,7 @@ if l1c_process_list: l2a_res = l2a_multiprocessing(l1c_process_list, nb_proc=12) -# Traitement des L2A (clouds) +# Processing L2A cloud masks cld_l2a_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile) @@ -73,7 +82,7 @@ if cld_l2a_process_list: cld_res = cld_multiprocessing(cld_l2a_process_list, nb_proc=4) -# Traitement des L2A (indices) +# Processing L2A indices indices_l2a_process_list = [] for index, row in tiles_list.iterrows(): t = Tile(row.tile)