import sys, datetime # read in sea-surface temperature and ice data # can be a local file, a URL for a remote opendap dataset, if len(sys.argv) == 1: date = '20071215' else: date = sys.argv[1] # convert datestring to datetime object. date = datetime.datetime(int(date[0:4]), int(date[4:6]), int(date[6:8])) print date # open dataset. dataset =\ NetCDFFile('http://nomads.ncdc.noaa.gov/thredds/dodsC/oisst2/totalAmsrAgg') # find index of desired time. time = dataset.variables['time'] nt = date2index(date, time, calendar='standard') print num2date(time[nt], time.units, calendar='standard') # read sst. Will automatically create a masked array using # missing_value variable attribute. sst = dataset.variables['sst'][nt] # read ice. ice = dataset.variables['ice'][nt] # read lats and lons (representing centers of grid boxes). lats = dataset.variables['lat'][:] lons = dataset.variables['lon'][:] # shift lats, lons so values represent edges of grid boxes # (as pcolor expects). delon = lons[1] - lons[0] delat = lats[1] - lats[0] lons = (lons - 0.5 * delon).tolist() lons.append(lons[-1] + delon)
# set OpenDAP server URL. URL="http://nomad1.ncep.noaa.gov:9090/dods/reanalyses/reanalysis-2/6hr/pgb/pgb" print URL try: data = NetCDFFile(URL) except: raise IOError, 'opendap server not providing the requested data' # read lats,lons,times. print data.variables.keys() latitudes = data.variables['lat'][:] longitudes = data.variables['lon'][:].tolist() times = data.variables['time'] ntime1 = date2index(date1,times,calendar='standard') ntime2 = date2index(date2,times,calendar='standard') print 'ntime1,ntime2:',ntime1,ntime2 print num2date(times[ntime1],times.units,calendar='standard'), num2date(times[ntime2],times.units,calendar='standard') # get sea level pressure and 10-m wind data. slpdata = data.variables['presmsl'] udata = data.variables['ugrdprs'] vdata = data.variables['vgrdprs'] # mult slp by 0.01 to put in units of millibars. slpin = 0.01*slpdata[ntime1:ntime2+1,:,:] uin = udata[ntime1:ntime2+1,0,:,:] vin = vdata[ntime1:ntime2+1,0,:,:] dates = num2date(times[ntime1:ntime2+1], times.units, calendar='standard') # add cyclic points slp = np.zeros((slpin.shape[0],slpin.shape[1],slpin.shape[2]+1),np.float64) slp[:,:,0:-1] = slpin; slp[:,:,-1] = slpin[:,:,0]
import sys, datetime # read in sea-surface temperature and ice data # can be a local file, a URL for a remote opendap dataset, if len(sys.argv) == 1: date = '20071215' else: date = sys.argv[1] # convert datestring to datetime object. date = datetime.datetime(int(date[0:4]),int(date[4:6]),int(date[6:8])) print date # open dataset. dataset =\ NetCDFFile('http://nomads.ncdc.noaa.gov/thredds/dodsC/oisst2/totalAmsrAgg') # find index of desired time. time = dataset.variables['time'] nt = date2index(date, time, calendar='standard') print num2date(time[nt],time.units, calendar='standard') # read sst. Will automatically create a masked array using # missing_value variable attribute. sst = dataset.variables['sst'][nt] # read ice. ice = dataset.variables['ice'][nt] # read lats and lons (representing centers of grid boxes). lats = dataset.variables['lat'][:] lons = dataset.variables['lon'][:] # shift lats, lons so values represent edges of grid boxes # (as pcolor expects). delon = lons[1]-lons[0] delat = lats[1]-lats[0] lons = (lons - 0.5*delon).tolist() lons.append(lons[-1]+delon)
print date1, date2 # set OpenDAP server URL. URL = "http://nomad1.ncep.noaa.gov:9090/dods/reanalyses/reanalysis-2/6hr/pgb/pgb" print URL try: data = NetCDFFile(URL) except: raise IOError, 'opendap server not providing the requested data' # read lats,lons,times. print data.variables.keys() latitudes = data.variables['lat'][:] longitudes = data.variables['lon'][:].tolist() times = data.variables['time'] ntime1 = date2index(date1, times, calendar='standard') ntime2 = date2index(date2, times, calendar='standard') print 'ntime1,ntime2:', ntime1, ntime2 print num2date(times[ntime1], times.units, calendar='standard'), num2date(times[ntime2], times.units, calendar='standard') # get sea level pressure and 10-m wind data. slpdata = data.variables['presmsl'] udata = data.variables['ugrdprs'] vdata = data.variables['vgrdprs'] # mult slp by 0.01 to put in units of millibars. slpin = 0.01 * slpdata[ntime1:ntime2 + 1, :, :] uin = udata[ntime1:ntime2 + 1, 0, :, :] vin = vdata[ntime1:ntime2 + 1, 0, :, :] dates = num2date(times[ntime1:ntime2 + 1], times.units, calendar='standard')