Depending on the difference between the minimum and maximum and the value resolution of a netcdf variable, a smaller sized integer variable like short or byte can be used to compact the data. A scale factor and offset will be used to fit the data in the smaller sized variable and will added to the netCDF variable as attributes with names scale_factor and add_offset. All standard netCDF viewers will take these attributes into account automatically, but other tools and especially scripts might not.
Compacting netCDF variables for different export from FEWS:
- available in archive export (applied whenever possible)
- available in Time Series Export Module if property tryCompactingNetCDFData is set to true (applied when possible)
- NOT available in General Adapter Export NetCDF and exportPlaceholderFile option in importNetcdfActivity
Variable compacted to short data type
short waterlevel(time, stations); waterlevel:standard_name = "water_surface_height_above_reference_datum detection_minimum"; waterlevel:long_name = "waterlevel"; waterlevel:units = "m"; waterlevel:_FillValue = -32768S; waterlevel:scale_factor = 0.01f; waterlevel:add_offset = 0.0f; waterlevel:coordinates = "lat lon"; waterlevel:cell_methods = "time: maximum"; waterlevel = { {-32768, 121, 131, 141, 151, 161}, {-32768, 221, 231, 241, 251, 261}, {-32768, 321, 331, 341, 351, 361} }
Uncompacted data type
float waterlevel(time, stations); waterlevel:standard_name = "water_surface_height_above_reference_datum detection_minimum"; waterlevel:long_name = "waterlevel"; waterlevel:units = "m"; waterlevel:_FillValue = -9999.0f; waterlevel:coordinates = "lat lon"; waterlevel:cell_methods = "time: maximum"; waterlevel = { {-9999.0, 1.21, 1.31, 1.41, 1.51, 1.61}, {-9999.0, 2.21, 2.31, 2.41, 2.51, 2.61}, {-9999.0, 3.21, 3.31, 3.41, 3.51, 3.61} }