This module includes classes to create the datasets.
The BaseDataset class is a template to be used for the several types of datasets we are going to use. The methods BaseDataset.list_files, BaseDataset.find_dates and BaseDataset.open are just placeholders to be defined individually for each data source as they will depend on the filenames and file types.
The remaining methods of BaseDataset listed below are already defined but some may need to be redifined for particular datasets with different characteristics.
Example:
iop = InOutPath('../data', '../data')
R = Region('PI', [-10, 36, 5, 44], 0.01)
bands = ['Reflectance_M5', 'Reflectance_M7', 'Reflectance_M10', 'Radiance_M12',
'Radiance_M15', 'SolarZenithAngle', 'SatelliteZenithAngle']
merge_tiles = MergeTiles('SatelliteZenithAngle')
mir_calc = MirCalc('SolarZenithAngle', 'Radiance_M12', 'Radiance_M15')
rename = BandsRename(['Reflectance_M5', 'Reflectance_M7'], ['Red', 'NIR'])
bfilter = BandsFilter(['Red', 'NIR', 'MIR'])
data = Viirs750Dataset(iop, R, bands=bands)
test_eq(str(data.times[0]), '2017-10-27 00:00:00')
out = data.process_one(time=data.times[0],
proc_funcs=[merge_tiles, mir_calc, rename, bfilter],
save=False)
test_eq([k for k in out], ['MIR', 'Red', 'NIR'])
test_eq(np.nanmean(out['NIR']).round(4), 0.0474)
class Viirs750Dataset2(Viirs750Dataset):
_use_netcdf4 = False
data2 = Viirs750Dataset2(iop, R, bands=bands)
out2 = data2.process_one(time=data.times[0],
proc_funcs=[merge_tiles, mir_calc, rename, bfilter],
save=False)
# Comparing open with netCDF4 and pyhdf
test_eq(np.nanmean(out['NIR']).round(7), np.nanmean(out2['NIR']).round(7))
test_eq(np.nanmean(out['Red']).round(7), np.nanmean(out2['Red']).round(7))
test_eq(np.nanmean(out['MIR']).round(7), np.nanmean(out2['MIR']).round(7))