Implementation of SST Processing within the OBPG
NASA Ocean Biology Processing Group
NASA'standard processing and distribution of the Sea Surface Temperature (SST) products from the MODIS sensors is now performed using by the Ocean Biology Processing Group (OBPG). The OBPG generates the Level-2 SST products using the Multi-Sensor Level-1 to Level-2 software (msl12), which is the same software used to generate the MODIS ocean color products. The SST algorithm and quality assessment logic are the responsibility of the MODIS Science Team Leads for SST (currently P. Minnett and R. Evans of the Rosenstiel School of Marine and Atmospheric Science (RSMAS) at the University of Miami). Details of the SST processing implementation within msl12 are provided in this document. The description is valid for both the standard products distributed by the OBPG through the ocean color web and the products delivered to the Physical Oceanography DAAC, where the latter are subsequently repackaged for GHRSST distribution.
An historical discussion on the transition of SST processing from MODAPS/DAAC/RSMAS to OBPG, with comparison of products, is available here. At the time of transition, the OBPG was able to demonstrate exact consistency with the previous products. However, file formatting now follows the conventions of the OBPG.
The short-wave SST algorithm makes use of MODIS bands 22 and 23 at 3.959 amd 4.050 um. The brightness temperatures are derived from the observed radiances by inversion (in log space) of a the radiance versus blackbody temperature relationship. For msl12, these relationships were precomputed for the spectral response of each MODIS channel, and the tables were then stored in HDF files to be loaded at run-time. In modsst, the radiance versus blackbody temperature relationship was computed at run-time. The algorithm for computing short-wave SST (sst4) from observed brightness temperatures is shown below.
sst4 = a0 + a1*BT39 + a2*dBT + a3*(1.0/mu-1.0) where: dBT = BT39 - BT40 BT39 = brightness temperature at 3.959 um, in deg-C BT40 = brightness temperature at 4.050 um, in deg-C mu = cosine of sensor zenith angle
The coefficients a0, a1, a2, and a3 are derived and continuously verified by RSMAS based on match-ups between the satellite retrievals of brightness temperature and field measurements of sea surface temperature. As currently implemented, these coefficients can be time-dependent. The coefficients are provided to msl12 through external files, which are in a columnated ascii format of "sensor start-date end-date a0 a1 a2 a3". A link to the MODIS/Aqua file is here, and the MODIS/Terra file is here.
The short-wave infrared bands near 4um are affected by bright reflective sources such as sun glint. Due to such contamination, the short-wave SST product is not considered valid for daytime use.
The long-wave SST algorithm makes use of MODIS bands 31 and 32 at 11 amd 12 um. The brightness temperatures are derived from the observed radiances by inversion (in linear space) of the radiance versus blackbody temperature relationship. For msl12, these relationships were precomputed for the spectral response of each MODIS channel, and the tables were then stored in HDF files to be loaded at run-time. In modsst, the radiance versus blackbody temperature relationship was computed at run-time. The nonlinear SST algorithm was tuned for two different regimes based on brightness temperature difference. The algorithm for computing long-wave SST (sst) from observed brightness temperatures is shown below.
dBT <= 0.5 sst = a00 + a01*BT11 + a02*dBT*bsst + a03*dBT*(1.0/mu-1.0) dBT >= 0.9 sst = a10 + a11*BT11 + a12*dBT*bsst + a13*dBT*(1.0/mu-1.0) 0.5 < dBt < 0.9 sstlo = a00 + a01*BT11 + a02*dBT*bsst + a03*dBT*(1.0/mu-1.0) ssthi = a10 + a11*BT11 + a12*dBT*bsst + a13*dBT*(1.0/mu-1.0) sst = sstlo + (dBT-0.5)/(0.9-0.5)*(ssthi-sstlo) where: dBT = BT11 - BT1 BT11 = brightness temperature at 11 um, in deg-C BT12 = brightness temperature at 12 um, in deg-C bsst = baseline SST, which is either sst4 (if valid) or sstref (from oisst) mu = cosine of sensor zenith angle
At night, where sst4 retrieval is reliable, the algorithm uses sst4 for the bsst value. For daytime SST, the algorithm uses a reference SST source (sstref) for bsst, where sstref is operationally derived from the weekly Reynolds oisst product, bilinearly interpolated to the pixel location. The coefficients a00, a01, a02, and a03 and a10, a11, a12, and a13 are derived and continuously verified by RSMAS based on match-ups between the satellite retrievals of brightness temperature and field measurements of sea surface temperature. As currently implemented, these coefficients can be time-dependent. The coefficients are provided to msl12 through external files, which are in a columnated ascii format of "sensor start-date end-date ai0 ai1 ai2 ai3", with each pair of lines corresponding to low and high dBT difference cases, respectively. A link to the MODIS/Aqua file is here, and the MODIS/Terra file is here.
For the MODIS instrument on Terra, the retrieved long-wave SST is further augmented by a time-dependent, mirror-side specific bias. The adjustment varies from -0.2 deg-C to 0.1 deg-C over the mission lifespan, and it is applied to mirror-side 1 only. The mirror-side correction was developed by RSMAS, and the tabulated values are available here.
A series of quality tests are performed for each sst or sst4 retrieval. The quality tests are used to set the quality levels, which are then used to control the Level-3 binning process. For the msl12 implementation, each quality test was assigned a bit in a product-specific flag array. A separate, 16-bit flag product was created for both the short-wave (sst4) and long-wave (sst) products (flags_sst4 and flags_sst, respectively). The 16 flag bits were assigned as follows:
|00||ISMASKED||Pixel was aready masked|
|01||BTBAD||Brightness temperatures are bad|
|02||BTRANGE||Brightness temperatures are out-of-range|
|03||BTDIFF||Brightness temperatures are too different|
|04||SSTRANGE||SST outside valid range|
|05||SSTREFDIFF||SST is too different from reference|
|06||SST4DIFF||Longwave SST is different from shortwave SST|
|07||SST4VDIFF||Longwave SST is very different from shortwave SST|
|08||BTNONUNIF||Brightness temperatures are spatially non-uniform|
|09||BTVNONUNIF||Brightness temperatures are very spatially non-uniform|
|10||BT4REFDIFF||Brightness temperatures differ from reference|
|11||REDNONUNIF||Red-band spatial non-uniformity or saturation|
|12||HISENZ||Sensor zenith angle high|
|13||VHISENZ||Sensor zenith angle very high|
|14||SSTREFVDIFF||SST is too different from reference|
- Set if the SST processing is not performed because the pixel was masked prior to invocation. The msl12 code allows the user to specify a number of masking conditions. For standard SST processing, the only condition which would likely be selected for masking by msl12 at this stage is if the pixel is over land.
- Set if the observed radiances are beyond the limits of the radiance to brightness temperature tables, such that brightness temperatures can not be determined. This generally indicates saturation of one of the critical IR channels.
- Set if one of the brightness temperatures falls outside the physically realistic range for ocean observations. The currently accepted range is -4 to 33 deg-C.
- Set if the brightness temperature difference falls outside the physically realistic range for ocean observations. For long-wave SST, dBT = BT11 - BT12 and the currently accepted range for dBT is 0 to 3.6 deg-C. For short-wave SST, dBT = BT39 - BT40 and the currently accepted range for dBT is 0 to 8 deg-C.
- Set if the SST retrieval falls outside the physically realistic range for ocean observations. The currently accepted range is -2 to 45 deg-C.
- Set if the absolute difference between the SST retrieval and the sstref (oisst) value exceeds 3 deg-C. This test is problematic in regions of high spatial variability (e.g., frontal boundaries), as the sstref field is very low in spatial resolution and smoothed over time.
- This test is only applicable at night. Set if the absolute difference between the long-wave and short-wave SST retrieval exceeds 0.8 deg-C.
- This test is only applicable at night. Set if the absolute difference between the long-wave and short-wave SST retrieval exceeds 1.0 deg-C.
- Set if one of the required brightness temperatures shows evidence of spatial non-uniformity. The uniformity is determined by examination of the 3x3 pixel area around the pixel of interest. If the difference between the maximum value and the minimum value in that 9-pixel set exceeds 0.7 deg-C, the bit is set. This test does have a tendency to flag frontal boundaries and coastlines, as can be seen in this animation.
- Set if one of the required brightness temperatures shows a high degree of spatial non-uniformity. The test is identical to that of BTNONUNIF, but with a larger threshold. If the difference between the maximum value and the minimum value in the 9-pixel set exceeds 1.2 deg-C, the bit is set.
- This test is only applicable to the short-wave SST retrieval. The test compares the brightness temperature difference (dBT=BT39-BT40) against a supplied reference temperature, where the reference is provided as a function of scan pixel (basis unknown by author). A plot of the dBTref is shown here. If the difference between dBT and dBTref falls outside a specified range, the bit is set. The currently acceptable range is -1.1 to 10.0 deg-C.
- This test is only valid for daytime, and therefore only relevant to the long-wave SST product. Top-of-atmosphere reflectance (rho_t) in the 678-nm band (MODIS band 14) is computed over the 3x3 pixel area centered on the pixel of interest, where rho_t = pi*Lt/F0/(mu0 t t0 toz) and Lt is observed TOA radiance, F0 is band-averaged solar irradiance (at day of year), mu0 is cosine of solar zenith angle, t0 and t are the diffuse transmittance through a Rayleigh atmosphere (solar path and sensor path), and toz is the ozone transmittance (inbound and outband). If the the difference between the maximum value and the minimum value of rho_t in the 9-pixel set exceeds 0.01, the bit is set.
This bit is also set if 8 or more of the 9 pixels are saturated in the 678-nm band. In general, such saturation might indicate the presence of clouds, but it may also indicate the presence of sun glint. The long-wave SST is affected by clouds (SST retrieval appears colder than normal), but not by sun glint. To recover the sun glint case, the REDNONUNIF bit is only set if the retrieved SST is more than 1 deg-C colder than the reference. This secondary requirement works best in locations with temporally and spatially stable SST conditions, where the low-resolution sstref and the retrieved SST can be expected to be consistent. The saturation test is a much more stringent test than the original uniformity test. The new test is can be summarized as: set if red band reflectance in the pixel neighborhood is (saturated OR spatially nonuniform) AND SST retrieval is cold relative to the reference.
- Set if the sensor zenith angle exceeds 55 degrees. For msl12, this is redundant with the HISATZEN bit in the l2_flag array, but with a different standard threshold
- Set if the sensor zenith angle exceeds 75 degrees. This is rare.
- Set to indicate that the difference between the retrieved SST and the reference is very large (6-deg C). The related flag, SSTREFDIFF, indicates that the difference between the retrieved SST and the reference is moderately large (3-deg C).
The quality tests described above are used to set quality levels between 0 and 4, where 0 indicates best quality and 4 indicate complete failure or masked (usually land). The quality level determination varies between day and night conditions, and between the short-wave and long-wave SST products. The following tables show the quality test bits and associated quality levels. If no bits are set then the quality level is 0, but for short-wave SST retrievals in daylight the quality level is always set to 3 (bad) or 4 (failed or not computed). The quality level information for each SST product, sst and sst4, can be output by msl12 as products qual_sst and qual_sst4, respectively.
Daytime Long-Wave SST
|Quality Bit||Minimum Quality Level|
After the standard assessment based on the flag bits, if the retrieved SST is more than 1 deg-C colder than the reference (oisst) an additional test is done to determine if the reflectance at 678nm is unusually high (rho_t > 0.05). If yes, and the quality level is below 3, it is incremented by 1 (i.e., quality is reduce one level).
Nighttime Long-Wave SST
|Quality Bit||Minimum Quality Level|
After the standard assessment based on the flag bits, the quality flags for the short-wave SST are examined. If the BTNONUNIF bit is set for the short-wave SST, and the quality level of the long-wave SST is below 3, it is incremented by 1 (i.e., quality is reduce one level).
Daytime Short-Wave SST
|Quality Bit||Minimum Quality Level|
Nighttime Short-Wave SST
|Quality Bit||Minimum Quality Level|
The Level-2 products produced by msl12 include a standard set of flags associated with each pixel, stored in the l2_flags SDS. Most of these flags have no explicit meaning for SST, as they were designed to work in the reflected solar regime. This includes the cloud flag. The bits of interest for SST are the SSTFAIL and SSTWARN. In previous versions of msl12, SSTFAIL was set when long-wave SST could not be calculated, and SSTWARN was set when long-wave SST was very different from the reference SST (Reynolds). These bits will now be set based on the SST quality levels described above. The SSTWARN or SSTFAIL bits in l2_flags will only be set if one or both of the SST products (sst or sst4) is requested for output to the Level-2 file.
|27||SSTWARN||SST quality is reduced|
|28||SSTFAIL||SST quality is bad|
- If the sst (or sst4) product is requested for output, this bit will be set in l2_flags if qual_sst (or qual_sst4) is greater than or equal to 4.
- If the sst (or sst4) product is requested for output, this bit will be set in l2_flags if qual_sst (or qual_sst4) is greater than or equal to 1.