...
| Table of Content Zone | |
|---|---|
|
Set up the Python environment
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
# create a local virtual environment, you can call it as you wish, here 'myenv' is used. conda create -n myenv python=3.8 # add repository channel conda config --add channels conda-forge # activate the local environment. conda activate myenv # install the required packages conda install -c conda-forge/label/main xarray cfgrib eccodes conda install cartopy netcdf4 matplotlib # and the cdsapi pip install cdsapi |
...
Also for this exercise we are going to retrieve data from the CDS . This time, API, as described in the code blocks below:
Retrieve data
The script shows how to retrieve the control reforecasts product from year 1999 to 2018, relative to the date 2019-01-03, for two station coordinates, one on the river network of the Thames and the other one on the Po river.
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import cdsapi
from datetime import datetime, timedelta
def get_monthsdays(start =[2019,1,1],end=[2019,12,31]):
# reforecast time index
start, end = datetime(*start),datetime(*end)
days = [start + timedelta(days=i) for i in range((end - start).days + 1)]
monthday = [d.strftime("%B-%d").split("-") for d in days if d.weekday() in [0,3] ]
return monthday
# get date index
MONTHSDAYS = get_monthsdays()
if __name__ == '__main__':
c = cdsapi.Client()
# set station coordinates (lat,lon)
COORDS = {
"Thames":[51.35,-0.45],
"Po":[44.85, 11.65]
}
# select all years
YEARS = ['%d'%(y) for y in range(1999,2019)]
# select all leadtime hours
LEADTIMES = ['%d'%(l) for l in range(24,1128,24)]
# loop over date index
for md in MONTHSDAYS:
month = md[0].lower()
day = md[1]
# loop over coordinates
for station in COORDS:
station_point_coord = COORDS[station]*2 # coordinates input for the area keyword
c.retrieve(
'cems-glofas-reforecast',
{
'system_version': 'version_2_2',
'variable': 'river_discharge_in_the_last_24_hours',
'format': 'grib',
'hydrological_model': 'htessel_lisflood',
'product_type': 'control_reforecast',
'area':station_point_coord,
'hyear': YEARS,
'hmonth': month ,
'hday': day ,
'leadtime_hour': LEADTIMES,
},
f'glofas_reforecast_{station}_{month}_{day}.grib') |
This second script shows how to retrieve a point time series reforecast on the river Thames for a single forecast reference time, specifically the 11th of July 2007.
...