Chapter 3. AATSR Recalibration

Table of Contents

3.1. Recalibration of AATSR Reflectances
3.1.1. Nonlinearity Correction for the 1.6um channel
3.1.2. Removal of Existing Long-Term Drift
3.1.3. Application of new Long-Term Drift

3.1. Recalibration of AATSR Reflectances

3.1.1. Nonlinearity Correction for the 1.6um channel

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:

  • Convert 1.6um reflectance back to raw signal (volts) using linear conversion
                                    volts = -0.816 * (reflectance/100.0) / 0.192;
                                
  • Convert 1.6um raw signal to a corrected reflectance using non-linear conversion function with nonlinearity coefficients from pre-launch calibration:
                                    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.

3.1.2. Removal of Existing Long-Term Drift

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:
  • If the time in the VC1 file name is before 29-NOV-2005 13:20:26, no drift correction had been applied.
  • If the time in the VC1 file name is between 29-NOV-2005 13:20:26 and 18-DEC-2006 20:14:15, an exponential drift correction had been applied.
  • If the time in the VC1 file name is after 18-DEC-2006 20:14:15, a thin film drift correction had been applied.

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;
                    

3.1.3. Application of new Long-Term 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;