def get_dataset(ncfile, dataset=None):
"""
Utility to create a netCDF4 Dataset from a filename, list of filenames,
or just pass it through if it's already a netCDF4.Dataset
if dataset is not None, it should be a valid netCDF4 Dataset object,
and it will simiply be returned
"""
if dataset is not None:
return dataset
if isinstance(ncfile, nc4.Dataset):
return ncfile
elif isinstance(ncfile, collections.Iterable) and len(ncfile) == 1:
return nc4.Dataset(ncfile[0])
elif isstring(ncfile):
return nc4.Dataset(ncfile)
else:
return nc4.MFDataset(ncfile)
python类MFDataset()的实例源码
def _opennc(self, f):
""" Open netcdf data set either Dataset or MFDataset. """
if len(glob.glob(f)) > 1:
try:
nc = MFDataset(f)
except ValueError as err:
print 'netcdf4.MFDataset incompatible with NETCDF4. Try concatenating data into a single file.'
raise NetCDF4ERROR(err)
else:
nc = Dataset(f)
return nc
def _opennc(self, f):
""" Open netcdf data set either Dataset or MFDataset. """
if len(glob.glob(f)) > 1:
try:
nc = MFDataset(f)
except ValueError as err:
print 'netcdf4.MFDataset incompatible with NETCDF4. Try concatenating data into a single file.'
raise NetCDF4ERROR(err)
else:
nc = Dataset(f)
return nc
def Convert_nc_to_tiff(input_nc, output_folder):
"""
This function converts the nc file into tiff files
Keyword Arguments:
input_nc -- name, name of the adf file
output_folder -- Name of the output tiff file
"""
from datetime import date
import wa.General.raster_conversions as RC
#All_Data = RC.Open_nc_array(input_nc)
if type(input_nc) == str:
nc = netCDF4.Dataset(input_nc)
elif type(input_nc) == list:
nc = netCDF4.MFDataset(input_nc)
Var = nc.variables.keys()[-1]
All_Data = nc[Var]
geo_out, epsg, size_X, size_Y, size_Z, Time = RC.Open_nc_info(input_nc)
if epsg == 4326:
epsg = 'WGS84'
# Create output folder if needed
if not os.path.exists(output_folder):
os.mkdir(output_folder)
for i in range(0,size_Z):
if not Time == -9999:
time_one = Time[i]
d = date.fromordinal(time_one)
name = os.path.splitext(os.path.basename(input_nc))[0]
nameparts = name.split('_')[0:-2]
name_out = os.path.join(output_folder, '_'.join(nameparts) + '_%d.%02d.%02d.tif' %(d.year, d.month, d.day))
Data_one = All_Data[i,:,:]
else:
name=os.path.splitext(os.path.basename(input_nc))[0]
name_out = os.path.join(output_folder, name + '.tif')
Data_one = All_Data[:,:]
Save_as_tiff(name_out, Data_one, geo_out, epsg)
return()