1- """Script to download ESACCI-CLOUD."""
1+ """Script to download daily and monthly ESACCI-CLOUD data ."""
22
3+ import logging
34from datetime import datetime
45
56from dateutil import relativedelta
67
7- from esmvaltool .cmorizers .data .downloaders .ftp import CCIDownloader
8+ from esmvaltool .cmorizers .data .downloaders .wget import WGetDownloader
9+ from esmvaltool .cmorizers .data .utilities import read_cmor_config
10+
11+ logger = logging .getLogger (__name__ )
812
913
1014def download_dataset (
@@ -27,40 +31,129 @@ def download_dataset(
2731 overwrite : bool
2832 Overwrite already downloaded files
2933 """
34+
35+ start_date_day = False
3036 if start_date is None :
3137 start_date = datetime (1982 , 1 , 1 )
38+ start_date_day = datetime (2003 , 1 , 1 )
3239 if end_date is None :
33- end_date = datetime (2016 , 1 , 1 )
40+ end_date = datetime (2016 , 12 , 31 )
3441 loop_date = start_date
3542
36- downloader = CCIDownloader (
43+ downloader = WGetDownloader (
3744 config = config ,
3845 dataset = dataset ,
3946 dataset_info = dataset_info ,
4047 overwrite = overwrite ,
4148 )
42- downloader .connect ()
43- end_of_file = "ESACCI-L3C_CLOUD-CLD_PRODUCTS-AVHRR_NOAA-12-fv3.0.nc"
44- filler_data = {
45- 1994 : [
46- f"AVHRR_NOAA_12/1994/199409-{ end_of_file } " ,
47- f"AVHRR_NOAA_12/1994/199410-{ end_of_file } " ,
48- f"AVHRR_NOAA_12/1994/199411-{ end_of_file } " ,
49- f"AVHRR_NOAA_12/1994/199412-{ end_of_file } " ,
50- ],
51- 1995 : [
52- f"AVHRR_NOAA_12/1995/199501-{ end_of_file } " ,
53- ],
54- }
49+
50+ # check if daily data needs to be downloaded
51+ cmor_config = read_cmor_config (dataset )
52+ daily_data = cmor_config ["daily_data" ]
53+ if not daily_data :
54+ logger .info (
55+ 'If daily data needs to be downloaded change "daily_data" in the '
56+ 'cmor_config file to "True" '
57+ "(esmvaltool/cmorizers/data/cmor_config/ESACCI-CLOUD.yml)"
58+ )
59+
60+ # Base paths for L3U (daily data) and L3C (monthly data)
61+ base_path_l3u = (
62+ "https://public.satproj.klima.dwd.de/data/ESA_Cloud_CCI/"
63+ "CLD_PRODUCTS/v3.0/L3U/"
64+ )
65+ base_path_l3c = (
66+ "https://public.satproj.klima.dwd.de/data/ESA_Cloud_CCI/"
67+ "CLD_PRODUCTS/v3.0/L3C/"
68+ )
69+
70+ wget_options = [
71+ "-r" ,
72+ "-e robots=off" , # Ignore robots.txt
73+ "--no-parent" , # Don't ascend to the parent directory
74+ '--reject="index.html"' , # Reject any HTML files
75+ ]
5576
5677 while loop_date <= end_date :
5778 year = loop_date .year
58- downloader .set_cwd ("version3/L3C/AVHRR-PM/v3.0" )
59- for folder in downloader .list_folders ():
60- for year_folder in downloader .list_folders (folder ):
61- if int (year_folder ) == year :
62- downloader .download_year (f"{ folder } /{ year_folder } " )
63- downloader .set_cwd ("version3/L3C/AVHRR-AM/v3.0" )
64- for extra_file in filler_data .get (year , []):
65- downloader .download_file (extra_file )
66- loop_date += relativedelta .relativedelta (years = 1 )
79+ month = loop_date .month
80+ date = f"{ year } { month :02} "
81+
82+ if datetime (1982 , 1 , 1 ) <= loop_date < datetime (1985 , 2 , 1 ):
83+ sat_am = ""
84+ sat_pm = "AVHRR-PM/AVHRR_NOAA-7/"
85+ elif datetime (1985 , 2 , 1 ) <= loop_date < datetime (1988 , 11 , 1 ):
86+ sat_am = ""
87+ sat_pm = "AVHRR-PM/AVHRR_NOAA-9/"
88+ elif datetime (1988 , 11 , 1 ) <= loop_date < datetime (1991 , 9 , 1 ):
89+ sat_am = ""
90+ sat_pm = "AVHRR-PM/AVHRR_NOAA-11/"
91+ elif datetime (1991 , 9 , 1 ) <= loop_date < datetime (1994 , 9 , 1 ):
92+ sat_am = "AVHRR-AM/AVHRR_NOAA-12/"
93+ sat_pm = "AVHRR-PM/AVHRR_NOAA-11/"
94+ elif datetime (1994 , 9 , 1 ) <= loop_date < datetime (1995 , 2 , 1 ):
95+ sat_am = "AVHRR-AM/AVHRR_NOAA-12/"
96+ sat_pm = ""
97+ elif datetime (1995 , 2 , 1 ) <= loop_date < datetime (1999 , 1 , 1 ):
98+ sat_am = "AVHRR-AM/AVHRR_NOAA-12/"
99+ sat_pm = "AVHRR-PM/AVHRR_NOAA-14/"
100+ elif datetime (1999 , 1 , 1 ) <= loop_date < datetime (2001 , 4 , 1 ):
101+ sat_am = "AVHRR-AM/AVHRR_NOAA-15/"
102+ sat_pm = "AVHRR-PM/AVHRR_NOAA-14/"
103+ elif datetime (2001 , 4 , 1 ) <= loop_date < datetime (2002 , 11 , 1 ):
104+ sat_am = "AVHRR-AM/AVHRR_NOAA-15/"
105+ sat_pm = "AVHRR-PM/AVHRR_NOAA-16/"
106+ elif datetime (2002 , 11 , 1 ) <= loop_date < datetime (2005 , 9 , 1 ):
107+ sat_am = "AVHRR-AM/AVHRR_NOAA-17/"
108+ sat_pm = "AVHRR-PM/AVHRR_NOAA-16/"
109+ elif datetime (2005 , 9 , 1 ) <= loop_date < datetime (2007 , 7 , 1 ):
110+ sat_am = "AVHRR-AM/AVHRR_NOAA-17/"
111+ sat_pm = "AVHRR-PM/AVHRR_NOAA-18/"
112+ elif datetime (2007 , 7 , 1 ) <= loop_date < datetime (2009 , 6 , 1 ):
113+ sat_am = "AVHRR-AM/AVHRR_METOPA/"
114+ sat_pm = "AVHRR-PM/AVHRR_NOAA-18/"
115+ elif datetime (2009 , 6 , 1 ) <= loop_date < datetime (2017 , 1 , 1 ):
116+ sat_am = "AVHRR-AM/AVHRR_METOPA/"
117+ sat_pm = "AVHRR-PM/AVHRR_NOAA-19/"
118+ else :
119+ msg = f"Data for this date { date } is not available"
120+ raise ValueError (msg )
121+
122+ # Download monthly data from L3C
123+ for sat in (sat_am , sat_pm ):
124+ if sat != "" :
125+ # monthly data
126+ logger .info ("Downloading monthly data (L3C) for sat = %s" , sat )
127+ folder_l3c = base_path_l3c + sat + f"{ year } /"
128+ wget_options_l3c = wget_options .copy ()
129+ wget_options_l3c .append (f"--accept={ date } *.nc" )
130+ logger .info (
131+ "Download folder for monthly data (L3C): %s" , folder_l3c
132+ )
133+ downloader .download_file (folder_l3c , wget_options_l3c )
134+
135+ # daily data
136+ if daily_data :
137+ if not start_date_day or (
138+ start_date_day
139+ and datetime (2003 , 1 , 1 )
140+ <= loop_date
141+ <= datetime (2007 , 2 , 1 )
142+ ):
143+ logger .info (
144+ "Downloading daily data (L3U) for sat = %s" , sat
145+ )
146+ folder_l3u = base_path_l3u + sat + f"{ year } /{ month :02} "
147+ wget_options_l3u = wget_options .copy ()
148+ wget_options_l3u .append (
149+ f"--accept={ date } *CLD_MASKTYPE*.nc,"
150+ f"{ date } *CLD_PRODUCTS*.nc"
151+ )
152+ logger .info (
153+ "Download folder for daily data (L3U): %s" ,
154+ folder_l3u ,
155+ )
156+ downloader .download_file (folder_l3u , wget_options_l3u )
157+
158+ # Increment the loop_date by one month
159+ loop_date += relativedelta .relativedelta (months = 1 )
0 commit comments