Transition of MODIS SST Processing to the OBPG

Bryan Franz
NASA Ocean Biology Processing Group
17 February 2006

Generation of the Sea Surface Temperature (SST) products from the MODIS sensors has historically been performed using software developed by the Rosenstiel School of Marine and Atmospheric Science (RSMAS) at the University of Miami. The RSMAS software is known formally as PGE10, and informally as modsst. In the future, processing and distribution of the MODIS SST products will be performed by the Ocean Biology Processing Group (OBPG). The OBPG will generate 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 use of common software simplifies integration of SST processing into the OBPG processing system, and also minimizes software maintenance costs. The immediate goal is to transfer all current SST processing logic from modsst into msl12. To this end, the latest available version of modsst and several past versions were examined, and the required algorithms were implemented into msl12. The impementation was then verified through comparison with standard archive products from the most recently available MODIS/Aqua reprocessing (MODAPS/DAAC Collection 4). A description of the algorithms as determined from analysis of the RSMAS code is provided in this document. Recent modifications are specifically identified, as these are not reflected in the current archive products used for verification. Details of the implemention within msl12 are provided, and comparisons between the msl12 and modsst processing results are shown.

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 - BT12
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.

The msl12 code was already capable of generating standard MODIS long-wave SST products. The primary change associated with this effort is the update of algorithm coefficients for MODIS instrument on Terra. Previous versions of msl12 did not have support for the time-dependence or the mirror-side correction. These changes were recently implemented on modsst, in preparation for Terra collection 5 processing. The MODIS/Aqua coefficients have not changed in several years.

A series of quality tests are performed for each sst or sst4 retrieval. The quality tests are used by modsst to set the quality levels, which are then used to control the 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:

Bit Name Description 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 Spare Spare 15 Spare Spare
  • ISMASKED
  • 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.

  • BTBAD
  • 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.

  • BTRANGE
  • 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.

  • BTDIFF
  • 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.

  • SSTRANGE
  • Set if the SST retrieval falls outside the physically realistic range for ocean observations. The currently accepted range is -2 to 45 deg-C.

  • SSTREFDIFF
  • Set if the absolute difference between the SST retrieval and the sstref (oisst) value exceeds 6 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. The difference threshold was reduced to 3 deg-C in the most recent (collection 5) version of modsst.

  • SST4DIFF
  • 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.

  • SST4VDIFF
  • 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.

  • BTNONUNIF
  • 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.

  • BTVNONUNIF
  • 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.

  • BT4REFDIFF
  • 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. However, current and past versions of modsst tested the absolute value of dBT-dBTref, so the low-end limit was never exceeded. This will be corrected in the msl12 implementation.

  • REDNONUNIF
  • 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.

    In the most recent version of modsst, the 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.

  • HISENZ
  • 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

  • VHISENZ
  • Set if the sensor zenith angle exceeds 75 degrees. This is rare.

The quality tests described above are used by modsst to set quality levels between 0 and 3, where 0 indicates best quality. This same concept was implemented in msl12, primarily to allow for comparison with the modsst-derived quality and thus verify implementation of the quality tests. 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). The quality level information for each SST product, sst and sst4, can now be output by msl12 as products qual_sst and qual_sst4, respectively.

Daytime Long-Wave SST

Quality Bit Minimum Quality Level
ISMASKED 3
VHISENZ 3
BTBAD 3
BTRANGE 3
SSTRANGE 3
BTVNONUNIF 3
SSTREFDIFF 3
BTNONUNIF 2
REDNONUNIF 2
HISENZ 1

In the latest version of modsst, the above quality levels below 3 are incremented by 1 if the red band reflectance is high (rho_t > 0.05) and the retrieved SST is cold (sst-sstref < -1 deg-C).

Nighttime Long-Wave SST

Quality Bit Minimum Quality Level
ISMASKED 3
BTBAD 3
BTRANGE 3
SSTRANGE 3
BT4REFDIFF 3
SSTREFDIFF 3
BTVNONUNIF 2
VHISENZ 2
SST4DIFF 2
BTNONUNIF 1
SST4VDIFF 1
HISENZ 1

In the latest version of modsst, the above quality levels below 3 are incremented by 1 if the BTNONUNIF bit is set for the short-wave SST product.

Note that the SST4DIFF and SST4VDIFF are reversed from expectation. This appears to be an implementation error in modsst which will be corrected in msl12.

Nighttime Short-Wave SST

Quality Bit Minimum Quality Level
ISMASKED 3
BTBAD 3
BTRANGE 3
SSTRANGE 3
BT4REFDIFF 3
SSTREFDIFF 3
BTVNONUNIF 2
VHISENZ 2
SST4DIFF 2
BTNONUNIF 1
SST4VDIFF 1
HISENZ 1

Note that the SST4DIFF and SST4VDIFF are reversed from expectation. This appears to be an implementation error in modsst which will be corrected in msl12.

As previously stated, the goal of this initial effort is to transfer to msl12 all SST retrieval and quality assessment logic currently implemented in the modsst code of RSMAS. To verify that all relevant algorithm changes and quality tests have been captured, a pair of MODIS/Aqua scenes were ordered from the Goddard DAAC, including the Level-1B, geolocation, Level-2 SST, and Level-2 SST QC products. The two scenes included one daytime granule (2005 118 17:55) and one nighttime granule (2005 100 07:05), both from the collection 040 modsst/MODAPS processing. The Level-1B and geolocation were processed through msl12 to produce the long-wave SST product and associated quality flag and quality level products (sst,flags_sst,qual_sst) and the short-wave SST product and associated quality flag and quality level products (sst4,flags_sst4,qual_sst4). The links below show comparison images and difference histograms for the SST and brightness temperatures, and comparison images of the quality levels (red=3, green=2, blue=1, black=0).

  • Daytime Scene, US East Coast, Comparison with modsst
  • Nighttime Scene, US East Coast, Comparison with modsst

  • As can be seen, the results are identical. The only differences are at the 0.01 deg-C level, which is the digitization of the scaled integer storage for sst and sst4 in the modsst HDF file format. To perform this comparison, it was necessary to disable some of the most recent modsst updates to the quality test and quality level logic, as those changes were not applied to the DAAC archive products of collection 040. It was also necessary to include some of the few minor implementation errors which were identified in modsst. In addition, it was discovered that the modsst code does not process the first and last line of any given granule (sst=0.0, quality=3), so the first and last lines of each scene were ignored for these comparisons.

    The msl12 implementation makes it possible to display each of the quality test flags as an image. The links below show just the msl12 products, including side-by-side comparison of the long-wave and short-wave SST retrievals and quality levels, and settings for each of the 14 active flag bits.

  • Daytime Scene, US East Coast, Quality Levels and Flags
  • Nighttime Scene, US East Coast, Quality Levels and Flags

The SST algorithm coefficients described above are as proposed for the planned Collection 5 processing by MODAPS. For Aqua processing, the algorithm coefficients have not changed relative to Collection 4, which is why the comparisons in the previous section are identical between msl12 and the modcol products retrieved from the DAAC. However, RSMAS has proposed a number of changes to the quality assessment. These updates in the "most recent" version were noted in the discussion above. In addition, some minor implementation errors were identified and fixed. The changes were implemented for MSL12 V5.3.1. They are summarized below.

Quality Flag Changes

  • SSTREFDIFF
  • The difference threshold was reduced from 6 to 3 deg-C.

  • REDNONUNIF
  • In addition to the non-uniformity test, this bit is now also set if 8 or more of the 9 pixel area is saturated in the 678-nm band. However, the bit will now only be set if the retrieved SST is more than 1 deg-C colder than sstref (oisst).

  • BT4REFDIFF
  • Corrected implementation to use signed value of dBT - dBTref, rather than absolute value.

    Quality Level Changes

    In addition to the flag changes, some corrections and modifications were made to the quality level assessment in association with the planned collection 5 processing. These changes were noted in the previous discussion. They are summarized below.

  • Daytime Long-Wave SST Quality
  • 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
  • After the standard assessment based on the flag bits, the quality flags for the short-wave SST are now 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). In addition, the quality-level logic was corrected such that SST4VDIFF implies lower quality than SST4DIFF.

  • Nighttime Short-Wave SST Quality
  • The quality-level logic was corrected such that SST4VDIFF implies lower quality than SST4DIFF.

    Assessment of Changes

    The links below show side-by-side comparison of the SST retrievals, quality levels, and settings for each of the 14 active flag bits, before and after the proposed Collection 5 changes.

  • Effect on Long-Wave SST, Daytime Scene, US East Coast
  • Effect on Short-Wave SST, Daytime Scene, US East Coast
  • Effect on Long-Wave SST, Nighttime Scene, US East Coast
  • Effect on Short-Wave SST, Nighttime Scene, US East Coast

The OBPG has made some minor changes beyond the "Collection 5" updates. These have not yet been vetted with RSMAS or the user community. The changes were implemented in MSL12 v5.3.3. They are summarized below.

Quality Flag Changes

Bit Name Description
14 SSTREFVDIFF SST is too different from reference
  • SSTREFVDIFF
  • In consultation with RSMAS, a second test was added on the difference between the reference SST (Reynolds) and the retrieved SST. This is to allow for setting of different quality levels at different extremes. The new flag is 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).

    Quality Level Changes

  • Daytime Short-Wave SST Quality
  • No change. Still all QL=3.

  • Daytime Long-Wave SST Quality
  • SSTREFVDIFF sets QL=3, SSTREFDIFF sets QL=1.

  • Nighttime Long-Wave SST Quality
  • SSTREFVDIFF sets QL=3, SSTREFDIFF sets QL=1.

  • Nighttime Long-Wave SST Quality
  • SSTREFVDIFF sets QL=3, SSTREFDIFF sets QL=1.

  • Nighttime Short-Wave SST Quality
  • SSTREFVDIFF sets QL=3, SSTREFDIFF sets QL=1.

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.

Level-2 Flags

Bit Name Description
27 SSTWARN SST quality is reduced
28 SSTFAIL SST quality is bad
  • SSTFAIL
  • 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 2.

  • SSTWARN
  • 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 1.