def get_geocoords(infile, lat='lat', lon='lon'): df = EcoFOCI_netCDF(infile) nchandle = df._getnchandle_() data = {} for j, v in enumerate([lat, lon]): data[v] = nchandle.variables[v][:] df.close() return (data)
def from_netcdf_1dsplice(infile, height_ind, lat_ind, lon_ind): """ Uses ncreadfile_dic which returns a dictionary of all data from netcdf""" ###nc readin/out df = EcoFOCI_netCDF(infile) nchandle = df._getnchandle_() params = df.get_vars() #gets all of them print "Parameters available: " #print params ncdata = ncreadfile_dic_slice(nchandle, params, height_ind=height_ind, lat_ind=lat_ind, lon_ind=lon_ind) df.close() return ncdata
parser.add_argument('sourcefile', metavar='sourcefile', type=str, help='path to .nc files') parser.add_argument('add_dsg_idvar', metavar='add_dsg_idvar', type=str, help='name of dsg style id variable') args = parser.parse_args() "---" df = EcoFOCI_netCDF(args.sourcefile) global_atts = df.get_global_atts() vars_dic = df.get_vars() nchandle = df._getnchandle_() data = df.ncreadfile_dic() try: nchandle.createDimension('id_strlen', 5) nchandle.createVariable('profileid', 'S1', dimensions=('record_number', 'id_strlen')) nchandle.variables['profileid'].cf_role = args.add_dsg_idvar nchandle.variables['profileid'].long_name = 'profile_id' except: print "{0} - not added".format(args.add_dsg_idvar) #fill with default values profileid = args.sourcefile.split('/')[-1].split('.nc')[0].split('_')[1]
def repl_var(nchandle, var_name, val=1e35): nchandle.variables[var_name][:] = np.ones_like(nchandle.variables[var_name][:]) * float(val) return """------------------------------- MAIN--------------------------------------------""" parser = argparse.ArgumentParser(description='Replace EPIC Variable with 1e35 for all depths') parser.add_argument('sourcefile', metavar='sourcefile', type=str, help='complete path to netcdf file') parser.add_argument('user_var', metavar='user_var', type=str, help='EPIC Key Code or variable name') parser.add_argument('Value', metavar='Value', type=str, help='replacement value') args = parser.parse_args() ###nc readin ncfile = args.sourcefile df = EcoFOCI_netCDF(ncfile) global_atts = df.get_global_atts() vars_dic = df.get_vars() data = df.ncreadfile_dic() print ncfile.split('/')[-1] repl_var(df._getnchandle_(), args.user_var, val=args.Value) df.close()
#converttime to datetime data_dati = EPIC2Datetime(ncdata['time'], ncdata['time2']) data_dati = np.array(data_dati) time_ind = (data_dati >= datetime.datetime.strptime(args.trim_bounds[0],'%Y-%m-%dT%H:%M:%S')) & \ (data_dati <= datetime.datetime.strptime(args.trim_bounds[1],'%Y-%m-%dT%H:%M:%S')) #create new netcdf file ncinstance = NetCDF_Trimmed_2D(savefile=(args.sourcefile).replace('.nc','.trimmed_missing.nc')) ncinstance.file_create() ncinstance.sbeglobal_atts(raw_data_file=global_atts['DATA_CMNT'], Station_Name=global_atts['MOORING'], Water_Depth=global_atts['WATER_DEPTH'], Inst_Type=global_atts['INST_TYPE'], Water_Mass=global_atts['WATER_MASS'], Experiment=global_atts['EXPERIMENT'], Project=global_atts['PROJECT']) ncinstance.dimension_init(time_len=len(ncdata['time'][time_ind]),depth_len=len(ncdata['depth'])) ncinstance.variable_init(df._getnchandle_()) ncinstance.add_coord_data(depth=ncdata['depth'], latitude=ncdata[lat], longitude=ncdata[lon], time1=ncdata['time'][time_ind], time2=ncdata['time2'][time_ind]) ncinstance.add_data(data=ncdata, trim_index=time_ind) ncinstance.add_history('Data Trimmed') ncinstance.close() elif args.isProfile: sys.exit("Profiles rarely can be trimmed by date unless prawler or glider - exiting") else: df = EcoFOCI_netCDF( args.sourcefile ) global_atts = df.get_global_atts()