Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagepy
collapsetrue
## === retrieve GloFAS Medium-Range Forecast === 

import cdsapi
import datetime
import warnings



def compute_dates_range(start_date,end_date,loop_days=True):


    start_date = datetime.date(*[int(x) for x in start_date.split('-')])
    
    end_date = datetime.date(*[int(x) for x in end_date.split('-')])
    
    ndays =  (end_date - start_date).days + 1
    
    dates = []
    for d in range(ndays):
        dates.append(start_date + datetime.timedelta(d))
    
    if not loop_days:
        dates = [i for i in dates if i.day == 1]
    else:
        pass
    return dates



if __name__ == '__main__':


    # start the client
    c = cdsapi.Client()


    # user inputs
    START_DATE = '2019-11-05' # first date with available data

    END_DATE = '2021-03-15' 

    LEADTIMES =  [str(lt) for lt in range(24,744,24)]


    # loop over dates and save to disk

    dates = compute_dates_range(START_DATE,END_DATE)

    for date in dates:

        year  = date.strftime('%Y')
        month = date.strftime('%m')
        day   = date.strftime('%d')

        print(f"RETRIEVING: {year}-{month}-{day}")

        c.retrieve(
            'cems-glofas-forecast',
            {
                'format': 'grib',
                'system_version':'operational',
                'hydrological_model': 'htessel_lisflood',
                'product_type':'ensemble_perturbed_forecasts',
                'variable': 'river_discharge_in_the_last_24_hours',
                'year': year,
                'month': month,
                'day': day,
                'leadtime_hour':LEADTIMES
            },
            f'glofas_forecast_{year}_{month}_{day}.grib')


GloFAS Seasonal forecast

Code Block
languagepytitleGloFAS Seasonal Forecast
collapsetrue
## === retrieve GloFAS Seasonal Forecast ===
 
## === subset South America/Amazon region ===
 
import cdsapi
 
 
if __name__ == '__main__':
    c = cdsapi.Client()
 
    YEARS  = ['%d'%(y) for y in range(2020,2022)]
 
 
    MONTHS = ['%02d'%(m) for m in range(1,13)]
 
    LEADTIMES = ['%d'%(l) for l in range(24,2976,24)]
     
    for year in YEARS:
 
        for month in MONTHS:
             
            c.retrieve(
                'cems-glofas-seasonal',
                {  
                'variable': 'river_discharge_in_the_last_24_hours',
                'format': 'grib',
                'year': year,
                'month': '12' if year == '2020' else month,
                'leadtime_hour': LEADTIMES,
                'area': [ 10.95, -90.95, -30.95, -29.95 ]
 
                },
                f'glofas_seasonal_{year}_{month}.grib')

GloFAS Seasonal reforecast

Code Block
languagepytitleGloFAS Seasonal Reforecast
collapsetrue
## === retrieve GloFAS Seasonal Reforecast ===
 
## === subset South America/Amazon region ===
 
import cdsapi
 
if __name__ == '__main__':
 
 
    c = cdsapi.Client()
 
    YEARS  = ['%d'%(y) for y in range(1981,2021)]
 
    MONTHS = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']
 
    LEADTIMES = ['%d'%(l) for l in range(24,2976,24)]
     
    for year in YEARS:
        for month in MONTHS:
 
            c.retrieve(
                'cems-glofas-seasonal-reforecast',
                {
                    'system_version': 'version_2_2',
                    'variable':'river_discharge_in_the_last_24_hours',
                    'format':'grib',
                    'hydrological_model':'htessel_lisflood',
                    'hyear': year,
                    'hmonth': month,
                    'leadtime_hour': LEADTIMES,
                    'area': [ 10.95, -90.95, -30.95, -29.95 ]
                },
                f'glofas_seasonal_reforecast_{year}_{month}.grib')

...