|
2 | 2 | import matplotlib.pyplot as plt |
3 | 3 | import datetime |
4 | 4 | from mpl_toolkits.basemap import Basemap, shiftgrid |
5 | | -from netCDF4 import Dataset, date2index, num2date |
| 5 | +from netCDF4 import Dataset |
6 | 6 | # specify date to plot. |
7 | | -date = datetime.datetime(1993,3,14,0) |
| 7 | +yyyy=1993; mm=03; dd=14; hh=00 |
| 8 | +date = datetime.datetime(yyyy,mm,dd,hh) |
8 | 9 | # set OpenDAP server URL. |
9 | | -URL="http://nomad1.ncep.noaa.gov:9090/dods/reanalyses/reanalysis-2/6hr/pgb/pgb" |
| 10 | +URLbase="http://nomads.ncdc.noaa.gov/thredds/dodsC/modeldata/cmd_pgbh/" |
| 11 | +URL=URLbase+"%04i/%04i%02i/%04i%02i%02i/pgbh00.gdas.%04i%02i%02i%02i.grb2" %\ |
| 12 | + (yyyy,yyyy,mm,yyyy,mm,dd,yyyy,mm,dd,hh) |
10 | 13 | data = Dataset(URL) |
11 | | -# read lats,lons,times. |
12 | | -latitudes = data.variables['lat'][:] |
| 14 | +# read lats,lons |
| 15 | +# reverse latitudes so they go from south to north. |
| 16 | +latitudes = data.variables['lat'][::-1] |
13 | 17 | longitudes = data.variables['lon'][:].tolist() |
14 | | -times = data.variables['time'] |
15 | | -# get time index for desired date. |
16 | | -ntime = date2index(date,times,calendar='standard') |
17 | 18 | # get sea level pressure and 10-m wind data. |
18 | | -slpdata = data.variables['presmsl'] |
19 | | -udata = data.variables['ugrdprs'] |
20 | | -vdata = data.variables['vgrdprs'] |
21 | 19 | # mult slp by 0.01 to put in units of hPa. |
22 | | -slpin = 0.01*slpdata[ntime,:,:] |
23 | | -uin = udata[ntime,0,:,:] |
24 | | -vin = vdata[ntime,0,:,:] |
| 20 | +slpin = 0.01*data.variables['Pressure_msl'][:].squeeze() |
| 21 | +uin = data.variables['U-component_of_wind_height_above_ground'][:].squeeze() |
| 22 | +vin = data.variables['V-component_of_wind_height_above_ground'][:].squeeze() |
25 | 23 | # add cyclic points manually (could use addcyclic function) |
26 | 24 | slp = np.zeros((slpin.shape[0],slpin.shape[1]+1),np.float) |
27 | | -slp[:,0:-1] = slpin; slp[:,-1] = slpin[:,0] |
| 25 | +slp[:,0:-1] = slpin[::-1]; slp[:,-1] = slpin[::-1,0] |
28 | 26 | u = np.zeros((uin.shape[0],uin.shape[1]+1),np.float64) |
29 | | -u[:,0:-1] = uin; u[:,-1] = uin[:,0] |
| 27 | +u[:,0:-1] = uin[::-1]; u[:,-1] = uin[::-1,0] |
30 | 28 | v = np.zeros((vin.shape[0],vin.shape[1]+1),np.float64) |
31 | | -v[:,0:-1] = vin; v[:,-1] = vin[:,0] |
| 29 | +v[:,0:-1] = vin[::-1]; v[:,-1] = vin[::-1,0] |
32 | 30 | longitudes.append(360.); longitudes = np.array(longitudes) |
33 | 31 | # make 2-d grid of lons, lats |
34 | 32 | lons, lats = np.meshgrid(longitudes,latitudes) |
|
0 commit comments