7. Level 2 Pre-processed (L2P) Product Specification#

7.1. Overview description of the GHRSST L2P data product#

The GHRSST Level-2 Pre-processed (L2P) products are the basic building blocks from which all other GHRSST SST data products can be derived. L2P data products should ideally be made available within the GHRSST R/GTS framework to the user community in real time within 3 hours after the reception of data at the satellite.

L2P products include SST data as delivered by a data provider in their native format (swath for polar orbiting satellite), together with a number of ancillary fields that simplify interpretation and application of the SST data. The main difference between input L2 SST data file and the output GHRSST L2P data file is that additional confidence data and sensor specific error estimates for each pixel value are included and the original SST data files are reformatted into the L2P specification. No adjustments to the input L2 SST measurements are allowed but instead, sensor specific error statistics are used to provide bias error and standard deviation estimates. A user wishing to correct L2P SST data can apply these estimates to the SST values directly. Full orbit input data files may be split into ascending and descending files or smaller granules and a unique L2P output may be generated for each file. The common format of L2P products allows data users to code with the security so that as new satellite derived SST data sets are brought on-line, very minimal code changes are required to make full use of new L2P data. Time previously spent on coding different i/o routines for each satellite data set can now be spent applying the data to various applications and societal benefits instead.

The GHRSST Science Team agreed at the 6th GHRSST Science Team Meeting, Met Office, Exeter, United Kingdom, May 14th – 20th 2005, 6 mandatory fields form the core data content of a GHRSST L2P data file. These fields will be known as L2P ‘core’ (L2Pcore) fields. In addition to global attributes and geo-location and time information, GHRSST producers must provide the following L2Pcore fields within an L2P file:

  • Sea Surface Temperature data (sea_surface_temperature)

  • Time differences of SST measurements from a reference time (sst_dtime)

  • SST Sensor Specific Error Statistic (SSES) measurement bias estimate (sses_bias)

  • SSES measurement standard deviation estimate (sses_standard_deviation)

  • Flags specific to each L2P data set that help users interpret data (l2p_flags)

  • A quality level for each measurement (quality_level)

In addition there are a number of auxiliary fields (L2Paux) that must be provided before the L2P data product is admitted into the GHRSST R/GTS:

  • the difference between satellite SST measurements and a defined reference climatology of SST (dt_analysis)

  • An estimate of surface wind speed (wind_speed)

  • An estimate of sea ice fraction (sea_ice_fraction)

  • An estimate of atmospheric aerosol (as an aerosol dynamic indicator, aerosol_dyanamic_indicator)

When an L2P file contains all L2Pcore and L2Paux fields together, it will be called a full-L2P file. Only full L2P data files should be registered into the GHRSST R/G TS central catalogue. These distinctions will assist in the data management of the GHRSST GDS-2.2r0.

Missing L2Paux fields not provided by a producer may be added by a GHRSST distributor (DAC), if different from the producer, with prior arrangement. In this case data required the L2Paux files will be procured, checked for quality and interpolated or processed according to the GDS-2.2r0 specification by the DAC.

Optional experimental fields may be used by producers to provide additional information at their discretion. It may be necessary to use an additional netCDF coordinate variable when including experimental fields.

GDS-2.2r0 L2P data products are configured as shown in the table Table 7.1, which can be used to locate appropriate information in this document.

Table 7.1 Summary description of the contents of a GHRSST L2P data product#

netCDF File Contents

Description

Coordinate variables

Information to allow locating data on non-orthogonal grids, as defined in Section 6

Data record variables

Core and auxiliary variables as defined in Section 7.2

Global Attributes

A collection of required global attributes describing general characteristics of the file, as defined in section Section 5.2

7.2. L2P data record format specification#

The Table 7.2 provides an overview of the GHRSST L2P product pixel data record that should be created for each input L2 SST measurement contained within a L2P file. In the following sections, each variable within the L2P data file is described in detail.

Table 7.2 Summary description of GHRSST L2P data records#

Variable Name

Description

Units

Storage type

sea_surface_temperature

SST measurement values from input L2 satellite data set.

K (kelvin)

short

sst_dtime

The deviation in time of SST measurement from reference time

s (second)

short

sses_bias

Sensor Specific Error Statistic (SSES) bias error

K (kelvin)

byte

sses_standard_deviation

Sensor Specific Error Statistic (SSES) standard deviation uncertainty

K (kelvin)

byte

dt_analysis

The difference between input SST and a GHRSST L4 SST analysis from the previous 24 hour period

K (kelvin)

byte or short

wind_speed

Closest (in time) 10 m surface wind speed from satellite or analysis

m s-1

byte

wind_speed_dtime_from_sst

Time difference of wind_speed data from input L2 SST measurement specified in hours.

h (hour)

byte

source_of_wind_speed

Source(s) of wind_speed data. Mandatory when multiple sources used.

Code

byte

sea_ice_fraction

Closest (in time) sea ice fraction from satellite or analysis

1

byte

sea_ice_fraction_dtime_from_sst

Time difference of sea_ice_fraction data from input L2 SST measurement specified in hours

h (hour)

byte

source_of_sea_ice_fraction

Source(s) of sea_ice_fraction data

code

byte

aerosol_dynamic_indicator

Atmospheric aerosol indicator

byte

adi_dtime_from_sst

Time difference between the aerosol_dynamic_indicator value and SST measurement

h (hour)

byte

source_of_adi

Source(s) of aerosol_dynamic_indicator data

code

byte

l2p_flags

Data flag values

mask of bits

short

quality_level

Overall indication of L2P data quality

enum

byte

satellite_zenith_angle

Calculated satellite zenith angle (measured at the Earth’s surface between the satellite and the zenith)

angular_degree

byte or short

solar_zenith_angle

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

surface_solar_irradiance

Near contemporaneous surface solar irradiance

W m-2

byte

ssi_dtime_from_sst

Time difference between the surface_solar_irradiance value and SST measurement in hours

h (hour)

byte

source_of_ssi

Source(s) of surface_solar_irradiance data

code

byte

other fields

Optional/experimental fields defined by data provider

7.2.1. sea_surface_temperature#

The variable sea_surface_temperature contains the native unmodified L2 SST of the input data file. L2 SST data are not adjusted in any manner and are identical to the input data set.

The sea_surface_temperature variable shall be included in a L2P product with the format requirements shown in table Table 7.3.

Table 7.3 CDL example description of sea_surface_temperature variable#

Storage type

Name

Description

Unit

short

sea_surface_temperature

Pixel sea surface temperature value

K (kelvin)

short sea_surface_temperature(time, nj, ni) ;
	sea_surface_temperature:_FillValue = -32768s ;
	sea_surface_temperature:long_name = "sea surface subskin temperature" ;
	sea_surface_temperature:standard_name = "sea_surface_subskin_temperature" ;
	sea_surface_temperature:units = "K" ;
	sea_surface_temperature:depth = "1 millimeter" ;
	sea_surface_temperature:source = "AVHRR_METOP_C" ;
	sea_surface_temperature:comment = "Temperature of the subskin of the ocean" ;
	sea_surface_temperature:coverage_content_type = "physicalMeasurement" ;
	sea_surface_temperature:coordinates = "lat lon" ;
	sea_surface_temperature:add_offset = 273.15 ;
	sea_surface_temperature:scale_factor = 0.01 ;

The standard_name attribute should be CF-1.7 or later compliant[1] as described in table Table 7.4:

Table 7.4 GHRSST short SST names and CF-1.7 standard names for sea_surface_temperature#

GHRSST name

CF-1.7 standard name definitions

SSTint

sea_surface_temperature

SSTskin

sea_surface_skin_temperature

SSTsubskin

sea_surface_subskin_temperature

SSTfnd

sea_surface_foundation_temperature

SSTdepth

sea_water_temperature

Note

for SSTdepth, the attribute depth should be used to indicate the depth for which the SST data are valid e.g.:

sea_surface_temperature:standard_name="sea_water_temperature";   
sea_surface_temperature:units = "K" ;   
sea_surface_temperature:depth = "1 metre" ;

7.2.2. sst_dtime#

The deviation in time of SST measurement from reference time stored in the netCDF coordinate variable time (defined as the start time of granule for L2P). Minimum resolution should be one second.

The sst_dtime variable shall be included in a L2P product with the format requirements shown in table Table 7.5.

Table 7.5 CDL example description of sst_dtime variable#

Storage type

Name

Description

Unit

short

sst_dtime

Deviation from reference time stored in the coordinate variable, time

s (seconds)

short sst_dtime(time, nj, ni) ;
	sst_dtime:_FillValue = -32768s ;
	sst_dtime:long_name = "time difference from reference time" ;
	sst_dtime:units = "s" ;
	sst_dtime:scale_factor = 1. ;
	sst_dtime:add_offset = 0. ;
	sst_dtime:coverage_content_type = "coordinate" ;
	sst_dtime:comment = "time plus sst_dtime gives seconds after 00:00:00 UTC January 1, 1981" ;
	sst_dtime:coordinates = "lat lon" ;

7.2.3. sses_bias#

Providing uncertainty estimates for each SST measurement is one of the key user requirements for GHRSST L2P SST data products. Uncertainty estimates allow users to select the accuracy level suitable for their application and to make optimum use of the SST observations (e.g. in data assimilation).

The uncertainties associated with each observation in a data stream are provided as Sensor Specific Error Statistic (SSES). The SSES are based on understanding the errors associated with the in-flight performance of an individual satellite instrument for the retrieval of SST from the measured radiances. The SSES are provided as a mean bias error and its associated standard deviation (in variable sses_standard_deviation, see Section 7.2.4).

There are a variety of methods for determining SSES as they depend on the specific characteristics of each satellite instrument. Consequently, the L2P provider can define their own scheme for producing SSES that is tailored to their specific dataset. However, the SSES scheme must conform to a set of agreed SSES common principles.

The SSES common principles are maintained on the GHRSST website, and have been approved by the GHRSST Science Team. The L2P provider must provide documentation that summarizes the theoretical basis of their SSES scheme, its implementation, any recommendations for users, and its conformance to the agreed SSES common principles.

The variable sses_bias is used to store SSES bias estimates and shall be included with the L2P format requirements shown in Table 7.6. Data producers are reminded to choose appropriate scale_factor and add_offset attributes for their data, and to strive for scale_factor as close to 0.01 as possible without “oversaturating” the values.

Table 7.6 CDL example description of sses_bias variable#

Storage type

Name

Description

Unit

byte

sses_bias

SSES bias estimate

K (kelvin)

byte sses_bias(time, nj, ni) ;
	sses_bias:_FillValue = -128b ;
	sses_bias:long_name = "SSES bias estimate" ;
	sses_bias:units = "K" ;
	sses_bias:comment = "Bias estimate derived using the techniques described at http://www.ghrsst.org/SSES-Description-of-schemes.html" ;
	sses_bias:coverage_content_type = "qualityInformation" ;
	sses_bias:coordinates = "lat lon" ;
	sses_bias:add_offset = 0. ;
	sses_bias:scale_factor = 0.01 ;

7.2.4. sses_standard_deviation#

Sensor Specific Error Statistic (SSES) standard deviation estimates are generated by the L2P data provider and are specific to a particular satellite instrument, and must conform to the SSES common principles. See Section 7.2.3 for the general description of SSES concept and associated variables.

The variable sses_standard_deviation shall be included with the format requirements shown in Table 7.7.

Data producers are reminded to choose appropriate scale_factors and add_offsets for their data, and to strive for scale_factors as close to 0.01 as possible without “oversaturating” the values.

Table 7.7 CDL example description of sses_standard_deviation variable#

Storage type

Name

Description

Unit

byte

sses_standard_deviation

SSES standard deviation.

K (kelvin)

byte sses_standard_deviation(time, nj, ni) ;
	sses_standard_deviation:_FillValue = -128b ;
	sses_standard_deviation:long_name = "SSES standard deviation" ;
	sses_standard_deviation:units = "K" ;
	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:coverage_content_type = "qualityInformation" ;
	sses_standard_deviation:coordinates = "lat lon" ;
	sses_standard_deviation:add_offset = 1. ;
	sses_standard_deviation:scale_factor = 0.01 ;

7.2.5. dt_analysis#

The difference between input SST and a GHRSST L4 SST analysis from the previous 24 hour period. If storage as byte does not allow the provider to offer the full precision required for this field, storage as a short is optionally permitted though byte is preferred.

The L2P variable dt_analysis is the temperature difference between an input L2 SST measurement and a reference SST L4 analysis data set. dt_analysis may be used to indicate potential areas of diurnal variability or gross outliers in the L2 input SST measurement data set by looking for large deviations from the previous analysis SST data. Note that dt_analysis is an indicator field and the temperature anomalies may be difficult to interpret in regions of high SST gradients. Furthermore, interpretation requires a good understanding of the strengths and weaknesses (e.g. space and time de-correlations) of the chosen reference L4 analysis system.

dt_analysis shall be derived using:

(7.1)#\[dt\_analysis = SST_{input} – L4_{SST}\]

Where SSTinput is the input satellite L2 measurement and L4 SST is a previous day analysis from a GHRSST L4 System selected by the data provider. The GHRSST L4 analysis chosen for a given L2P data set variable should be consistent for all L2P products as far as practically possible. If a previous analysis SSTfnd data file is not available for use in (7.1), then a mean reference SST or climatology should be used in its place as defined in Table 7.8.

Table 7.8 Reference SST data sets for use in dt_analysis computation#

Name

Description

Reference

Use code from L4 analysis

The mean SSTfnd computed for a n-1 day period. This product is computed from data provider SSTfnd data products in real time each day

https://www.ghrsst.org/ghrsst-data-services/ghrsst-catalogue/

GMPE_GLOBAL

Daily, 25 km median average SST and sea ice product created using 10 operational SST analysis products from operational centres around the world

https://ghrsst-pp.metoffice.gov.uk/ostia-website/gmpe-monitoring.html

The dt_analysis value shall be inserted into the dt_analysis field of the L2P product for the pixel in question as described Table 7.9.

Table 7.9 CDL example description of dt_analysis variable#

Storage type

Name

Description

Unit

byte or short

dt_analysis

Deviation from previous day (T-1) L4 SSTfnd analysis as defined in the Table 7.8. If no analysis is available, the reference mean SST climatology should be used

K (kelvin)

byte dt_analysis(time, nj, ni) ;
	dt_analysis:_FillValue = -128b ;
	dt_analysis:long_name = "deviation from SST analysis or reference climatology" ;
	dt_analysis:units = "K" ;
	dt_analysis:reference = "OSTIA" ;
	dt_analysis:comment = "The difference between this SST and the previous day\'s SST analysis" ;
	dt_analysis:coverage_content_type = "auxiliaryInformation" ;
	dt_analysis:coordinates = "lat lon" ;
	dt_analysis:add_offset = 0. ;
	dt_analysis:scale_factor = 0.1 ;

Note

The reference variable attribute should be used to specify the analysis or climatology used to compute dt_analysis as shown in the example above following the guidelines in Table 7.8.

7.2.6. wind_speed#

The L2P variable wind_speed contains a best estimate of the 10m surface wind speed, ideally at the time of SST data acquisition (although this is rarely possible). Wind speed measurements are required within the GDS as an indicator of the turbulent state of the air sea interface to interpret the relationship between satellite and subsurface SST data and assess the severity of any skin SST temperature deviation, thermal stratification and for use in diurnal variability adjustment schemes. At low wind speeds, especially in clear sky conditions, stronger diurnal variability is expected leading to higher surface layer temperature gradients and the potential for significant de-coupling of the skin/sub-skin SST from the SST at depth.

Ideally a near contemporaneous wind speed measurement from satellite sensors should be used but this is impossible for all sensors due to the limited number of satellite wind speed sensors available. As a surrogate for a measured wind speed value, analysis product estimates (e.g., from numerical weather prediction models) may be used as an indication of the surface wind speed. The GDS specifies the following rules:

Simultaneous microwave 10m wind speed measurements obtained from the same instrument providing the SST measurement shall be used when available to set the L2P confidence data variable wind_speed. In the absence of a simultaneous surface wind speed measurement, an analysis product estimated 10m surface wind speed shall be used to set the L2P variable wind_speed.

The difference in time expressed in hours between the time of SST measurement and the time of wind speed data should be entered into the L2P confidence data variable wind_speed_dtime_from_sst as described in Section 7.2.7. In the case of an analysis field, this should be the central (mean) time of an integrated value. If all of the wind speeds have a single time value, as in the case of an analysis or model that gives the wind speeds at an instant in time, then the wind_speed_dtime_from_sst variable is not needed and instead a variable level attribute named time_offset is used. The attribute time_offset should store the difference in hours between the wind_speed and the reference time, stored in the variable time.

If a single source of data is used in the L2P variable wind_speed (recommended), the L2P variable source_of_wind_speed is not required and a source variable attribute of wind_speed is sufficient. In that case, it shall be a single source text string defined by the data provider using the text string naming best practice given in Section 4.9.

If multiple sources of data are used, source information should be indicated in the L2P variable source_of_wind_speed as defined by the data provider and as described in detail in Section 7.2.8, and the source variable attribute of wind_speed shall have the value source_of_wind_speed. In addition, the units of all sources used in the file shall be identical.

The GDS L2P variable wind_speed shall be included in L2P products with the format requirements shown in the Table 7.10.

Table 7.10 CDL example description of wind_speed variable#

Storage type

Name

Description

Unit

byte

wind_speed

Surface wind speed at 10m height. Resolution should be no less than 1 m s-1

m s-1

byte wind_speed(time, nj, ni) ;
	wind_speed:_FillValue = -128b ;
	wind_speed:long_name = "10m wind speed" ;
	wind_speed:standard_name = "wind_speed" ;
	wind_speed:units = "m s-1" ;
	wind_speed:height = "10 m" ;
	wind_speed:time_offset = 0. ;
	wind_speed:source = "WSP-ECMWF-Forecast" ;
	wind_speed:comment = "These wind speeds were created by the ECMWF and represent winds at 10 metres above the sea surface. " ;
	wind_speed:coordinates = "lat lon" ;
	wind_speed:add_offset = 0. ;
	wind_speed:scale_factor = 1. ;

A single source of wind data is shown in this example which is reported as wind_speed:source = "ECMWF_Anaylsis_V2" the code has been defined by the data provider using the ancillary data naming rules given in Section 4.9. Since all of the wind speeds have the same time, the attribute time_offset is used instead of the variable wind_speed_dtime_from_sst.

7.2.7. wind_speed_dtime_from_sst#

The variable wind_speed_dtime_from_sst reports the time difference between wind speed data and SST measurement in hours. The variable wind_speed_dtime_from_sst shall be included with the format requirements shown in Table 7.11. In the case of an analysis field, the central (mean) time of an integrated value should be used. If all values are the same, this variable is not required. Instead, use the variable level attribute named time_offset with the variable wind_speed.

Table 7.11 CDL example description of wind_speed_dtime_from_sst variable#

Storage type

Name

Description

Unit

byte

wind_speed_dtime_from_sst

This variable reports the time difference of wind speed measurement from SST measurement in hours.

h (hour)

byte wind_speed_dtime_from_sst(time, nj, ni) ;
	wind_speed_dtime_from_sst:_FillValue = -128b ;
	wind_speed_dtime_from_sst:long_name = "time difference, in hours\', of wind speed measurement from sst measurement" ;
	wind_speed_dtime_from_sst:units = "h" ;
	wind_speed_dtime_from_sst:scale_factor = 0.1 ;
	wind_speed_dtime_from_sst:add_offset = 0. ;
	wind_speed_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
	wind_speed_dtime_from_sst:comment = "the hours between the wind speed measurement and the SST observation" ;
	wind_speed_dtime_from_sst:coordinates = "lat lon" ;

7.2.8. source_of_wind_speed#

The source of data used to set the L2P ancillary data variable wind_speed shall be indicated in the L2P variable source_of_wind_speed when more than one source of wind speed data is used in the L2P product.

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 wind_speed variable. If the values in that single source all have the same time, then a variable attribute time_offset set as the difference time in hours is considered sufficient and the variable wind_speed_dtime_from_sst is not required.

For multiple sources, the GDS-2.2r0 requires the following:

  • The variable in question should contain an attribute called flag_meanings and another one called flag_values. The flag_values attribute 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 the flag_meanings attribute.

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

  • instead of using a _FillValue attribute and value for missing data, it is recommended to set missing pixel values to 0 and add the corresponding no_data meaning in flag_meanings attribute.

The variable source_of_wind_speed shall conform to the format requirements shown in the Table 7.12.

Table 7.12 CDL example description of source_of_wind_speed variable#

Storage type

Name

Description

Unit

byte

source_of_wind_speed

Sources of wind_speed values.

code

byte source_of_wind_speed(time, nj, ni) ;
	source_of_wind_speed:long_name = "sources of wind speed" ;
	source_of_wind_speed:flag_meanings = "no_data WSP-ESA-ASCAT-V2 WSP-NCEP-Analysis-V3 WSP-ECMWF-Forecast-V6" ;
	source_of_wind_speed:flag_values = 0b, 1b, 2b, 3b ;
	source_of_wind_speed:coverage_content_type = "auxiliaryInformation" ;
	source_of_wind_speed:comment = "This variable provides a pixel by pixel description of where the wind speeds were derived from." ;
	source_of_wind_speed:coordinates = "lat lon" ;

In this example, flag_meanings and flag_values contain strings and numeric codes provided by the data provider according to the best practices specified in Table 7.12.

7.2.9. sea_ice_fraction#

Some SST data are contaminated in part or wholly by sea ice and the L2P variable sea_ice_fraction is used to quantify the fraction of an area contaminated with sea ice, ranging from 0 to 1. Some input SST data streams provide a flag to indicate that the SST measurement is contaminated by sea ice (e.g., passive microwave radiometers such as AMSR-E).

If an input data set pixel fractional sea ice estimate exists, this should be used to in the L2P variable sea_ice_fraction as described in the table Table 7.13.

Best practice suggests that one should approach the issue in the following way. If an input data set pixel sea ice flag does not exist, and the pixel is located in or close to a region that may be ice contaminated, a reference sea ice data set should be used to determine the value of the L2P variable sea_ice_fraction.

If an input data set pixel sea ice flag exists (i.e. indicating sea ice but not the fractional amount of coverage), this should be used to set the L2P variable sea_ice_fraction to 1.

If the SST input data set includes a sea ice flag in the data stream, bit 3 of the L2P confidence data variable l2p_flags should be set for this pixel as described in Section 7.2.15.

The difference in time expressed in hours between the time of SST measurement and the time of sea ice fraction measurement should be entered into the L2P variable sea_ice_fraction_dtime_from_sst as described in in Section 7.2.10. In the case of an analysis field, this should be the central (mean) time of an integrated value. If all ice observations have a single time value, as in the case of an analysis or model that gives the sea ice values at an instant in time, then the sea_ice_fraction_dtime_from_sst variable is not needed and instead a variable attribute named time_offset is used. The attribute time_offset should store the difference in hours between the sea_ice_fraction and the reference time, stored in the variable time.

If a single source of data is used in the L2P variable sea_ice_fraction, the L2P variable source_of_sea_ice_fraction is not required and instead the source variable attribute value of sea_ice_fraction is sufficient. It shall be a single source text string defined by the data provider using the text string naming best practice given in Section 4.9.

If multiple sources of data are used, source information should be indicated in the L2P variable source_of_sea_ice_fraction as defined by the data provider and as described in detail in Section 7.2.11, and the source variable attribute of sea_ice_fraction shall have the value source_of_sea_ice_fraction. In addition, the units of all sources used in the file shall be identical.

The variable attribute sea_ice_treatment shall specify how the sea ice information has been treated by the data provider. Valid options are: “Use unmodified (one source)”, “use unmodified (multiple ice sources)”, or “modified using onboard sensors”.

The variable sea_ice_fraction will be included with the format requirements shown in Table 7.13.

Table 7.13 CDL example description of sea_ice_fraction variable#

Storage type

Name

Description

Unit

byte

sea_ice_fraction

fractional of sea ice contamination in a given pixel. Ranges from 0 to 1.

1 (unitless)

byte sea_ice_fraction(time, nj, ni) ;
	sea_ice_fraction:_FillValue = -128b ;
	sea_ice_fraction:long_name = "sea ice fraction" ;
	sea_ice_fraction:standard_name = "sea_ice_area_fraction" ;
	sea_ice_fraction:units = "1" ;
	sea_ice_fraction:time_offset = 3. ;
	sea_ice_fraction:source = "ICE-OSISAF" ;
	sea_ice_fraction:comment = "Fractional sea ice cover from OSISAF ice product" ;
	sea_ice_fraction:coverage_content_type = "auxiliaryInformation" ;
	sea_ice_fraction:coordinates = "lat lon" ;
	sea_ice_fraction:add_offset = 0. ;
	sea_ice_fraction:scale_factor = 0.01 ;

A single source of sea ice fraction data is shown in this example which is reported as sea_ice_fraction:source = "REMSS_AMSRE_V5" following the ancillary data naming conventions specified in Section 4.9. Since all of ice values have the same time, the attribute time_offset is used instead of the variable sea_ice_fraction_dtime_from_sst.

7.2.10. sea_ice_fraction_dtime_from_sst#

The variable sea_ice_fraction_dtime_from_sst reports the time difference between sea ice fraction data from SST measurement in hours. This variable is mandatory when multiple sources of sea_ice_fraction are used.

If only one source is used, simply set a variable attribute time_offset in sea_ice_fraction variable, as the difference time in hours.

The variable sea_ice_fraction_dtime_from_sst shall be included with the format requirements shown Table 7.14.

In the case of an analysis field, this should be the central (mean) time of an integrated value. If all of the values are the same, this variable is not required. Instead, use the variable level attribute named time_offset with the variable sea_ice_fraction. The attribute time_offset should store the difference in hours between the sea ice analysis time and the reference time, stored in the variable time.

Table 7.14 CDL example description of sea_ice_fraction_dtime_from_sst variable#

Storage type

Name

Description

Unit

byte

wind_speed_dtime_from_sst

This variable reports the time difference between sea ice fraction data from SST measurement in hours.

hour

byte sea_ice_fraction_dtime_from_sst(time, nj, ni) ;
	sea_ice_fraction_dtime_from_sst:_FillValue = -128b ;
	sea_ice_fraction_dtime_from_sst:long_name = "time difference, in hours, of sea ice fraction measurement from sst measurement" ;
	sea_ice_fraction_dtime_from_sst:units = "h" ;
	sea_ice_fraction_dtime_from_sst:scale_factor = 0.1 ;
	sea_ice_fraction_dtime_from_sst:add_offset = 0. ;
	sea_ice_fraction_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
	sea_ice_fraction_dtime_from_sst:comment = "the hours between the sea ice fraction measurement and the SST observation" ;
	sea_ice_fraction_dtime_from_sst:coordinates = "lat lon" ;

This variable is mandatory when multiple sources for sea_ice_fraction are used. If only one source is used, instead simply set a variable attribute sea_ice_fraction:sea_ice_fraction_dtime_from_sst = \<difference time in hours\>.

7.2.11. source_of_sea_ice_fraction#

The source of data used to set the L2P ancillary data variable sea_ice_fraction shall be indicated in the L2P variable source_of_sea_ice_fraction when more than one source of sea ice fraction data is used in the L2P product.

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_ice_fraction variable.

For multiple sources, the GDS-2.2r0 requires the following:

  • The variable in question should contain an attribute called flag_meanings and another one called flag_values. The flag_values attribute 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 the flag_meanings attribute.

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

  • Instead of using a _FillValue attribute and value for missing data, it is recommended to set missing pixel values to 0 and add the corresponding no_data meaning in flag_meanings attribute.

The variable source_of_sea_ice_fraction shall conform to the format requirements shown in Table 7.15.

Table 7.15 CDL example description of source_of_sea_ice_fraction variable#

Storage type

Name

Description

Unit

byte

source_of_sea_ice_fraction

Source(s) of sea ice values

None

byte source_of_sea_ice_fraction(time, nj, ni) ;
	source_of_sea_ice_fraction:long_name = "sources of sea ice fraction" ;
	source_of_sea_ice_fraction:flag_meanings = "no_data CE-NSIDC-AMSRE-V3 ICE-ECMWF-Forecast-V3" ;
	source_of_sea_ice_fraction:flag_values = 0b, 1b, 2b ;
	source_of_sea_ice_fraction:coverage_content_type = "auxiliaryInformation" ;
	source_of_sea_ice_fraction:comment = "This variable provides a pixel by pixel description of where the sea ice fraction were derived from." ;
	source_of_sea_ice_fraction:coordinates = "lat lon" ;

In this example, flag_meanings and flag_values contain strings and numeric codes provided by the data provider according to the best practices specified in Section 4.9.

7.2.12. aerosol_dynamic_indicator#

Mandatory (only for infrared instruments).

The L2P variable aerosol_dynamic_indicator contains an indicator of potential atmospheric aerosol contamination of infrared satellite SST data. Infrared-absorbing atmospheric aerosols are a major source of error in satellite-derived sea surface temperature retrievals. Atmospheric aerosol, such as Saharan dust outbreaks, volcanic eruptions or from coastal mega cities causes errors in the atmospheric correction of top of the atmosphere radiances when retrieving SST from infrared and visible band data sets. A systematic bias in the tropical North Atlantic Ocean and Arabian Sea due to desert dust outflows in those regions is apparent.

An aerosol indicator (e.g., derived from satellite measurements or models) value is assigned to the L2P variable aerosol_dynamic_indicator for each corresponding infrared retrieved SST measurement pixel using data chosen by the data provider to indicate aerosol contamination. The aerosol indicator data nearest in space and time to the input pixel SST value should be used. In the case of microwave SST measurements there is no requirement to include the aerosol_dynamic_indicator L2P variable as microwave SST retrievals are not affected by atmospheric aerosols. However, microwave SST data providers may include aerosol_dynamic_indicator in an L2P product.

If a single source of data is used in the L2P variable aerosol_dynamic_indicator, the L2P variable source_of_adi is not required and instead the source variable attribute value in aerosol_dynamic_indicator is sufficient. It shall be a single source text string defined by the data provider using the text string naming best practice given in Section 4.9. If all the times have the same value, then using a variable attribute time_offset with variable aerosol_dynamic_indicator is sufficient and the variable adi_dtime_from_sst is not required.

If multiple sources of ADI information are used then, the source variable attribute of aerosol_dynamic_indicator variable shall have the value source_of_adi. In addition, the units of all sources used in the file shall be identical.

The difference in time expressed in hours between the time of SST measurement and the time of aerosol indicator data should be entered into the L2P variable adi_dtime_from_sst as described in Section 7.2.13. In the case of an analysis field, this should be the central (mean) time of an integrated value.

If the variable aerosol_dynamic_indicator is provided in an L2P product, it shall be included with the format requirements shown in the Table 7.16.

Table 7.16 CDL example description of aerosol_dynamic_indicator variable#

Storage type

Name

Description

Unit

byte

aerosol_dynamic_indicator

Indicator of potential aerosol contamination of infrared satellite data

Provider defined

byte aerosol_dynamic_indicator(time, nj, ni) ;
	aerosol_dynamic_indicator:_FillValue = -128b ;
	aerosol_dynamic_indicator:long_name = "aerosol dynamic indicator" ;
	aerosol_dynamic_indicator:units = "1" ;
	aerosol_dynamic_indicator:source = "ADI-NAVO-SDI-V2" ;
	aerosol_dynamic_indicator:comment = "Estimate of the potential for aerosol contamination based on the NAVO SDI_V2 product, in counts" ;
	aerosol_dynamic_indicator:coverage_content_type = "auxiliaryInformation" ;
	aerosol_dynamic_indicator:time_offset = 3. ;
	aerosol_dynamic_indicator:coordinates = "lat lon" ;
	aerosol_dynamic_indicator:add_offset = 0. ;
	aerosol_dynamic_indicator:scale_factor = 0.1 ;

A single source of aerosol_dynamic_indicator has been used in this example indicated using the aerosol_dynamic_indicator:source and are defined by the data provider using the ancillary data naming best practice given in Section 4.9. Since all of the values have the same time, the attribute time_offset is used instead of the variable aerosol_sst_dtime_from_sst to indicate the offset in hours from the reference variable sst_dtime.

7.2.13. adi_dtime_from_sst#

The variable adi_dtime_from_sst reports the time difference between aerosol indicator data from input L2 SST measurement in hours. The variable adi_dtime_from_sst shall be included in L2P products with the format requirements shown in the Table 7.17. In the case of an analysis field, this should be the central (mean) time of an integrated value. If all of the values are the same, this variable is not required. Instead, use the variable level attribute named time_offset with the variable aerosol_dynamic_indicator.

Table 7.17 CDL example description of adi_dtime_from_sst variable#

Storage type

Name

Description

Unit

byte

adi_dtime_from_sst

Time difference of aerosol dynamic indicator data from SST measurement in hours

hour

byte sea_ice_fraction_dtime_from_sst(time, nj, ni) ;
	sea_ice_fraction_dtime_from_sst:_FillValue = -128b ;
	sea_ice_fraction_dtime_from_sst:long_name = "time difference, in hours, of sea ice fraction measurement from sst measurement" ;
	sea_ice_fraction_dtime_from_sst:units = "h" ;
	sea_ice_fraction_dtime_from_sst:scale_factor = 0.1 ;
	sea_ice_fraction_dtime_from_sst:add_offset = 0. ;
	sea_ice_fraction_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
	sea_ice_fraction_dtime_from_sst:comment = "the hours between the sea ice fraction measurement and the SST observation" ;
	sea_ice_fraction_dtime_from_sst:coordinates = "lat lon" ;

7.2.14. source_of_adi#

The source of data used to set the L2P ancillary data variable aerosol_dynamic_indicator shall be indicated in the L2P variable source_of_adi when more than one source of SSI data is used in the L2P product.

When only one source is used, this variable is not needed and the appropriate text string indicating the source is placed in the sources attribute of the aerosol_dynamic_indicator variable.

For multiple sources, The variable in question should contain an attribute called flag_meanings and another one called flag_values. The flag_values attribute shall contain a comma-separated list of the numeric codes for the sources of data used whose order matches the space-separated text strings in the flag_meanings attribute. 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.

Instead of using a _FillValue attribute and value for missing data, it is recommended to set missing pixel values to 0 and add the corresponding no_data meaning in flag_meanings attribute.

The variable source_of_adi shall conform to the with the format requirements shown in the Table 7.18.

Table 7.18 CDL example description of source_of_adi variable#

Storage type

Name

Description

Unit

byte

source_of_adi

Sources of aerosol dynamic indicator values

None

byte source_of_adi(time, nj, ni) ;
	source_of_adi:_FillValue = -128b ;
	source_of_adi:long_name = "sources of aerosol dynamic indicator" ;
	source_of_adi:flag_meanings = "no_data AOD-NAAPS-ADI SDI-OSISAF-ADI" ;
	source_of_adi:flag_values = 0b, 1b, 2b ;
	source_of_adi:comment = "This variable provides a pixel by pixel description of where aerosol optical depth were derived from" ;
	source_of_adi:coverage_content_type = "auxiliaryInformation" ;
	source_of_adi:coordinates = "lat lon" ;

In this example, flag_meanings and flag_values contain strings and numeric codes provided by the data provider according to the best practices specified in Section 4.9.

7.2.15. l2p_flags#

Mandatory.

The GDS-2.2r0 L2P variable l2p_flags is used to

  • Specify the type of input SST data (either infrared or passive microwave instrument derived),

  • Pass through native flags from the input L2 SST data set and

  • Record any additional information considered important for the user of an L2P data set.

The L2P variable l2p_flags holds Boolean (single bit) codes detailed in its flag_meanings and flag_masks attributes, and split into two sections:

  • The first 6 bits of the L2P variable l2p_flags are generic flags that are common to all L2P data files as defined in the Table 7.19

  • Bits 6-15 are defined by the L2P data provider and are specific to each L2 input data stream

Table 7.19 List of bits composing the l2P_flags variable#

Bit

Common flags

0

Set if passive microwave data (not set is assumed to be infrared)

1

Set if over land (not set is assumed to be ocean)

2

Set if pixel is over ice

3

Set if pixel is over a lake (if known)

4

Set if pixel is over a river (if known)

5

Reserved for future data

6-15

Defined by L2 data provider

The flag_meanings attribute shall contain a space-separated list of (string with no space) descriptions for each distinct flag value. For descriptions containing multiple words, the words shall be linked by underscores.

The flag_masks attribute shall contain a comma-separated list of (numeric) mask values that isolate the bit or bits that encode each flag value, whose order matches that of the flag_meanings values.

It is recommended not to use _FillValue attribute as it is prone to misinterpretation of the bit mask.

  • Bit 0 of the L2P l2p_flags is used to record if an input pixel SST is derived from an infrared satellite sensor or a passive microwave sensor. If an input pixel is derived from a passive microwave sensor, bit 0 of the L2P l2p_flags variable should be set to 1. By not setting this flag the pixel is assumed to be from an infrared sensor.

  • Bit 1 of the L2P l2p_flags variable is used to record if an input pixel is over land or ocean surfaces. If an input pixel is classified as land covered bit 1 of the L2P l2p_flags variable should be set to equal 1. By not setting this flag the pixel is assumed to be classified as over ocean.

  • Bit 2 of the L2P l2p_flags variable is used to record if an input pixel records ice contamination. If an input pixel is classified as ice contaminated bit 2 of the L2P l2p_flags variable should be set to 1.

  • Bit 3 of the L2P l2p_flags variable is used to record if an input pixel contains any part of a lake, as defined by the GHRSST definition of lakes (mask). If an input pixel contains any part of a lake, as defined by the GHRSST definition of lakes (mask), bit 3 of the L2P l2p_flags variable should be set to 1.

  • Bit 4 of the L2P l2p_flags variable is optionally used to record if an input pixel contains any part of a river, as defined by the GHRSST definition of rivers (mask). If an input pixel contains any part of a river, as defined by the GHRSST definition of rivers (mask), bit 4 of the L2P l2p_flags variable should be set to 1.

Flags or other information provided with the input L2 SST data should be defined and assigned to the l2p_flags variable using bits 6-15 of the L2P variable l2p_flags. It is recommended to use single bits for any information, no combination of multiple bits. If that is not possible, then an additional experimental byte field should be used instead. Definitions for bits 6-15, if used, should be given using the variable comment attribute.

The L2P variable l2p_flags shall be included in GDS-2.2r0 L2P data files with the format requirements shown in Table 7.20.

Table 7.20 CDL example description of source_of_adi variable#

Storage type

Name

Description

Unit

short

l2p_flags

The variable l2p_flags is used to
(a) specify the type of input SST data (either infrared or passive microwave instrument derived),
(b) pass through native flags from the input L2 SST data set and
(c) record any additional information considered important for the user of an L2P data set

None

short l2p_flags(time, nj, ni) ;
	l2p_flags:long_name = "L2P flags" ;
	l2p_flags:flag_meanings = "microwave land ice lake" ;
	l2p_flags:flag_masks = 1s, 2s, 4s, 8s ;
	l2p_flags:comment = "These flags are important to properly use the data." ;
	l2p_flags:coverage_content_type = "qualityInformation" ;
	l2p_flags:coordinates = "lat lon" ;

7.2.16. quality_level#

Mandatory.

The L2P variable quality_level provides an indicator of the overall quality of an SST measurement in an L2P file. The GDS requires the following:

The L2P variable quality_level shall use an incremental scale from 0 to 5 to provide the user with an indication of the quality of the L2P SST data, reflecting the CEOS QA4EO (Quality Indicator) guidelines. The value 0 shall be used to indicate missing data and the value 1 shall be used to indicate invalid data (e.g. cloud, rain, too close to land - under no conditions use this data). The remaining values from 2-5 are set at the discretion of the L2P provider with the proviso that the value 2 shall be used to indicate the worst quality of usable data and the value 5 shall be used to indicate the best quality usable data. The L2P provider is required to provide a description of the quality levels provided as part of the product documentation.

The L2P variable quality_level reflects the quality of SST data from a single sensor and does not provide an indication of the relative quality between sensors.

The L2P variable quality_level shall be included with the format requirements shown in the Table 7.21.

We recommend not to use the _FillValue attribute but rather to use the value 0 to fill in missing data pixels.

Table 7.21 CDL example description of quality_level variable#

Storage type

Name

Description

Unit

byte

quality_level

Overall indicator of SST measurement quality

n/a

byte quality_level(time, nj, ni) ;
	quality_level:_FillValue = -128b ;
	quality_level:long_name = "quality level of SST pixel" ;
	quality_level:flag_meanings = "no_data bad_data worst_quality low_quality acceptable_quality best_quality" ;
	quality_level:flag_values = 0b, 1b, 2b, 3b, 4b, 5b ;
	quality_level:comment = "These are the overall quality indicators and are used for all GHRSST SSTs" ;
	quality_level:coverage_content_type = "qualityInformation" ;
	quality_level:coordinates = "lat lon" ;

7.2.17. satellite_zenith_angle#

Optional.

Sea surface temperature retrievals from satellite instruments degrade as the sensor zenith angle increases. Measurements made with high viewing angles relative to nadir appear to be considerably colder than they are in reality. The L2P variable satellite_zenith_angle contains the calculated satellite zenith angle (measured at the Earth’s surface between the satellite and the zenith) for the input L2 SST based on the satellite geometry at the time of SST data acquisition.

The GDS L2P variable satellite_zenith_angle is an optional field that may be provided by a data provider. The satellite zenith angle for each input pixel measurement should be recorded in the L2P variable satellite_zenith_angle having a range of 0° to +90°.

If the L2P variable satellite_zenith_angle is included in a L2P data product it shall conform to the format requirements shown in Table 7.22.

Table 7.22 CDL example description of satellite_zenith_angle variable#

Storage type

Name

Description

Unit

byte or short

satellite_zenith_angle

Calculated satellite zenith angle (measured at the Earth’s surface between the satellite and the local zenith) for the input L2 SST based on the satellite geometry at the time of SST data acquisition.
Ranges from 0 to 90 degrees.

angular_degree

byte satellite_zenith_angle(time, nj, ni) ;
	satellite_zenith_angle:_FillValue = -128b ;
	satellite_zenith_angle:long_name = "satellite zenith angle" ;
	satellite_zenith_angle:units = "angular_degree" ;
	satellite_zenith_angle:comment = "The satellite zenith angle at the time of the SST observations." ;
	satellite_zenith_angle:coverage_content_type = "auxiliaryInformation" ;
	satellite_zenith_angle:standard_name = "sensor_zenith_angle" ;
	satellite_zenith_angle:coordinates = "lat lon" ;
	satellite_zenith_angle:add_offset = 0. ;
	satellite_zenith_angle:scale_factor = 1. ;

7.2.18. solar_zenith_angle#

Optional.

The L2P variable solar_zenith_angle contains the calculated solar zenith angle (the angle between the local zenith and the line of sight to the sun, measured at the Earth’s surface) for the input L2 SST based on the satellite geometry at the time of SST data acquisition. Solar zenith angle is a function of time, day number and latitude.

The GDS L2P variable solar_zenith_angle is an optional field that may be provided by a data provider. The solar zenith angle for each input pixel measurement should be recorded in the L2P variable solar_zenith_angle having a range of 0° to 180°. If the L2P variable solar_zenith_angle is included in a L2P data product it shall conform to the format requirements shown in Table 7.23.

Table 7.23 CDL example description of solar_zenith_angle variable#

Storage type

Name

Description

Unit

byte or short

solar_zenith_angle

Calculated solar zenith angle (measured at the Earth’s surface between the sun and the local zenith) for the input SST based on the solar geometry at the time of SST data acquisition.
Ranges from 0 to 180 degrees.

angular_degree

byte solar_zenith_angle(time, nj, ni) ;
	solar_zenith_angle:_FillValue = -128b ;
	solar_zenith_angle:long_name = "solar zenith angle" ;
	solar_zenith_angle:units = "angular_degree" ;
	solar_zenith_angle:comment = "The solar zenith angle at the time of the SST observations." ;
	solar_zenith_angle:coverage_content_type = "auxiliaryInformation" ;
	solar_zenith_angle:standard_name = "solar_zenith_angle" ;
	solar_zenith_angle:coordinates = "lat lon" ;
	solar_zenith_angle:add_offset = 90. ;
	solar_zenith_angle:scale_factor = 1. ;

7.2.19. surface_solar_irradiance#

Optional.

Surface Solar Irradiance (SSI) data were originally required within the GDS 1.6 to assess the magnitude and variability of significant diurnal SST variations, for use in diurnal variability correction schemes, for use in L4 SST analysis procedures and to interpret the relationship between satellite and in situ SST data. In the GDS-2.2r0, it is an optional variable. Ideally a near contemporaneous SSI measurement from satellite sensors should be used but this is impossible for all areas due to the limited number of geostationary satellite sensors available. As a surrogate for a measured SSI value, analysis estimates may be used.

Surface solar Irradiance (SSI) data may be assigned to each L2P SST measurement pixel using the variable surface_solar_irradiance.

An integrated down-welling SSI measurement (e.g., derived from satellite measurements) should be assigned to each SST pixel value using the surface_solar_irradiance L2P variable. The SSI measurement nearest in space and time before the input pixel SST value should be used. If no SSI measurement is available, an integrated SSI value derived from an analysis system nearest in space and time to the SST measurement should be used to set the value of surface_solar_irradiance.

The difference in time expressed in hours between the time of SST measurement and the time of surface solar irradiance data should be entered into the L2P confidence data variable ssi_dtime_from_sst. In the case of an analysis field, this should be the central (mean) time of an integrated value. If all of the values have the same time, the attribute time_offset is used instead of the variable ssi_dtime_fraction_dtime_from_sst. The attribute time_offset should store the difference in hours between the surface_solar_irradiance and the reference time, stored in the variable time.

If a single source of data is used in the L2P variable surface_solar_irradiance, the L2P variable source_of_ssi is not required and instead the surface_solar_irradiance:source attribute value is sufficient. It shall be a single source text string defined by the data provider using the text string naming best practice given in Section 4.9.

If multiple sources of data are used, source information should be indicated in the L2P variable source_of_ssi as defined by the data provider and as described in detail in Table 7.24. Then, the surface_solar_irradiance:source attribute shall have the value source_of_ssi.

The L2P variable surface_solar_irradiance may be included by a data provider with the format requirements shown in Table 7.24.

Table 7.24 CDL example description of surface_solar_irradiance variable#

Storage type

Name

Description

Unit

byte

surface_solar_irradiance

Near contemporaneous integrated Surface Solar Irradiance (SSI) data.

\(W m^{-2}\)

byte surface_solar_irradiance(time, nj, ni) ;
	surface_solar_irradiance:long_name = "surface solar irradiance" ;
	surface_solar_irradiance:standard_name = "surface_downwelling_spherical_irradiance_in_sea_water" ;
	surface_solar_irradiance:units = "W m-2" ;
	surface_solar_irradiance:coverage_content_type = "auxiliaryInformation" ;
	surface_solar_irradiance:comment = "The surface solar irradiance as close to the SST observation times as possible" ;
	surface_solar_irradiance:scale_factor = 1.36 ;
	surface_solar_irradiance:add_offset = 127. ;
	surface_solar_irradiance:source = "SSI-MSG_SEVIRI-V1" ;
	surface_solar_irradiance:time_offset = 2. ;
	surface_solar_irradiance:coordinates = "lat lon" ;

A single source of SSI data is shown in this example which is reported as surface_solar_irradiance:source = "SSI-MSG_SEVIRI-V1" The text string has been defined by the data provider using the text string naming best practice given in Section 4.9. Since all of the SSI values have the same time, the attribute time_offset is used instead of the variable ssi_dtime_from_sst.

7.2.20. ssi_dtime_from_sst#

Optional (Mandatory only if multiple observation time for surface_solar_irradiance are provided).

The variable ssi_dtime_from_sst reports the time difference between SSI data from SST measurement in hours. The variable ssi_dtime_from_sst shall be included with the format requirements shown in Table 7.25.

In the case of an analysis field, the central (mean) time of an integrated value should be used.

If all of the values are the same, this variable is not required. Instead, use the variable level attribute named time_offset with the variable surface_solar_irradiance.

Table 7.25 CDL example description of ssi_dtime_from_sst variable#

Storage type

Name

Description

Unit

byte

ssi_dtime_from_sst

This variable reports the time difference between SSI data from SST measurement in hours

hour

byte ssi_dtime_from_sst(time, nj, ni) ;
	ssi_dtime_from_sst:_FillValue = -128b ;
	ssi_dtime_from_sst:long_name = "time difference, in hours, of surface solar irradiance measurement from sst measurement" ;
	ssi_dtime_from_sst:units = "h" ;
	ssi_dtime_from_sst:scale_factor = 0.1 ;
	ssi_dtime_from_sst:add_offset = 0. ;
	ssi_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
	ssi_dtime_from_sst:comment = "the hours between the surface solar irradiance measurement and the SST observation" ;
	ssi_dtime_from_sst:coordinates = "lat lon" ;

7.2.21. source_of_ssi#

Optional (Mandatory only if multiple sources for surface_solar_irradiance are provided).

The source of data used to set the L2P ancillary data variable surface_solar_irradiance shall be indicated in the L2P variable source_of_ssi when more than one source of SSI data is used in the L2P product. 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 surface_solar_irradiance variable.

For multiple sources, the variable source_of_ssi should contain an attribute called flag_meanings and another one called flag_values. The flag_values attribute shall contain a comma-separated list of the numeric codes for the sources of data used whose order matches the space-separated text strings in the flag_meanings attribute.

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.

Instead of using a _FillValue attribute and value for missing data, it is recommended to set missing pixel values to 0 and add the corresponding no_data meaning in flag_meanings attribute.

The variable source_of_ssi shall conform to the format requirements shown in the Table 7.26.

Table 7.26 CDL example description of source_of_ssi variable#

Storage type

Name

Description

Unit

byte

source_of_ssi

Sources of surface solar irradiance values

code

byte source_of_ssi(time, nj, ni) ;
	source_of_ssi:long_name = "sources of surface solar irradiance" ;
	source_of_ssi:flag_meanings = "no_data SSI-MSG_SEVIRI-V1 SSI-NOAA-GOES_E-V1 SSI-NOAA-GOES_W-V1 SSI-ECMWF-V1 SSI-NCEP-V1 SSI-NAAPS-V1 spare" ;
	source_of_ssi:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b ;
	source_of_ssi:coverage_content_type = "auxiliaryInformation" ;
	source_of_ssi:comment = "This variable provides a pixel by pixel description of where the surface solar irradiances were derived from." ;
	source_of_ssi:coordinates = "lat lon" ;

In this example, flag_meanings and flag_values contain code data provided by the data provider according to the best practices specified in Section 4.9. An example of these codes is given in the Table 7.27.

Table 7.27 Example text string and numeric codes used to identify the sources of data in surface_solar_irradiance:sources and source_of_ssi#

Numeric Code

Text String

Sources of surface solar irradiance Description

0

no_data

No surface solar irradiance set

1

SSI-MSG_SEVIRI-V1

SSI from Meteosat Second Generation SEVIRI instrument (EUMETSAT OSI-SAF

2

SSI-NOAA-GOES_E-V1

GOES_E SSI data from NOAA

3

SSI-NOAA-GOES_W-V1

GOES_W SSI data from NOAA

4

SSI-ECMWF-V1

SSI data from European Centre for Medium Range Weather Forecasting

5

SSI-NCEP-V1

SSI data from NOAA’s National Center for Environmental Prediction

6

SSI-NAVY-NAAPS-V1

SSI data from the US Navy Atmospheric aerosol Prediction system

7

Spare to be defined as required

7.2.22. Optional experimental L2P variables included by data provider#

Flexibility of L2P product content is provided through the netCDF API, which allows fully self-describing fields and additional L2P variables may be included by L2P data providers if they are considered relevant for L2P users. The GDS-2.2r0 also permits the inclusion of R&D variables (e.g. channel radiance data sets, estimates of Chlorophyll A, fields that facilitate flagging of diurnal variability, etc.) and 32 bytes per pixel are available in total for optional/experimental variables in any combination (i.e., variables can be defined as 32 x byte, 16 x short, 3 x int + 4 x byte, etc). The use of optional/experimental variables provides a limited amount of flexibility within the GDS-2.2r0 for regional user requirements while maintaining an overall upper limit on GDS-2.2r0 L2P products for data management groups and archive scaling. In exceptional cases a waiver on the 32 byte ceiling can be requested to extend up to 64 bytes per pixel.

The GDS-2.2r0 issues the following guidance on the inclusion of optional or experimental variables within L2P data products:

  • The sum total of all experimental variables shall not increase L2P record size by more than 32 bytes per SST pixel. A waiver can be requested for higher amounts up to 64 bytes.

  • CF-1.7 or later compliance should be maintained for all optional/experimental variables. Where available, a standard_name attribute should be used.

  • It is permitted to use a provider defined coordinate variable associated with experimental fields but this shall be documented in data provider documentation.

  • Time difference data (dtime values) should be provided for variables when appropriate.

  • The source of data should be indicated: in the single source case as a variable attribute; as a dedicated variable when mixed data sources are present.

  • Use of experimental variables requires clear documentation by the GHRSST producer. They shall provide adequate documentation that describes each variable following the CDL examples provided in this document.

  • The variable attribute comment shall be used to provide a URL link to a full description of each data producer defined variable included in the L2P product.

  • Experimental L2P variables if present in an L2P product will be included with the minimum format requirements shown in Table 7.28

  • Additional global variables may be declared within the L2P product.

Table 7.28 CDL template for data provider defined L2P variables#

Storage type definition

Variable name definition

Description

Unit

byte

Provide a variable name in lower case using underscore separators e.g. my_variable

Provide a description of my_variable stating content purpose and units

Units of my_variable

byte my_variable(time, nj, ni) ;
	my_variable:_FillValue = -128b ;
	my_variable:long_name = "estimated diurnal variability" ;
	my_variable:standard_name = "<use_a_CF_standard_name_if_available>" ;
	my_variable:units = "K" ;
	my_variable:source = "MY-SOURCES-V1" ;
	my_variable:scale_factor = 1. ;
	my_variable:add_offset = 0. ;
	my_variable:coverage_content_type = "auxiliaryInformation" ;
	my_variable:comment = "This field is fully documented at http://www.mysite.com/my_variable-description.html" ;
	my_variable:coordinates = "lat lon" ;

7.3. CDL example L2P dataset#

The following CDL has been generated for a L2P dataset by OSI SAF derived from the AVHRR sensor on Metop-C platform (https://doi.org/10.15770/EUM_SAF_OSI_NRT_2013). It includes a number of optional and experimental variables.

netcdf l2p_full_example {
dimensions:
	time = UNLIMITED ; // (1 currently)
	nj = 1080 ;
	ni = 2048 ;
variables:
	int time(time) ;
		time:long_name = "reference time of sst file" ;
		time:standard_name = "time" ;
		time:axis = "T" ;
		time:comment = "includes leap seconds since 1981" ;
		time:coordinates = "lat lon" ;
		time:units = "seconds since 1981-01-01" ;
		time:calendar = "proleptic_gregorian" ;
	float lat(nj, ni) ;
		lat:long_name = "latitude" ;
		lat:standard_name = "latitude" ;
		lat:units = "degrees_north" ;
		lat:valid_min = -90.f ;
		lat:valid_max = 90.f ;
		lat:comment = "geographical coordinates, WGS84 projection" ;
		lat:coverage_content_type = "coordinate" ;
		lat:coordinates = "lat lon" ;
	float lon(nj, ni) ;
		lon:long_name = "longitude" ;
		lon:standard_name = "longitude" ;
		lon:units = "degrees_east" ;
		lon:valid_min = -180.f ;
		lon:valid_max = 180.f ;
		lon:comment = "geographical coordinates, WGS84 projection" ;
		lon:coverage_content_type = "coordinate" ;
		lon:coordinates = "lat lon" ;
	short sea_surface_temperature(time, nj, ni) ;
		sea_surface_temperature:_FillValue = -32768s ;
		sea_surface_temperature:long_name = "sea surface subskin temperature" ;
		sea_surface_temperature:standard_name = "sea_surface_subskin_temperature" ;
		sea_surface_temperature:units = "K" ;
		sea_surface_temperature:depth = "1 millimeter" ;
		sea_surface_temperature:source = "AVHRR_METOP_C" ;
		sea_surface_temperature:comment = "Temperature of the subskin of the ocean" ;
		sea_surface_temperature:coverage_content_type = "physicalMeasurement" ;
		sea_surface_temperature:coordinates = "lat lon" ;
		sea_surface_temperature:add_offset = 273.15 ;
		sea_surface_temperature:scale_factor = 0.01 ;
	short sst_dtime(time, nj, ni) ;
		sst_dtime:_FillValue = -32768s ;
		sst_dtime:long_name = "time difference from reference time" ;
		sst_dtime:units = "s" ;
		sst_dtime:scale_factor = 1. ;
		sst_dtime:add_offset = 0. ;
		sst_dtime:coverage_content_type = "coordinate" ;
		sst_dtime:comment = "time plus sst_dtime gives seconds after 00:00:00 UTC January 1, 1981" ;
		sst_dtime:coordinates = "lat lon" ;
	byte sses_bias(time, nj, ni) ;
		sses_bias:_FillValue = -128b ;
		sses_bias:long_name = "SSES bias estimate" ;
		sses_bias:units = "K" ;
		sses_bias:comment = "Bias estimate derived using the techniques described at http://www.ghrsst.org/SSES-Description-of-schemes.html" ;
		sses_bias:coverage_content_type = "qualityInformation" ;
		sses_bias:coordinates = "lat lon" ;
		sses_bias:add_offset = 0. ;
		sses_bias:scale_factor = 0.01 ;
	byte sses_standard_deviation(time, nj, ni) ;
		sses_standard_deviation:_FillValue = -128b ;
		sses_standard_deviation:long_name = "SSES standard deviation" ;
		sses_standard_deviation:units = "K" ;
		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:coverage_content_type = "qualityInformation" ;
		sses_standard_deviation:coordinates = "lat lon" ;
		sses_standard_deviation:add_offset = 1. ;
		sses_standard_deviation:scale_factor = 0.01 ;
	byte dt_analysis(time, nj, ni) ;
		dt_analysis:_FillValue = -128b ;
		dt_analysis:long_name = "deviation from SST analysis or reference climatology" ;
		dt_analysis:units = "K" ;
		dt_analysis:reference = "OSTIA" ;
		dt_analysis:comment = "The difference between this SST and the previous day\'s SST analysis" ;
		dt_analysis:coverage_content_type = "auxiliaryInformation" ;
		dt_analysis:coordinates = "lat lon" ;
		dt_analysis:add_offset = 0. ;
		dt_analysis:scale_factor = 0.1 ;
	byte wind_speed(time, nj, ni) ;
		wind_speed:_FillValue = -128b ;
		wind_speed:long_name = "10m wind speed" ;
		wind_speed:standard_name = "wind_speed" ;
		wind_speed:units = "m s-1" ;
		wind_speed:height = "10 m" ;
		wind_speed:time_offset = 0. ;
		wind_speed:source = "WSP-ECMWF-Forecast" ;
		wind_speed:comment = "These wind speeds were created by the ECMWF and represent winds at 10 metres above the sea surface. " ;
		wind_speed:coordinates = "lat lon" ;
		wind_speed:add_offset = 0. ;
		wind_speed:scale_factor = 1. ;
	byte sea_ice_fraction(time, nj, ni) ;
		sea_ice_fraction:_FillValue = -128b ;
		sea_ice_fraction:long_name = "sea ice fraction" ;
		sea_ice_fraction:standard_name = "sea_ice_area_fraction" ;
		sea_ice_fraction:units = "1" ;
		sea_ice_fraction:time_offset = 3. ;
		sea_ice_fraction:source = "ICE-OSISAF" ;
		sea_ice_fraction:comment = "Fractional sea ice cover from OSISAF ice product" ;
		sea_ice_fraction:coverage_content_type = "auxiliaryInformation" ;
		sea_ice_fraction:coordinates = "lat lon" ;
		sea_ice_fraction:add_offset = 0. ;
		sea_ice_fraction:scale_factor = 0.01 ;
	byte aerosol_dynamic_indicator(time, nj, ni) ;
		aerosol_dynamic_indicator:_FillValue = -128b ;
		aerosol_dynamic_indicator:long_name = "aerosol dynamic indicator" ;
		aerosol_dynamic_indicator:units = "1" ;
		aerosol_dynamic_indicator:source = "ADI-NAVO-SDI-V2" ;
		aerosol_dynamic_indicator:comment = "Estimate of the potential for aerosol contamination based on the NAVO SDI_V2 product, in counts" ;
		aerosol_dynamic_indicator:coverage_content_type = "auxiliaryInformation" ;
		aerosol_dynamic_indicator:time_offset = 3. ;
		aerosol_dynamic_indicator:coordinates = "lat lon" ;
		aerosol_dynamic_indicator:add_offset = 0. ;
		aerosol_dynamic_indicator:scale_factor = 0.1 ;
	byte adi_dtime_from_sst(time, nj, ni) ;
		adi_dtime_from_sst:_FillValue = -128b ;
		adi_dtime_from_sst:long_name = "time difference of ADI data from sst measurement" ;
		adi_dtime_from_sst:units = "hour" ;
		adi_dtime_from_sst:valid_min = -127b ;
		adi_dtime_from_sst:valid_max = 127b ;
		adi_dtime_from_sst:comment = "Difference in hours between the ADI and SST data" ;
		adi_dtime_from_sst:coordinates = "lat lon" ;
		adi_dtime_from_sst:add_offset = 0. ;
		adi_dtime_from_sst:scale_factor = 0.1 ;
	byte sources_of_adi(time, nj, ni) ;
		sources_of_adi:_FillValue = -128b ;
		sources_of_adi:long_name = "sources of aerosol dynamic indicator" ;
		sources_of_adi:valid_min = 0b ;
		sources_of_adi:valid_max = 2b ;
		sources_of_adi:flag_meanings = "no_data AOD-NAAPS-ADI SDI-OSISAF-ADI" ;
		sources_of_adi:flag_values = 0b, 1b, 2b ;
		sources_of_adi:comment = "This variable provides a pixel by pixel description of where aerosol optical depth were derived from." ;
		sources_of_adi:coordinates = "lat lon" ;
	short l2p_flags(time, nj, ni) ;
		l2p_flags:long_name = "L2P flags" ;
		l2p_flags:flag_meanings = "microwave land ice lake" ;
		l2p_flags:flag_masks = 1s, 2s, 4s, 8s ;
		l2p_flags:comment = "These flags are important to properly use the data." ;
		l2p_flags:coverage_content_type = "qualityInformation" ;
		l2p_flags:coordinates = "lat lon" ;
	byte quality_level(time, nj, ni) ;
		quality_level:_FillValue = -128b ;
		quality_level:long_name = "quality level of SST pixel" ;
		quality_level:flag_meanings = "no_data bad_data worst_quality low_quality acceptable_quality best_quality" ;
		quality_level:flag_values = 0b, 1b, 2b, 3b, 4b, 5b ;
		quality_level:comment = "These are the overall quality indicators and are used for all GHRSST SSTs" ;
		quality_level:coverage_content_type = "qualityInformation" ;
		quality_level:coordinates = "lat lon" ;
	byte satellite_zenith_angle(time, nj, ni) ;
		satellite_zenith_angle:_FillValue = -128b ;
		satellite_zenith_angle:long_name = "satellite zenith angle" ;
		satellite_zenith_angle:units = "angular_degree" ;
		satellite_zenith_angle:comment = "The satellite zenith angle at the time of the SST observations." ;
		satellite_zenith_angle:coverage_content_type = "auxiliaryInformation" ;
		satellite_zenith_angle:standard_name = "sensor_zenith_angle" ;
		satellite_zenith_angle:coordinates = "lat lon" ;
		satellite_zenith_angle:add_offset = 0. ;
		satellite_zenith_angle:scale_factor = 1. ;
	byte solar_zenith_angle(time, nj, ni) ;
		solar_zenith_angle:_FillValue = -128b ;
		solar_zenith_angle:long_name = "solar zenith angle" ;
		solar_zenith_angle:units = "angular_degree" ;
		solar_zenith_angle:comment = "The solar zenith angle at the time of the SST observations." ;
		solar_zenith_angle:coverage_content_type = "auxiliaryInformation" ;
		solar_zenith_angle:standard_name = "solar_zenith_angle" ;
		solar_zenith_angle:coordinates = "lat lon" ;
		solar_zenith_angle:add_offset = 90. ;
		solar_zenith_angle:scale_factor = 1. ;
	byte source_of_wind_speed(time, nj, ni) ;
		source_of_wind_speed:long_name = "sources of wind speed" ;
		source_of_wind_speed:flag_meanings = "no_data WSP-ESA-ASCAT-V2 WSP-NCEP-Analysis-V3 WSP-ECMWF-Forecast-V6" ;
		source_of_wind_speed:flag_values = 0b, 1b, 2b, 3b ;
		source_of_wind_speed:coverage_content_type = "auxiliaryInformation" ;
		source_of_wind_speed:comment = "This variable provides a pixel by pixel description of where the wind speeds were derived from." ;
		source_of_wind_speed:coordinates = "lat lon" ;
	byte wind_speed_dtime_from_sst(time, nj, ni) ;
		wind_speed_dtime_from_sst:_FillValue = -128b ;
		wind_speed_dtime_from_sst:long_name = "time difference, in hours\', of wind speed measurement from sst measurement" ;
		wind_speed_dtime_from_sst:units = "h" ;
		wind_speed_dtime_from_sst:scale_factor = 0.1 ;
		wind_speed_dtime_from_sst:add_offset = 0. ;
		wind_speed_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
		wind_speed_dtime_from_sst:comment = "the hours between the wind speed measurement and the SST observation" ;
		wind_speed_dtime_from_sst:coordinates = "lat lon" ;
	byte source_of_sea_ice_fraction(time, nj, ni) ;
		source_of_sea_ice_fraction:long_name = "sources of sea ice fraction" ;
		source_of_sea_ice_fraction:flag_meanings = "no_data CE-NSIDC-AMSRE-V3 ICE-ECMWF-Forecast-V3" ;
		source_of_sea_ice_fraction:flag_values = 0b, 1b, 2b ;
		source_of_sea_ice_fraction:coverage_content_type = "auxiliaryInformation" ;
		source_of_sea_ice_fraction:comment = "This variable provides a pixel by pixel description of where the sea ice fraction were derived from." ;
		source_of_sea_ice_fraction:coordinates = "lat lon" ;
	byte sea_ice_fraction_dtime_from_sst(time, nj, ni) ;
		sea_ice_fraction_dtime_from_sst:_FillValue = -128b ;
		sea_ice_fraction_dtime_from_sst:long_name = "time difference, in hours, of sea ice fraction measurement from sst measurement" ;
		sea_ice_fraction_dtime_from_sst:units = "h" ;
		sea_ice_fraction_dtime_from_sst:scale_factor = 0.1 ;
		sea_ice_fraction_dtime_from_sst:add_offset = 0. ;
		sea_ice_fraction_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
		sea_ice_fraction_dtime_from_sst:comment = "the hours between the sea ice fraction measurement and the SST observation" ;
		sea_ice_fraction_dtime_from_sst:coordinates = "lat lon" ;
	byte surface_solar_irradiance(time, nj, ni) ;
		surface_solar_irradiance:long_name = "surface solar irradiance" ;
		surface_solar_irradiance:standard_name = "surface_downwelling_spherical_irradiance_in_sea_water" ;
		surface_solar_irradiance:units = "W m-2" ;
		surface_solar_irradiance:coverage_content_type = "auxiliaryInformation" ;
		surface_solar_irradiance:comment = "The surface solar irradiance as close to the SST observation times as possible" ;
		surface_solar_irradiance:scale_factor = 1.36 ;
		surface_solar_irradiance:add_offset = 127. ;
		surface_solar_irradiance:source = "SSI-MSG_SEVIRI-V1" ;
		surface_solar_irradiance:time_offset = 2. ;
		surface_solar_irradiance:coordinates = "lat lon" ;
	byte source_of_ssi(time, nj, ni) ;
		source_of_ssi:long_name = "sources of surface solar irradiance" ;
		source_of_ssi:flag_meanings = "no_data SSI-MSG_SEVIRI-V1 SSI-NOAA-GOES_E-V1 SSI-NOAA-GOES_W-V1 SSI-ECMWF-V1 SSI-NCEP-V1 SSI-NAAPS-V1 spare" ;
		source_of_ssi:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b ;
		source_of_ssi:coverage_content_type = "auxiliaryInformation" ;
		source_of_ssi:comment = "This variable provides a pixel by pixel description of where the surface solar irradiances were derived from." ;
		source_of_ssi:coordinates = "lat lon" ;
	byte ssi_dtime_from_sst(time, nj, ni) ;
		ssi_dtime_from_sst:_FillValue = -128b ;
		ssi_dtime_from_sst:long_name = "time difference, in hours, of surface solar irradiance measurement from sst measurement" ;
		ssi_dtime_from_sst:units = "h" ;
		ssi_dtime_from_sst:scale_factor = 0.1 ;
		ssi_dtime_from_sst:add_offset = 0. ;
		ssi_dtime_from_sst:coverage_content_type = "auxiliaryInformation" ;
		ssi_dtime_from_sst:comment = "the hours between the surface solar irradiance measurement and the SST observation" ;
		ssi_dtime_from_sst:coordinates = "lat lon" ;
	byte source_of_adi(time, nj, ni) ;
		source_of_adi:_FillValue = -128b ;
		source_of_adi:long_name = "sources of aerosol dynamic indicator" ;
		source_of_adi:flag_meanings = "no_data AOD-NAAPS-ADI SDI-OSISAF-ADI" ;
		source_of_adi:flag_values = 0b, 1b, 2b ;
		source_of_adi:comment = "This variable provides a pixel by pixel description of where aerosol optical depth were derived from" ;
		source_of_adi:coverage_content_type = "auxiliaryInformation" ;
		source_of_adi:coordinates = "lat lon" ;
	byte my_variable(time, nj, ni) ;
		my_variable:_FillValue = -128b ;
		my_variable:long_name = "estimated diurnal variability" ;
		my_variable:standard_name = "<use_a_CF_standard_name_if_available>" ;
		my_variable:units = "K" ;
		my_variable:source = "MY-SOURCES-V1" ;
		my_variable:scale_factor = 1. ;
		my_variable:add_offset = 0. ;
		my_variable:coverage_content_type = "auxiliaryInformation" ;
		my_variable:comment = "This field is fully documented at http://www.mysite.com/my_variable-description.html" ;
		my_variable:coordinates = "lat lon" ;

// global attributes:
		:Conventions = "CF-1.4" ;
		:title = "Sea Surface Temperature" ;
		:summary = "The L2P product derived from METOP C AVHRR brightness temperatures." ;
		:references = "Low Earth Orbiter Sea Surface Temperature Product User Manual, http://www.osi-saf.org" ;
		:institution = "OSISAF" ;
		:history = "METEO-FRANCE/CMS LEOSAFO processor" ;
		:comment = "" ;
		:license = "All intellectual property rights of the Ocean & Sea Ice SAF products belong to EUMETSAT. The use of these products is granted to every user, free of charge. If users wish to use these products, EUMETSAT\'s copyright credit must be shown by displaying the words \'Copyright EUMETSAT\' under each of the products shown. EUMETSAT offers no warranty and accepts no liability in respect of the Ocean & Sea Ice SAF products. EUMETSAT neither commits to nor guarantees the continuity, availability, or quality or suitability for any purpose of, the Ocean & Sea Ice SAF products." ;
		:id = "AVHRR_SST_METOP_C-OSISAF-L2P-v1.0" ;
		:naming_authority = "org.ghrsst" ;
		:product_version = "1.0" ;
		:uuid = "24D2B70C-A848-11EE-B7B8-08F1EA6E84B2" ;
		:gds_version_id = "2.0" ;
		:netcdf_version_id = "4.6.3" ;
		:date_created = "2024-01-01T01:50:30Z" ;
		:file_quality_level = 2 ;
		:spatial_resolution = "1 km" ;
		:time_coverage_start = "2024-01-01T00:01:03Z" ;
		:time_coverage_end = "2024-01-01T00:04:03Z" ;
		:source = "AVHRR" ;
		:platform = "Metop-C" ;
		:Metadata_Conventions = "Unidata Dataset Discovery v1.0" ;
		:metadata_link = "N/A" ;
		:keywords = "Oceans > Ocean Temperature > Sea Surface Temperature " ;
		:keywords_vocabulary = "NASA Global Change Master Directory (GCMD) Science Keywords" ;
		:standard_name_vocabulary = "NetCDF Climate and Forecast (CF) Metadata Convention" ;
		:geospatial_lat_units = "degrees_north" ;
		:geospatial_lat_resolution = 0.01f ;
		:geospatial_lon_units = "degrees_east" ;
		:geospatial_lon_resolution = 0.01f ;
		:acknowledgment = "In case SAF data (pre-operational or operational) has been used for the study described in a paper the following sentence would be an appropriate reference to the funding coming from EUMETSAT: The data from the EUMETSAT Satellite Application Facility on Ocean & Sea Ice  used in this study are accessible through the SAF\'s homepage http://www.osi-saf.org" ;
		:creator_name = "O&SI SAF" ;
		:creator_email = "osi-saf.helpdesk@meteo.fr" ;
		:creator_url = "http://www.osi-saf.org" ;
		:project = "Group for High Resolution Sea Surface Temperature" ;
		:publisher_name = "The GHRSST Project Office" ;
		:publisher_url = "http://www.ghrsst.org" ;
		:publisher_email = "ghrsst-po@nceo.ac.uk" ;
		:processing_level = "L2P" ;
		:cdm_data_type = "swath" ;
		:geospatial_lat_min = 66.225f ;
		:geospatial_lat_max = 89.994f ;
		:geospatial_lon_max = 180.f ;
		:geospatial_lon_min = -180.f ;
		:geospatial_bounds = "POLYGON ((66.2249984741211 -180.0, 89.99400329589844 -180.0, 89.99400329589844 180.0, 66.2249984741211 180.0, 66.2249984741211 -180.0))" ;
		:geospatial_bounds_crs = "WGS84" ;
		:instrument = "AVHRR" ;
		:platform_vocabulary = "CEOS mission table" ;
		:instrument_vocabulary = "CEOS instrument table" ;
		:geospatial_vertical_min = 0. ;
		:geospatial_vertical_max = 0. ;
		:geospatial_vertical_positive = "up" ;
		:geospatial_vertical_units = "meters" ;
		:geospatial_bounds_vertical_crs = "EPSG:5831" ;
		string :contributor_name = "Stéphane Saux-Picard" ;
		:contributor_role = "Principal Investigator" ;
		:creator_type = "group" ;
		:creator_institution = "Meteo-France" ;
		:publisher_type = "institution" ;
		:publisher_institution = "Ifremer" ;
		:date_modified = "2024-01-01T01:50:30Z" ;
		:date_issued = "2024-01-01T01:50:30Z" ;
		:date_metadata_modified = "2020-01-01T12:00:00Z" ;
		:program = "Group for High Resolution Sea Surface temperature (GHRSST), EUMETSAT Satellite Application Facilities (SAF)" ;
}