def read_processed_hsrl_data(filename, var_name=None, list_vars=None):
    """read_process_hsrl_data(netcdf_file,variable,list_vars = False)
       read a netcdf variable from a file created by write_netcdf
       if list_variables = True, provide a list of file variables"""

    from pycdf import CDF
    nc = CDF(filename)
    if not list_vars == None:
        nc_vars = nc.variables().keys()
        for name in nc_vars:
            print ' %30s  %40s' % (name.ljust(30), nc.var(name).dimensions())
        return
    if not var_name == None:
        if var_name == 'time' or var_name == 'times':
            # inits a datetime object from the base time
            base_time = nc.var('base_time').get()
            time_offset = nc.var('time').get()
            #base = datetime.datetime.fromtimestamp(base_time,tz=datetime.tzinfo("UTC"))
            base = datetime.datetime(1970, 1, 1, 0, 0, 0) + datetime.timedelta(
                seconds=int(base_time))
            # adds a time offset (seconds) to the base time to make a datetime object
            var = np.array([(base + datetime.timedelta(seconds=x))
                            for x in time_offset])
        else:
            var = nc.var(var_name).get()
        pass
    return var
def read_processed_hsrl_data(filename):
    """read a netcdf file created by write_netcdf. Data will be
       restored to python structures"""
    from pycdf import CDF, CDFError
    nc = CDF(filename)
    nc_vars = nc.variables().keys()
    for name in nc_vars:
        print name, '            \t\t  ', nc.var(name).dimensions()
        tmp = nc.var(name).get()
Beispiel #3
0
def make_netcdf_template(instrument, in_dir, netcdf_filename, outfilename):
    """reads a netcdf file and creates a outfilename.json
       with a template for reading this netcdf file--this file will
       must be edited to provide name translations
       and variable type information"""

    from pycdf import CDF, CDFError
    if netcdf_filename.find('.bz2') >= 0:
        index = netcdf_filename.find('zraw/')
        index2 = netcdf_filename.find('_')
        fileid = open(in_dir + netcdf_filename, 'r')
        file = fileid.read()
        fileid.close()
        temp = bz2.decompress(file)
        # write temp file to memory rather than disk
        netcdf_filename = '/dev/shm/' + instrument + '_temp_file.nc'
        fileid = open(netcdf_filename, 'w')
        fileid.write(temp)

    nc = CDF(netcdf_filename)
    nc_vars = nc.variables().keys()
    dims = nc.dimensions()
    print dims

    f = open(outfilename, 'w')
    header = (
        '#\n' + '#edit this file and change extention to *.json\n' +
        '#entry format:"\n' +
        '#"desired_var_name":["name_in_netcdf","select_flag"]\n' +
        '#var_type   == "t" ,time var or time by other than z\n' +
        '#select_flag   when set = 0 and read_mode=="min",variable skipped\n' +
        '#remove these comment lines before use\n' + '#\n' + '{"config":\n' +
        '    {"#read_mode":"all / select / min",\n' +
        '    "read_mode": "select"},\n' + '"selected_vars":\n' + '    {\n')
    f.write(header)
    print header
    first = True
    for name in nc_vars:
        var = nc.var(name)

        #print help(nc)
        if first:
            print '    "' + name + '":["' + name + '", 1]'
            f.write('    "' + name + '":["' + name + '",1]')
        else:
            print '    "' + name + '":["' + name + '",1]'
            f.write(',\n    "' + name + '":["' + name + '",1]')
        first = False
    f.write('    }\n')
    f.write('}\n')