Versions Compared

Key

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

...

What is the best approach to get all hindcastDays for several HindcastYears ?

Info
titleThe main idea in brief:

(lightbulb) The best approach is to iterate over the HindcastYears. For each HindcastYear iterate over all the available hindcastMonths and for each hindcastMonth iterate over all

...

the available hindcastDays.

(warning) At this point you may wish to check CMA availability and to view a CMA request

Info
titleThe main idea in brief:
for HindcastYear in HindcastYears
for hindcastMonth in hindcastMonths
for hindcastDay in hindcastDays
hindcastDate = HindcastYear-hindcastMonth-hindcastDay
S2S-request(hindcastDate)

...

Code Block
languagepy
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
modelVersionDate = "2014-05-01"
hindcastDate = "2014-04-01"  # The selected hindcast date
server = ECMWFDataServer()
server.retrieve({
    "class": "s2",
    "dataset": "s2s",
    "date": ModelVersionDate,
    "expver": "prod",
    "hdate": hindcastDate, 
    "levtype": "sfc",
    "origin": "babj",
    "param": "165",
    "step": "0",
    "stream": "enfh",
    "target": "data.cf.sfc",
    "time": "00",
    "type": "cf",
})
Info

(lightbulb) If the request is "small" you may request more hindcastDates in one go.

...

See the example below.

A web API example requesting data for several hindcastDates (iterating over several hindcastYears, hindcastMonths and hindcastDays)

 

Info
  • The objective of this example is to demonstrate how to make a MARS request efficient by iterating properly. 
  • It can be used as a starting point however you need to adapt it to your needseg:
    • to set the keyword values (eg hindcastYear)  according to your needs. 

...

...

(grey lightbulb) By setting the variable "target" accordingly you can have each hindcastDate to be written on a separate file .

Code Block
languagepy
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
def retrieve_data(hindcastDate):
    target = "target_s2s_%s.grb" % hindcastDate
    server.retrieve({
       "class": "s2",
       "dataset": "s2s",
       "date": "2014-05-01",
       "expver": "prod",
       "hdate": hindcastDate,
       "levtype": "sfc",
       "origin": "babj",
       "param": "165",
       "step": "0",
       "stream": "enfh",
       "target": target,
       "time": "00",
       "type": "cf",
})

for hindcastYear in ["2012", "2013"]:
    for hindcastMonth in ["08", "09"]:
        for hindcastDay in ["01", "02"]:
            hindcastDate = hindcastYear+hindcastMonth+hindcastDay
            retrieve_data(hindcastDate)

...