def loadNARR_TS(name=dataset_name, grid=None, varlist=None, resolution=None, varatts=None, filelist=None, folder=None, lautoregrid=None): ''' Get a properly formatted NARR dataset with monthly mean time-series. ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # translate varlist if varatts is None: varatts = tsvaratts.copy() if varlist is None: varlist = tsvarlist if varlist and varatts: varlist = translateVarNames(varlist, varatts) if filelist is None: # generate default filelist filelist = [orig_ts_file.format(special[var]) if var in special else orig_ts_file.format(var) for var in varlist if var not in nofile and var in varatts] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, atts=projdict, multifile=False, ncformat='NETCDF4_CLASSIC') # replace time axis with number of month since Jan 1979 data = np.arange(0,len(dataset.time),1, dtype='int16') # month since 1979 (Jan 1979 = 0) timeAxis = Axis(name='time', units='month', coord=data, atts=dict(long_name='Month since 1979-01')) dataset.replaceAxis(dataset.time, timeAxis, asNC=False, deepcopy=False) # add projection projection = getProjFromDict(projdict, name='{0:s} Coordinate System'.format(name)) dataset = addGDALtoDataset(dataset, projection=projection, geotransform=None, gridfolder=grid_folder) else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder dataset = loadObservations(name=name, folder=folder, projection=None, resolution=None, grid=grid, period=None, varlist=varlist, varatts=varatts, filepattern=tsfile, filelist=filelist, lautoregrid=lautoregrid, mode='time-series') # return formatted dataset return dataset
def loadNARR_LTM(name=dataset_name, varlist=None, grid=None, interval='monthly', varatts=None, filelist=None, folder=ltmfolder): ''' Get a properly formatted dataset of daily or monthly NARR climatologies (LTM). ''' if grid is None: # load from original time-series files if folder is None: folder = orig_ts_folder # prepare input if varatts is None: varatts = ltmvaratts.copy() if varlist is None: varlist = ltmvarlist if interval == 'monthly': pfx = '.mon.ltm.nc'; tlen = 12 elif interval == 'daily': pfx = '.day.ltm.nc'; tlen = 365 else: raise DatasetError, "Selected interval '%s' is not supported!"%interval # translate varlist if varlist and varatts: varlist = translateVarNames(varlist, varatts) # axes dictionary, primarily to override time axis axes = dict(time=Axis(name='time',units='day',coord=(1,tlen,tlen)),load=True) if filelist is None: # generate default filelist filelist = [special[var]+pfx if var in special else var+pfx for var in varlist if var not in nofile] # load dataset dataset = DatasetNetCDF(name=name, folder=folder, filelist=filelist, varlist=varlist, varatts=varatts, axes=axes, atts=projdict, multifile=False, ncformat='NETCDF4_CLASSIC') # add projection projection = getProjFromDict(projdict, name='{0:s} Coordinate System'.format(name)) dataset = addGDALtoDataset(dataset, projection=projection, geotransform=None, folder=grid_folder) else: # load from neatly formatted and regridded time-series files if folder is None: folder = avgfolder raise NotImplementedError, "Need to implement loading neatly formatted and regridded time-series!" # return formatted dataset return dataset
## NARR Meta-data dataset_name = 'NARR' root_folder = getRootFolder(dataset_name=dataset_name) # get dataset root folder based on environment variables # NARR projection projdict = dict(proj = 'lcc', # Lambert Conformal Conic lat_1 = 50., # Latitude of first standard parallel lat_2 = 50., # Latitude of second standard parallel lat_0 = 50., # Latitude of natural origin lon_0 = -107.) # Longitude of natural origin # # x_0 = 5632642.22547, # False Origin Easting # y_0 = 4612545.65137) # False Origin Northing # NARR grid definition projection = getProjFromDict(projdict) geotransform = (-5648873.5, 32463.0, 0.0, -4628776.5, 0.0, 32463.0) size = (349, 277) # (x,y) map size of NARR grid # make GridDefinition instance NARR_grid = GridDefinition(name=dataset_name, projection=projdict, geotransform=geotransform, size=size) # variable attributes and name varatts = dict(air = dict(name='T2', units='K'), # 2m Temperature prate = dict(name='precip', units='kg/m^2/s'), # total precipitation rate (kg/m^2/s) # LTM-only variables (currently...) prmsl = dict(name='pmsl', units='Pa'), # sea-level pressure pevap = dict(name='pet', units='kg/m^2'), # monthly accumulated PET (kg/m^2) pr_wtr = dict(name='pwtr', units='kg/m^2'), # total precipitable water (kg/m^2) # axes (don't have their own file; listed in axes) lon = dict(name='lon2D', units='deg E'), # geographic longitude field lat = dict(name='lat2D', units='deg N'), # geographic latitude field