Table of Contents
To find out if nonlinearity correction has already been applied, use name of GC1 file, which is given in DSD.32 metadata of the AATSR product:
If the GC1 file name is 'ATS_GC1_AXVIEC20020123_073430_20020101_000000_20200101_000000', nonlinearity correction has not yet been applied:
volts = -0.816 * (reflectance/100.0) / 0.192;
correctedReflectance = 100.0 * Math.PI * (A[0] + A[1]*volts + A[2]*volts*volts + A[3]*volts*volts*volts) / 1.553;with the nonlinearity coefficients from pre-launch calibration:
final double[] A = new double[]{-0.000027, -0.1093, 0.009393, 0.001013};
If nonlinearity correction has already been applied (any other GC1 file name), the input reflectances are not changed within this module.
First, it need to be checked which drift correction had been applied. For this, the time information in the name of the VC1 file (which is given in DSD.31 metadata of the AATSR product) is used:
An exponential drift to be removed is expressed as
drift = Math.exp(K[iChannel] * tDiff / 365.0);
where tdiff is the time difference between sensing start and Envisat launch time, and K are the yearly drift rates for exponential drift:
final double[] K = new double[]{0.034, 0.021, 0.013, 0.002};
A thin film drift to be removed is expressed as
drift = 1.0 + A[iChannel][0] * s * s;
where A are the thin film drift model coefficients
final double[][] A = new double[][]{{0.083, 1.5868E-3}, {0.056, 1.2374E-3}, {0.041, 9.6111E-4}};
Finally, multiplying the drift gives the original, uncorrected reflectances:
uncorrectedReflectance = reflectance * drift;
The new drift correction is then performed using a look up table to obtain the drift measurement for a given channel and acquisition time. A linear interpolation is applied on the drift values in the table to exactly match the acquisiton time (the time interval in the table is usually 24 hours).
A snippet of a drift correction lookup table is given in the Appendix.
Finally, dividing by the drift gives the corrected reflectances:
correctedReflectance = reflectance / drift;