source: trunk/MESOSCALE/LMD_MM_MARS/SRC/PYTHON/examples/mylib/myecmwf.py @ 295

Last change on this file since 295 was 273, checked in by aslmd, 13 years ago

MESOSCALE: python improvements for graphics. nothing essential.

  • Property svn:executable set to *
File size: 2.2 KB
Line 
1def ecmwf_title_field (var):
2        ### http://www.ecmwf.int/services/archive/d/table/grib_table_2_versions
3        ### http://www.ecmwf.int/services/archive/d/parameters/mars=1/order=grib_parameter/table=128/
4        ### http://www.atmos.albany.edu/facstaff/rmctc/ecmwfGrib/ecmwfgrib128.tbl
5        if   var == "151": name="Mean Sea Level Pressure (Pa)"          # ["151", "fc", "3", "sfc"]
6        elif var == "146": name="Sensible Heat Flux (W m^-2)"           # ["146", "fc", "3", "sfc"]
7        elif var == "130": name="Atmospheric Temperature (K)"           # ["130", "an", "0", "pl" ]
8        elif var == "167": name="2m Atmospheric Temperature (K)"        # ["167", "fc", "3", "sfc"]
9        elif var == "78": name="Total column liquid water (kg/kg)"
10        elif var == "137": name="Total column water vapour (kg/m2)"
11        return name
12
13def split_char_add (var,add):
14        import  numpy as np
15        varchar = ""
16        for i in range( np.array(var).size ):
17                varchar = varchar + str(var[i]) + add + "/"
18        return varchar
19
20def split_char (var):
21        varchar = split_char_add (var,"")
22        return varchar
23
24def get_ecmwf (var, dataset, wlat, wlon, lev, date, tim):
25        from ecmwf      import ECMWFDataServer
26        from os         import system
27        from netCDF4    import Dataset
28        gbfile = 'output.grib'
29        ncfile = 'output.nc'
30        ######
31        timchar = split_char (tim)
32        levchar = split_char (lev)
33        varchar = split_char_add (var,".128")
34        ##########################################################################
35        ## First registrer at http://data-portal.ecmwf.int/data/d/license/interim/
36        ## Then get your token at http://data-portal.ecmwf.int/data/d/token/interim_daily/
37        server = ECMWFDataServer('http://data-portal.ecmwf.int/data/d/dataserver/','6948746482e9e3e29d64211e06329a2e','spiga@lmd.jussieu.fr')
38        server.retrieve({
39                'dataset'  : "interim_daily",
40                'date'     : date[2] + date[1] + date[0] + "/to/" + date[5] + date[4] + date[3],
41                'time'     : timchar,
42                'step'     : dataset[2],
43                'levtype'  : dataset[1],
44                'type'     : dataset[0],
45                'param'    : varchar,
46                'levelist' : levchar,   
47                'area'     : str(wlat[0])+"/"+str(wlon[0])+"/"+str(wlat[1])+"/"+str(wlon[1]),
48                'target'   : gbfile
49        })
50        system("cdo -f nc copy "+gbfile+" "+ncfile+" ; rm -f "+gbfile)
51        nc = Dataset(ncfile)
52        #system("rm -f "+ncfile)
53        return nc
Note: See TracBrowser for help on using the repository browser.