8. Level 3 (L3) Product Specification#
8.1. Overview description of the GHRSST L3 data product#
GHRSST L3 data have been introduced to provide users with gridded, synthetic, and potentially adjusted SST products, bringing added value with respect to the original L2P but still allowing traceability to the original dataset. GHRSST L3 products do not use analysis or interpolation procedure to fill gaps where no observations are available. The GHRSST L3 products include:
Un-collated data that represent a straightforward remapping of L2P GHRSST data granules to a space grid without combining any observations from overlapping orbits or times. Although in principle these data may or may not be adjusted to a reference sensor, in practice the un-collated L3 will normally be a remapped L2P dataset. For remapping best practices of L2P on a grid, see Section 8.4.1.
Collated data that grid observations from a single instrument and a single platform into space and/or time bins. These data may or may not be adjusted to a reference sensor. For collating best practices, see Section 8.4.2 and for adjustment best practices see Section 8.4.3.
Super-collated data that combine observations from a multiple instruments into a space-time grid. In this case, the adjustment to a common reference is necessary to avoid heterogeneities in the resulting field. For best practices concerning the creation of super collated files see Section 8.4.4
As a result, the format of a L3 file will be able to cope with the three kinds of L3 SST presented above. The L3 format will include the following parts:
In case the L3 is un-adjusted, a mandatory section containing the original L2P information remapped onto the grid point: the original sea surface temperature, quality level and SSES information. An optional section including the remapping condition information may also be provided. These files are essentially gridded L2P files.
In case the L3 is adjusted to a reference, the adjusted SST value must be provided, together with the local bias to the reference, the error generated by the adjustment processing, and the overall error resulting from the combination of the SSES and the adjustment processing error.
In case the L3 is super-collated, the source of SST at each pixel is mandatory.
Un-adjusted files: In the case of un-collated or collated un-adjusted L3 files the L3 file is derived from L2P data by a remapping process. The remapping and collating best practices are given in Section 8.4.1. Their content is thus identical to that of the L2P, but complementary, optional information on the remapping conditions may be provided.
Adjusted files: Collated files may or may not be adjusted, but a
super-collated file is necessarily adjusted. The super-collating and adjustment
best practices are described in Section 8.4.2 and
Section 8.4.3. The principle governing this format is to
allow traceability to the original L2P, while providing the best-adjusted SST
value. A first section (in blue in Table 8.1) reproduces the original
L2P SST and SSES information as in the un-adjusted version. The reference used
to adjust the SST must be given in the “reference” attribute of the
adjusted_sea_surface_temperature variable. The adjusted SST and some error
information are also mandatory. This information, in yellow in
Table 8.1, is:
adjusted_standard_deviation_error: the total error resulting from the combination of the SSES error and the adjustment procedure error,standard_deviation_to_reference_sst.bias_to_reference_sst: the local value of the estimated difference between the original SST and the reference SSTstandard_deviation_to_reference_sst: an estimate of the error resulting from the adjustment procedure. If the procedure consists of analysing a field of differences of original SST and reference SST, thestandard_deviation_to_reference_sstwill be the error of this analysis.
The GHRSST Science Team determined that 5 mandatory fields will form the core data content of a GHRSST L3 data file. In addition to global attributes and geo-location information, GHRSST producers must provide the following within a L3 file:
Sea Surface temperature data (SST),
Time of SST measurement,
Bias and Standard Deviation error estimates for SST data,
Data quality.
There are a number of optional fields that may be used at the data provider’s discretion that will form the core data content of a GHRSST data file (Table 8.2).
The GHRSST L3 file contents are summarized in Table 8.1 below.
netCDF File Contents |
Description |
|---|---|
Coordinate variables |
Information to permit locating data on grids, as defined in Section 6 |
L2P Data record variables |
Core and auxiliary variables as defined in Section 7.2 |
L3 Data record variables |
Special Level 3 variables as defined in Table 8.2 |
Global Attributes |
A collection of required global attributes describing general characteristics of the file, as defined in section Section 5.2 |
8.2. L3 data record format specification#
This table provides an overview of the GHRSST L3 product pixel data record that should be created for each input data. Within GHRSST L3 data files, there are many variables that are defined identically to their L2P counterparts. In addition, there are several variables that are unique to L3. Both types are listed below in Table 8.2. In the following sections, each variable within the L3 data file that is unique to L3 is described in detail.
Variable Name |
Description |
Units |
Storage type |
|---|---|---|---|
SST measurement values from input L2 satellite data set. |
K (kelvin) |
short |
|
The deviation in time of SST measurement from reference time |
s (second) |
short |
|
Sensor Specific Error Statistic (SSES) bias error |
K (kelvin) |
byte |
|
Sensor Specific Error Statistic (SSES) standard deviation uncertainty |
K (kelvin) |
byte |
|
The difference between input SST and a GHRSST L4 SST analysis from the previous 24 hour period |
K (kelvin) |
byte or short |
|
Closest (in time) 10 m surface wind speed from satellite or analysis |
m s-1 |
byte |
|
Time difference of |
h (hour) |
byte |
|
Source(s) of |
Code |
byte |
|
Closest (in time) sea ice fraction from satellite or analysis |
1 |
byte |
|
Time difference of |
h (hour) |
byte |
|
Source(s) of |
code |
byte |
|
Atmospheric aerosol indicator |
byte |
||
Time difference between the |
h (hour) |
byte |
|
Source(s) of atmospheric aerosol indicator data |
code |
byte |
|
Data flag values |
mask of bits |
short |
|
Overall indication of L2P data quality |
enum |
byte |
|
Calculated satellite zenith angle (measured at the Earth’s surface between the satellite and the zenith) |
degree |
byte |
|
Calculated solar zenith angle (the angle between the local zenith and the line of sight to the sun, measured at the Earth’s surface) |
degree |
byte |
|
Near contemporaneous surface solar irradiance |
W m-2 |
byte |
|
Time difference between the |
h (hour) |
byte |
|
Source(s) of |
code |
byte |
|
Original latitude of the satellite measurement as provided in the L2P |
degree_north |
short or float |
|
Original longitude of the satellite measurement as provided in the L2P |
degree_east |
short or float |
|
Number of original pixels from the L2P contributing to the binned (space and/or time) average |
1 (unitless) |
short |
|
Sum of the pixel values going into the space and/or time bin |
K (kelvin) |
float |
|
Sum of the pixel value squares going into the space and/or time bin |
K2 (kelvin^2) |
float |
|
SST adjusted to the reference. Mandatory for adjusted type file |
K (kelvin) |
short |
|
Total error standard deviation estimate derived from SSES and adjustment method. Mandatory for adjusted type file |
K (kelvin) |
byte |
|
Bias error derived from comparison with the reference. Mandatory for adjusted type file |
K (kelvin) |
short |
|
Error standard deviation resulting from the bias estimation method. Mandatory for adjusted type file |
K (kelvin) |
byte |
|
Source of SST data. Mandatory for super-collated type file |
code |
byte |
|
Optional/experimental fields defined by data provider |
8.2.1. or_latitude#
Optional.
This variable is the original latitude of the contributing pixel in case of remapping to the nearest pixel, or the average latitude of the contributing pixels in case of averaging.
The variable or_latitude will be included either as a floating point
variable similarly to the grid latitude and longitude, or as a short variable,
with the format requirements shown in Table 8.3, if the required
precision is compatible.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short or float |
|
Original latitude of the satellite measurement |
degree_north |
short or_latitude(time, lat, lon) ;
or_latitude:_FillValue = -32768s ;
or_latitude:long_name = "original latitude of the SST value" ;
or_latitude:standard_name = "latitude" ;
or_latitude:units = "degree_north" ;
or_latitude:coverage_content_type = "coordinate" ;
or_latitude:authority = "CF-1.11, ACDD-1.3" ;
or_latitude:add_offset = 0. ;
or_latitude:scale_factor = 0.01 ;
8.2.2. or_longitude#
Optional.
This variable is the original longitude of the contributing pixel in case of remapping to the nearest pixel, or the average longitude of the contributing pixels in case of averaging.
The variable or_longitude shall be included either as a floating point
variable similarly to the grid latitude and longitude, or as a short variable,
with the format requirements shown in Table 8.4, if the
required precision is compatible.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short or float |
|
Original longitude of the satellite measurement |
degree_east |
short or_longitude(time, lat, lon) ;
or_longitude:_FillValue = -32768s ;
or_longitude:long_name = "original longitude of the SST value" ;
or_longitude:standard_name = "longitude" ;
or_longitude:units = "degree_east" ;
or_longitude:coverage_content_type = "coordinate" ;
or_longitude:authority = "CF-1.11, ACDD-1.3" ;
or_longitude:add_offset = 0. ;
or_longitude:scale_factor = 0.01 ;
8.2.3. or_number_of_pixels#
Mandatory.
This variable is the number of original pixels from the L2P contributing to the binned (space and/or time) average.
The variable or_number_of_pixels shall be included with the format
requirements shown in Table 8.5.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short |
|
Number of pixels from the L2P contributing to the SST value |
“1” (unitless) |
short or_number_of_pixels(time, lat, lon) ;
or_number_of_pixels:_FillValue = -32768s ;
or_number_of_pixels:long_name = "original number of pixels from the L2Ps contributing to the SST value" ;
or_number_of_pixels:units = "1" ;
or_number_of_pixels:standard_name = "sea_surface_foundation_temperature number_of_observations" ;
or_number_of_pixels:coverage_content_type = "referenceInformation" ;
8.2.4. sum_sst#
Optional.
This variable is the sum of the original SST pixel values contributing to the binned (space and/or time) average.
The variable sum_sst shall be included with the format requirements shown in
Table 8.6.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short |
|
Sum of the pixel values going into the space and/or time bin |
K (kelvin) |
float sum_sst(time, lat, lon) ;
sum_sst:_FillValue = 1.e+20f ;
sum_sst:long_name = "Sum of original contributing pixel sst values" ;
sum_sst:units = "K" ;
sum_sst:coverage_content_type = "auxiliaryInformation" ;
8.2.5. sum_square_sst#
Optional.
This variable is the sum of the squares of the original SST pixel values contributing to the binned (space and/or time) average.
The variable sum_square_sst shall be included with the format requirements
shown in Table 8.7.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short |
|
Sum of the pixel value squares going into the space and/or time bin |
K2 |
float sum_square_sst(time, lat, lon) ;
sum_square_sst:_FillValue = 1.e+20f ;
sum_square_sst:long_name = "Sum of contributing pixel sst value squares" ;
sum_square_sst:units = "K2" ;
sum_square_sst:coverage_content_type = "auxiliaryInformation" ;
8.2.6. adjusted_sea_surface_temperature#
Mandatory for adjusted type files.
This variable is the SST adjusted to the reference. See the principles of the adjustment procedure in Section 8.4.3.
The variable adjusted_sea_surface_temperature shall be included with the
format requirements shown in Table 8.8.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short |
|
SST values after adjustment to the reference |
K (kelvin) |
short adjusted_sea_surface_temperature(time, lat, lon) ;
adjusted_sea_surface_temperature:_FillValue = -32768s ;
adjusted_sea_surface_temperature:long_name = "adjusted foundation sea surface temperature" ;
adjusted_sea_surface_temperature:units = "K" ;
adjusted_sea_surface_temperature:standard_name = "sea_surface_foundation_temperature" ;
adjusted_sea_surface_temperature:coverage_content_type = "physicalMeasurement" ;
adjusted_sea_surface_temperature:binning_method = "mean" ;
adjusted_sea_surface_temperature:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
adjusted_sea_surface_temperature:valid_range = -300s, 4500s ;
adjusted_sea_surface_temperature:comment = "The recommended SST variable to use in this product. The original observations were cross-calibrated using a multi-sensor reference field\"" ;
adjusted_sea_surface_temperature:add_offset = 273.15 ;
adjusted_sea_surface_temperature:scale_factor = 0.01 ;
8.2.7. adjusted_standard_deviation_error#
Mandatory for adjusted type files.
This variable represents the total error associated with the
adjusted_sea_surface_temperature variable. It represents the accumulated
error of the SST production (the sses_standard_deviation) and the SST
adjustment (standard_deviation_to_reference_sst).
The variable adjusted_standard_deviation_error shall be included with the
format requirements shown in Table 8.9.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
byte |
|
Total error standard deviation estimate derived from SSES and adjustment method |
K (kelvin) |
byte adjusted_standard_deviation_error(time, lat, lon) ;
adjusted_standard_deviation_error:_FillValue = -128b ;
adjusted_standard_deviation_error:long_name = "standard deviation error based on L2P SSES and adjustment method" ;
adjusted_standard_deviation_error:units = "K" ;
adjusted_standard_deviation_error:coverage_content_type = "qualityInformation" ;
adjusted_standard_deviation_error:comment = "Cumulated errors of SSES and adjustment method" ;
adjusted_standard_deviation_error:scale_factor = 0.01 ;
adjusted_standard_deviation_error:add_offset = 1. ;
8.2.8. bias_to_reference_sst#
Mandatory for adjusted type files.
This quantity represents the local value of the adjustment to the reference.
The variable bias_to_reference_sst shall be included with the format
requirements shown in Table 8.10.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
byte |
|
Bias error derived from comparison with the reference |
K (kelvin) |
short bias_to_reference_sst(time, lat, lon) ;
bias_to_reference_sst:_FillValue = -32768s ;
bias_to_reference_sst:long_name = "bias error derived from reference" ;
bias_to_reference_sst:units = "K" ;
bias_to_reference_sst:comment = "Bias estimate derived from comparison between the original SST (native SSES being applied) and the reference sensor SST (original SST - reference SST)" ;
bias_to_reference_sst:coverage_content_type = "qualityInformation" ;
bias_to_reference_sst:add_offset = 0. ;
bias_to_reference_sst:scale_factor = 0.01 ;
8.2.9. standard_deviation_to_reference_sst#
Mandatory for adjusted type files.
This quantity represents the local error standard deviation resulting from the bias estimation method.
The variable standard_deviation_to_reference_sst shall be included with the
format requirements shown in Table 8.11.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
short |
|
Error standard deviation resulting from the bias estimation method |
K (kelvin) |
byte standard_deviation_to_reference_sst(time, lat, lon) ;
standard_deviation_to_reference_sst:_FillValue = -128b ;
standard_deviation_to_reference_sst:long_name = "standard deviation of the reference error" ;
standard_deviation_to_reference_sst:units = "K" ;
standard_deviation_to_reference_sst:coverage_content_type = "qualityInformation" ;
standard_deviation_to_reference_sst:comment = "This represents the error standard deviation estimate resulting from the bias estimation method" ;
standard_deviation_to_reference_sst:scale_factor = 0.01 ;
standard_deviation_to_reference_sst:add_offset = 1. ;
8.2.10. source_of_sst#
Mandatory and only applicable to super-collated (L3S) type files.
This variable represents the source(s) of SST data when merging the values from different input datasets.
When only one source is used, this variable is not needed and the appropriate
text string indicating the source is placed in the source attribute of the
sea_surface_temperature variable.
For multiple sources, the GDS-2.2r0 requires the following:
The variable in question should contain an attribute called
flag_meaningsand another one calledflag_values. Theflag_valuesattribute shall contain a comma-separated list of the numeric codes for the sources of data used whose order matches the comma-separated text strings in theflag_meaningsattribute.These text strings and numeric codes do not need to be unique across different data sets or even ancillary variables, but must be consistent within a given variable and clearly specified within each netCDF variable and its attributes. A best practice for naming the text strings in provided in
Section 4.9.
In a super-collated file (L3S), the variable source_of_sst shall be included
with the format requirements shown in Table 8.12.
Storage type |
Name |
Description |
Unit |
|---|---|---|---|
byte |
|
Origin of the SST at pixel level |
code |
byte source_of_sst(time, lat, lon) ;
source_of_sst:flag_values = 0b, 20b, 21b, 70b, 72b, 80b, 81b, 53b, 41b, 52b, 42b, 85b, 60b ;
source_of_sst:flag_meanings = "no_data VIIRS_NPP-STAR-L2P-v2.80 VIIRS_N20-STAR-L2P-v2.80 AVHRR_SST_METOP_B-OSISAF-L2P-v1.0 AVHRR_SST_METOP_C-OSISAF-L2P-v1.0 SLSTRA-MAR-L2P-v1.0 SLSTRB-MAR-L2P-v1.0 ABI_G18-STAR-L3C-v2.90 SEVIRI_SST-OSISAF-L3C-v1.0 GOES16-OSISAF-L3C-v1.0 SEVIRI_IO_SST-OSISAF-L3C-v1.0 AHI_H09-STAR-L3C-v2.9 AMSR2-REMSS-L2P-v8.2" ;
source_of_sst:long_name = "source of sea surface temperature measurement" ;
source_of_sst:coverage_content_type = "referenceInformation" ;
8.3. Sample GHRSST L3 file (CDL header)#
A complete CDL description of a L3S dataset is given below.
netcdf \20240101000000-IFR-L3S_GHRSST-SSTfnd-ODYSSEA-GLOB_010-v02.2-fv01.0 {
dimensions:
lat = 1600 ;
lon = 3600 ;
time = 1 ;
variables:
float lat(lat) ;
lat:_FillValue = NaNf ;
lat:standard_name = "latitude" ;
lat:units = "degrees_north" ;
lat:axis = "Y" ;
lat:long_name = "latitude" ;
lat:authority = "CF-1.11, ACDD-1.3" ;
lat:valid_range = -90.f, 90.f ;
lat:comment = "geographical coordinates, WGS84 projection" ;
lat:coverage_content_type = "coordinate" ;
float lon(lon) ;
lon:_FillValue = NaNf ;
lon:standard_name = "longitude" ;
lon:units = "degrees_east" ;
lon:axis = "X" ;
lon:long_name = "longitude" ;
lon:authority = "CF-1.11, ACDD-1.3" ;
lon:valid_range = -180.f, 180.f ;
lon:comment = "geographical coordinates, WGS84 projection" ;
lon:coverage_content_type = "coordinate" ;
int64 crs ;
crs:grid_mapping_name = "latitude_longitude" ;
crs:longitude_of_prime_meridian = 0. ;
crs:semi_major_axis = 6378137. ;
crs:inverse_flattening = 298.257223563 ;
short sea_surface_temperature(time, lat, lon) ;
sea_surface_temperature:_FillValue = -32768s ;
sea_surface_temperature:long_name = "sea surface foundation temperature" ;
sea_surface_temperature:units = "K" ;
sea_surface_temperature:standard_name = "sea_surface_foundation_temperature" ;
sea_surface_temperature:coverage_content_type = "physicalMeasurement" ;
sea_surface_temperature:binning_method = "mean" ;
sea_surface_temperature:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
sea_surface_temperature:valid_range = -300s, 4500s ;
sea_surface_temperature:add_offset = 273.15 ;
sea_surface_temperature:scale_factor = 0.01 ;
short or_number_of_pixels(time, lat, lon) ;
or_number_of_pixels:_FillValue = -32768s ;
or_number_of_pixels:long_name = "original number of pixels from the L2Ps contributing to the SST value" ;
or_number_of_pixels:units = "1" ;
or_number_of_pixels:standard_name = "sea_surface_foundation_temperature number_of_observations" ;
or_number_of_pixels:coverage_content_type = "referenceInformation" ;
byte sea_surface_temperature_stddev(time, lat, lon) ;
sea_surface_temperature_stddev:_FillValue = -128b ;
sea_surface_temperature_stddev:long_name = "sea_surface_subskin_temperature" ;
sea_surface_temperature_stddev:units = "kelvin" ;
sea_surface_temperature_stddev:standard_name = "sea_surface_subskin_temperature" ;
sea_surface_temperature_stddev:coverage_content_type = "physicalMeasurement" ;
sea_surface_temperature_stddev:binning_method = "std" ;
sea_surface_temperature_stddev:cell_methods = "lat: lon: standard_deviation (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
sea_surface_temperature_stddev:add_offset = 2.54 ;
sea_surface_temperature_stddev:scale_factor = 0.02 ;
byte quality_level(time, lat, lon) ;
quality_level:_FillValue = -128b ;
quality_level:flag_meanings = "no_data bad_data worst_quality low_quality acceptable_quality best_quality" ;
quality_level:flag_values = 0LL, 1LL, 2LL, 3LL, 4LL, 5LL ;
quality_level:long_name = "quality level of SST pixel" ;
quality_level:coverage_content_type = "qualityInformation" ;
quality_level:binning_method = "mean" ;
quality_level:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
quality_level:valid_range = 0b, 5b ;
quality_level:standard_name = "sea_surface_foundation_temperature status_flag" ;
quality_level:comment = "These are the overall quality indicators and are used for all GHRSST SSTs" ;
byte sses_bias(time, lat, lon) ;
sses_bias:_FillValue = -128b ;
sses_bias:long_name = "SSES bias estimate" ;
sses_bias:units = "K" ;
sses_bias:coverage_content_type = "qualityInformation" ;
sses_bias:binning_method = "mean" ;
sses_bias:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
sses_bias:valid_range = -127b, 127b ;
sses_bias:comment = "Bias estimate derived using the techniques described at http://www.ghrsst.org/SSES-Description-of-schemes.html" ;
sses_bias:add_offset = 0. ;
sses_bias:scale_factor = 0.02 ;
byte sses_standard_deviation(time, lat, lon) ;
sses_standard_deviation:_FillValue = -128b ;
sses_standard_deviation:long_name = "SSES standard deviation" ;
sses_standard_deviation:units = "kelvin" ;
sses_standard_deviation:coverage_content_type = "qualityInformation" ;
sses_standard_deviation:binning_method = "mean" ;
sses_standard_deviation:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
sses_standard_deviation:valid_range = -127b, 127b ;
sses_standard_deviation:comment = "Standard deviation estimate derived using the techniques described at http://www.ghrsst.org/SSES-Description-of-schemes.html" ;
sses_standard_deviation:add_offset = 2.54 ;
sses_standard_deviation:scale_factor = 0.02 ;
byte satellite_zenith_angle(time, lat, lon) ;
satellite_zenith_angle:_FillValue = -128b ;
satellite_zenith_angle:long_name = "satellite zenith angle" ;
satellite_zenith_angle:units = "angular_degree" ;
satellite_zenith_angle:coverage_content_type = "referenceInformation" ;
satellite_zenith_angle:binning_method = "mean" ;
satellite_zenith_angle:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
satellite_zenith_angle:standard_name = "platform_zenith_angle" ;
satellite_zenith_angle:comment = "the satellite zenith angle at the time of the SST observations" ;
satellite_zenith_angle:add_offset = 0. ;
satellite_zenith_angle:scale_factor = 1. ;
short or_latitude(time, lat, lon) ;
or_latitude:_FillValue = -32768s ;
or_latitude:long_name = "original latitude of the SST value" ;
or_latitude:standard_name = "latitude" ;
or_latitude:units = "degree_north" ;
or_latitude:coverage_content_type = "coordinate" ;
or_latitude:authority = "CF-1.11, ACDD-1.3" ;
or_latitude:add_offset = 0. ;
or_latitude:scale_factor = 0.01 ;
short or_longitude(time, lat, lon) ;
or_longitude:_FillValue = -32768s ;
or_longitude:long_name = "original longitude of the SST value" ;
or_longitude:standard_name = "longitude" ;
or_longitude:units = "degree_east" ;
or_longitude:coverage_content_type = "coordinate" ;
or_longitude:authority = "CF-1.11, ACDD-1.3" ;
or_longitude:add_offset = 0. ;
or_longitude:scale_factor = 0.01 ;
short adjusted_sea_surface_temperature(time, lat, lon) ;
adjusted_sea_surface_temperature:_FillValue = -32768s ;
adjusted_sea_surface_temperature:long_name = "adjusted foundation sea surface temperature" ;
adjusted_sea_surface_temperature:units = "K" ;
adjusted_sea_surface_temperature:standard_name = "sea_surface_foundation_temperature" ;
adjusted_sea_surface_temperature:coverage_content_type = "physicalMeasurement" ;
adjusted_sea_surface_temperature:binning_method = "mean" ;
adjusted_sea_surface_temperature:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
adjusted_sea_surface_temperature:valid_range = -300s, 4500s ;
adjusted_sea_surface_temperature:comment = "The recommended SST variable to use in this product. The original observations were cross-calibrated using a multi-sensor reference field\"" ;
adjusted_sea_surface_temperature:add_offset = 273.15 ;
adjusted_sea_surface_temperature:scale_factor = 0.01 ;
byte solar_zenith_angle(time, lat, lon) ;
solar_zenith_angle:_FillValue = -128b ;
solar_zenith_angle:long_name = "solar zenith angle" ;
solar_zenith_angle:units = "angular_degree" ;
solar_zenith_angle:standard_name = "solar_zenith_angle" ;
solar_zenith_angle:binning_method = "mean" ;
solar_zenith_angle:cell_methods = "lat: lon: mean (interval: 0.1 degree_N interval: 0.1 degree_E)" ;
solar_zenith_angle:coverage_content_type = "referenceInformation" ;
solar_zenith_angle:comment = "the solar zenith angle at the time of the SST observations" ;
solar_zenith_angle:add_offset = 90. ;
solar_zenith_angle:scale_factor = 1. ;
short bias_to_reference_sst(time, lat, lon) ;
bias_to_reference_sst:_FillValue = -32768s ;
bias_to_reference_sst:long_name = "bias error derived from reference" ;
bias_to_reference_sst:units = "K" ;
bias_to_reference_sst:comment = "Bias estimate derived from comparison between the original SST (native SSES being applied) and the reference sensor SST (original SST - reference SST)" ;
bias_to_reference_sst:coverage_content_type = "qualityInformation" ;
bias_to_reference_sst:add_offset = 0. ;
bias_to_reference_sst:scale_factor = 0.01 ;
int sst_dtime(time, lat, lon) ;
sst_dtime:_FillValue = -2147483648 ;
sst_dtime:long_name = "time difference from reference time" ;
sst_dtime:comment = "time plus sst_dtime gives each measurement time" ;
sst_dtime:units = "second" ;
sst_dtime:coverage_content_type = "coordinate" ;
double time(time) ;
time:_FillValue = 1.e+20 ;
time:axis = "T" ;
time:long_name = "reference time of sst file" ;
time:standard_name = "time" ;
time:authority = "CF-1.11, ACDD-1.3" ;
time:coverage_content_type = "coordinate" ;
time:units = "seconds since 1981-01-01" ;
time:calendar = "proleptic_gregorian" ;
byte source_of_sst(time, lat, lon) ;
source_of_sst:flag_values = 0b, 20b, 21b, 70b, 72b, 80b, 81b, 53b, 41b, 52b, 42b, 85b, 60b ;
source_of_sst:flag_meanings = "no_data VIIRS_NPP-STAR-L2P-v2.80 VIIRS_N20-STAR-L2P-v2.80 AVHRR_SST_METOP_B-OSISAF-L2P-v1.0 AVHRR_SST_METOP_C-OSISAF-L2P-v1.0 SLSTRA-MAR-L2P-v1.0 SLSTRB-MAR-L2P-v1.0 ABI_G18-STAR-L3C-v2.90 SEVIRI_SST-OSISAF-L3C-v1.0 GOES16-OSISAF-L3C-v1.0 SEVIRI_IO_SST-OSISAF-L3C-v1.0 AHI_H09-STAR-L3C-v2.9 AMSR2-REMSS-L2P-v8.2" ;
source_of_sst:long_name = "source of sea surface temperature measurement" ;
source_of_sst:coverage_content_type = "referenceInformation" ;
float sum_sst(time, lat, lon) ;
sum_sst:_FillValue = 1.e+20f ;
sum_sst:long_name = "Sum of original contributing pixel sst values" ;
sum_sst:units = "K" ;
sum_sst:coverage_content_type = "auxiliaryInformation" ;
float sum_square_sst(time, lat, lon) ;
sum_square_sst:_FillValue = 1.e+20f ;
sum_square_sst:long_name = "Sum of contributing pixel sst value squares" ;
sum_square_sst:units = "K2" ;
sum_square_sst:coverage_content_type = "auxiliaryInformation" ;
byte adjusted_standard_deviation_error(time, lat, lon) ;
adjusted_standard_deviation_error:_FillValue = -128b ;
adjusted_standard_deviation_error:long_name = "standard deviation error based on L2P SSES and adjustment method" ;
adjusted_standard_deviation_error:units = "K" ;
adjusted_standard_deviation_error:coverage_content_type = "qualityInformation" ;
adjusted_standard_deviation_error:comment = "Cumulated errors of SSES and adjustment method" ;
adjusted_standard_deviation_error:scale_factor = 0.01 ;
adjusted_standard_deviation_error:add_offset = 1. ;
byte standard_deviation_to_reference_sst(time, lat, lon) ;
standard_deviation_to_reference_sst:_FillValue = -128b ;
standard_deviation_to_reference_sst:long_name = "standard deviation of the reference error" ;
standard_deviation_to_reference_sst:units = "K" ;
standard_deviation_to_reference_sst:coverage_content_type = "qualityInformation" ;
standard_deviation_to_reference_sst:comment = "This represents the error standard deviation estimate resulting from the bias estimation method" ;
standard_deviation_to_reference_sst:scale_factor = 0.01 ;
standard_deviation_to_reference_sst:add_offset = 1. ;
// global attributes:
:file_quality_level = 3LL ;
:title = "ODYSSEA Global Sea Surface Temperature Gridded Level 3S Daily Multi-Sensor Observations" ;
:id = "ODYSSEA-IFR-L3S-GLO_010-v3" ;
:cmems_product_id = "SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010" ;
:reference = "Product User Manual for L3S Odyssea Product over the Global Ocean, v2.1, Nov 2023, https://catalogue.marine.copernicus.eu/documents/PUM/CMEMS-SST-PUM-010-010.pdf" ;
:summary = "This dataset provide a times series of daily multi-sensor composite fields of Sea Surface Temperature (SST) foundation at high resolution (HR) on a 0.10 x 0.10 degree grid (approximately 10 x 10 km) for the Global ocean, every 24 hours. It is produced for the Copernicus Marine Service." ;
:metadata_link = "https://resources.marine.copernicus.eu/product-detail/SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010/INFORMATION" ;
:date_metadata_modified = "2023-11-01T00:00:00Z" ;
:doi = "https://doi.org/10.48670/moi-00164" ;
:processing_level = "L3S" ;
:publisher_institution = "Ifremer" ;
:publisher_name = "Copernicus Marine Service" ;
:publisher_url = "https://marine.copernicus.eu" ;
:product_version = "1.0" ;
:geospatial_bounds = "POLYGON ((-180.0 -80.0, 180.0 -80.0, 180.0 80.0, -180.0 80.0, -180.0 -80.0))" ;
:geospatial_lat_max = 80. ;
:geospatial_lat_min = -80. ;
:geospatial_lon_max = 180. ;
:geospatial_lon_min = -180. ;
:spatial_resolution = "0.10 degree" ;
:geospatial_lat_resolution = 0.1 ;
:geospatial_lon_resolution = 0.1 ;
:geospatial_bounds_crs = "EPSG:4326" ;
:cdm_data_type = "grid" ;
:time_coverage_start = "2023-12-31T12:00:00Z" ;
:time_coverage_end = "2024-01-01T12:00:00Z" ;
string :platform = "NPP", "NOAA-20", "Metop-B", "Metop-C", "Sentinel-3A", "Sentinel-3B", "GOES-18", "Meteosat-10", "GOES-16", "Meteosat-9", "Himawari-9", "GCOM-W" ;
string :platform_type = "polar_orbiter", "polar_orbiter", "polar_orbiter", "polar_orbiter", "polar_orbiter", "polar_orbiter", "geostationary", "geostationary", "geostationary", "geostationary", "geostationary", "polar_orbiter" ;
string :instrument = "VIIRS", "VIIRS", "AVHRR/3", "AVHRR/3", "SLSTR", "SLSTR", "ABI", "SEVIRI", "ABI", "SEVIRI", "AHI", "AMSR-2" ;
string :instrument_type = "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer", "radiometer" ;
string :band = "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "infrared", "microwave" ;
:uuid = "a5f14cfc-b38f-11ee-88ca-0cc47a3fe28f" ;
:date_created = "2024-01-15T10:20:04Z" ;
:date_modified = "2024-01-15T10:20:04Z" ;
:date_issued = "2024-01-15T10:20:04Z" ;
:netcdf_version_id = "4.9.2 of Sep 1 2023 15:18:59 $" ;
:keywords = "Oceans > Ocean Temperature > Sea Surface Temperature" ;
:acknowledgment = "Please acknowledge the use of these data with the following statement: this dataset is produced by the Centre de Recherche et d\'Exploitation Satellitaire (CERSAT), at Ifremer, Plouzane (France): It is funded and distributed by Copernicus Marine Service" ;
:Conventions = "CF-1.7, ACDD-1.3, ISO 8601" ;
:standard_name_vocabulary = "Climate and Forecast (CF) Standard Name Table v79" ;
:naming_authority = "org.ghrsst" ;
:Metadata_Conventions = "Climate and Forecast (CF) 1.7, Attribute Convention for Data Discovery (ACDD) 1.3" ;
:keywords_vocabulary = "NASA Global Change Master Directory (GCMD) Science Keywords" ;
:format_version = "GHRSST GDS v2.1" ;
:gds_version_id = "2.1" ;
:platform_vocabulary = "CEOS mission table" ;
:instrument_vocabulary = "CEOS instrument table" ;
:institution = "Institut Francais de Recherche pour l\'Exploitation de la mer / Centre d\'Exploitation et de Recherche Satellitaire" ;
:institution_abbreviation = "Ifremer / CERSAT" ;
:project = "Group for High Resolution Sea Surface Temperature (GHRSST), Copernicus Marine Service (CMEMS)" ;
:program = "Copernicus" ;
:license = "These data are available free of charge under the CMEMS data policy, refer to http://marine.copernicus.eu/services-portfolio/service-commitments-and-licence/" ;
:creator_name = "CERSAT" ;
:creator_url = "http://cersat.ifremer.fr" ;
:creator_email = "cersat@ifremer.fr" ;
:creator_type = "institution" ;
:creator_institution = "Ifremer" ;
:contributor_name = "Jean-Francois Piolle, Emmanuelle Autret" ;
:contributor_role = "principal investigator" ;
:contact = "emmanuelle.autret@ifremer.fr;jfpiolle@ifremer.fr" ;
:technical_support_contact = "cersat@ifremer.fr" ;
:scientific_support_contact = "emmanuelle.autret@ifremer.fr;jfpiolle@ifremer.fr" ;
:processing_software = "Telemachus 3.1.2" ;
:source = "ODYSSEA" ;
:source_version = "3.0.2" ;
:history = "file originally produced by Ifremer/CERSAT with ODYSSEA system 3.0.2" ;
:geospatial_bounds_vertical_crs = "EPSG:5831" ;
:geospatial_lat_units = "degrees_north" ;
:geospatial_lon_units = "degrees_east" ;
:geospatial_vertical_min = 0. ;
:geospatial_vertical_max = 0. ;
:temporal_resolution = "daily" ;
:time_coverage_resolution = "P1D" ;
:time_coverage_duration = "P1D" ;
:publisher_email = "cersat@ifremer.fr" ;
:publisher_type = "institution" ;
}
8.4. Best Practices#
8.4.1. Remapping Level 2 Data to a Fixed Grid#
The remapping procedure consists in remapping the original L2P in swath projection onto a fixed grid. This remapping should preserve the traceability of the SST at pixel level and keep the best quality data.
If the original and final grid resolutions are similar, the nearest pixel remapping should be adopted. To do so, either a “source to target” or a “target to source” approach may be used. The latter, target to source, which consists in scanning the target grid points to find the nearest pixel in the source, is recommended since it avoids creating holes in the remapped field.
If the original grid resolution is finer than the output grid, as
illustrated in Fig. 8.1, an averaging procedure can be adopted.
For these cases the best practice is to average the values of all pixels which
overlap the product cell entirely and which have a L2P confidence record quality_level value equal
to the highest encountered within the cell, to produce a single value.
Fig. 8.1 To illustrate the approach when the L3 product output grid is over-sampled by the L2P input data. All pixels labeled p in the input data are possible contributors to the value for new cell A.#
The following practices are recommended by the GDS:
In the case of a smaller L2P input pixel than the grid cell size, L3 data product cell values are derived from an average of the L2P pixel which completely overlap the product cell and which have a L2P quality record
quality_levelvalue equal to the highest encountered within the cell, to produce a single value.For input pixels that straddle the boundary between output grid cells, a
weighting function may be applied to the input values according to the degree of coverage of the output grid cell and according to the SSES.Only the best quality original data within a grid cell should be averaged to produce the resulting SST value, to preserve the homogeneity of the SST quality (recommendation 1 above). In the case of averaging, the number of contributors can be recorded as well as the sum of the SST values and the sum of the square values of the SST. The SSES and ancillary data (if needed, for instance if there may be more that one SSES couple of values (bias and standard deviation) by quality level) must be averaged accordingly: the
sses_biasvalues are averaged similarly as the SST values, the newsses_standard_deviationvalue is the square root of the averaged squared values of the contributingsses_standard_deviations. The averaging should account for the nature of the originall2P_flags.In the case of a larger pixel than the L3 grid cell size, 2 approaches can be adopted:
The value of the L2P pixel is allocated to the grid cell the closest to the pixel centre.
The output grid cell takes the value of the L2P pixel in which its centre lies. In this case the original latitudes and longitudes of the pixel must be recorded, to be able to detect where the original L2P pixel value has been duplicated.
If the original grid resolution is larger than the output grid (e.g., microwave instruments), as illustrated in Fig. 8.2, the following practices are recommended by the GDS:
Fig. 8.2 To illustrate the approach when the L3 output grid is under-sampled by the L2P data. Either Grid cell C is assigned the value of pixel p, Or grid cell A is assigned the value of pixel p and grid cell B is assigned the weighted average of p and q provided they both have quality flags with the same rating.#
8.4.2. Collating Data from the Same Sensor and Platform#
The collating procedure consists of gathering over a unique grid several orbits or slots (in the case of a geostationary satellite) of the same sensor on the same platform. This process is often known as “binning” the data. The collating procedure merges data with different times of observation.
For situations in which the collation is to be done for data collected within the same day, two cases are met in practice: collation of consecutive orbits in the case of data collected from polar orbiting sensors, or the merging of consecutive slots in the case of geostationary satellites. In both cases there may be multiple candidates for a grid cell.
To collate observations from overlapping orbits of the polar orbiting sensors, the selection procedure should prioritize data first by using the highest available quality data. If multiple observations share the same highest quality, one of two approaches should be taken: either the observation with the minimum satellite zenith angle should be selected, or the observations should be averaged. If the minimum satellite zenith angle approach is taken, the corresponding
sses_biasandsses_standard_deviationshould be selected as well. If the averaging approach is followed, thesses_biasandsses_standard_deviationshould be averaged similarly (note that the newsses_standard_deviationvalue is the square root of the averaged squared values of the contributing sses_standard_deviation values). Also in the case of averaging, it is good practice to record the number of observations being averaged, the sum of the SST values, and the sum of the squared SST values. These values can be stored in theor_number_pixels,sum_sst, andsum_square_sstvariables listed in Sections and 8 and 9.In the case of geostationary data, the selection procedure must prioritize data showing the best quality level, and if equal, data closest to the representative time (central time) of the L3 time window. In the case of geostationary satellites, remapping is not a preliminary step to the collating procedure.
If averaging over multiple days, only the best quality original data within a grid cell should be averaged to produce the resulting SST value, to preserve the homogeneity of the SST quality. The number of contributors can be recorded (
or_number_pixels) as well as the sum of the SST values (sum_sst) and the sum of the square values of the SST (sum_square_sst). The SSES values should be averaged accordingly: thesses_biasvalues are averaged in the same manner as the SST values and the newsses_standard_deviationvalue is the square root of the averaged squared values of the contributingsses_standard_deviationvalues. The averaging should preserve the nature of the originall2P_flags.
8.4.3. SST Adjustments#
Most of individual sensors show regional biases resulting in limitations of the
applied algorithms. The objective of the adjustment procedure is to provide a
correction to these regional biases by comparison with a “reference sensor”,
supposedly free from such biases. A variety of sources can be adopted as
references in the adjustment procedure, ranging from AATSR or in situ
measurement to using a median of sensors approach. The adopted reference must be
recorded in the adjusted_sea_surface_temperature variable “reference”
attribute.
The adjustment procedure includes the following steps:
application of the SSES,
determination of the bias adjustment to the reference,
evaluation of the error of the adjustment procedure
Note
A skin to subskin conversion may be needed. In that case, please refer to
the STVAL recommendations. The type of the SST variables must be recorded in the
standard_names of the sea_surface_temperature and
adjusted_sea_surface_temperature variables. The bias adjustment value at
pixel and the error of the adjustment procedure must be recorded in the
corresponding variables (mandatory).
8.4.4. Super-Collating Data from Multiple Sensors and Platforms#
The building of a super-collated file is done by merging adjusted collated
L3 files from various sensors over the same grid and over the same time window.
There is one input candidate file (and hence one candidate observation) per
sensor. There may be multiple candidates for a given grid cell originating from
different sensors. To make the selection from among the candidates, a “decision
tree” or selection hierarchy should be established beforehand. This hierarchy
depends on the objective of the super-collation procedure, and may be quite
different for a moderate resolution (10km) super-collated over 24h aiming to
feed a foundation SST analysis and for a high resolution (2km) hourly subskin
SST super-collated aiming to feed a diurnal warming analysis, for example.
Because the hierarchy must be established based on the intended use of the
super-collated dataset that results, it is out of the scope of this document to
define any single hierarchy. However, the adopted hierarchy must be described in
the comment attribute of the adjusted_sea_surface_temperature variable.
In addition, it is mandatory to provide the source of the SST (source_of_sst)
at the grid cell level.