def netcdf_subset()

in scripts/hd5splitter.py [0:0]


def netcdf_subset(source, dest):
    dtime = dest.createDimension(dimname=TIME, size=TIME_SLICE.stop - TIME_SLICE.start)
    # dlat = dest.createDimension(dimname=LATITUDE, size=LATITUDE_SLICE.stop - LATITUDE_SLICE.start)
    # dlon = dest.createDimension(dimname=LONGITUDE, size=LONGITUDE_SLICE.stop - LONGITUDE_SLICE.start)
    drivid = dest.createDimension(dimname='rivid', size=LONGITUDE_SLICE.stop - LONGITUDE_SLICE.start)

    dest.setncatts(source.__dict__)

    for variable in [v for v in source.variables if v in ['Qout', TIME, LONGITUDE, LATITUDE]]:
        variable = source[variable]

        if variable.name == TIME:
            dvar = dest.createVariable(varname=variable.name, datatype=variable.dtype, dimensions=(dtime.name,))
            dest[variable.name].setncatts(variable.__dict__)
            dvar[:] = variable[TIME_SLICE]
        elif variable.name == LONGITUDE:
            dvar = dest.createVariable(varname=variable.name, datatype=variable.dtype, dimensions=(drivid.name,))
            dest[variable.name].setncatts(variable.__dict__)
            dvar[:] = variable[LONGITUDE_SLICE]
        elif variable.name == LATITUDE:
            dvar = dest.createVariable(varname=variable.name, datatype=variable.dtype, dimensions=(drivid.name,))
            dest[variable.name].setncatts(variable.__dict__)
            dvar[:] = variable[LATITUDE_SLICE]
        else:
            dvar = dest.createVariable(varname=variable.name, datatype=variable.dtype,
                                       dimensions=(dtime.name, drivid.name))
            dest[variable.name].setncatts(variable.__dict__)
            dvar[:] = variable[TIME_SLICE, LONGITUDE_SLICE]

    dest.sync()
    dest.close()