NetCDF-CF File Examples for Satellite Swath Data

From Earth Science Information Partners (ESIP)

The following CDL represents an example of the structure of a GHRSST Level 2P file for an SST data set derived from the Sentinel-3A Sea and Land Surface Temperature (SLSTR) data set. Its straight from the GHRSST Data Processing Specification version 2

The dimensions ni and nj represent the satellite across and along track coordinates respectively. Other important variables are time, lon, lat for positioning satellite observations/information found in the sea_surface_temperature, sst_dtime, sses_bias, sses_standard_deviation, and quality_level variables (and others).


netcdf l2p {

   dimensions:
       ni = 1760;
       nj = 40000;
       time = 1;
   variables:
      float lat(nj, ni) ;
         lat:standard_name = "latitude" ;
         lat:units = "degrees_north" ;
         lat:valid_min = -90. ;
         lat:valid_max = 90. ;
         lat:comment = "Geographical coordinates, WGS84 datum" ;
      float lon(nj, ni) ;
         lon:standard_name = "longitude" ;
         lon:units = "degrees_east" ;
         lon:valid_min = -180. ;
         lon:valid_max = 180. ;
         lon:comment = "Geographical coordinates, WGS84 datum" ;
       int time(time);
           time:long_name = "reference time of SST file";
           time:units = "seconds since 1981-01-01 00:00:00";
           time:comment = "Includes leap seconds since 1981" ;
       short sea_surface_temperature(time, nj, ni);
           sea_surface_temperature:long_name = "sea surface skin temperature";
           sea_surface_temperature:standard_name = "sea_surface_skin_temperature";
           sea_surface_temperature:units = "kelvin";
           sea_surface_temperature:add_offset = 290.0;
           sea_surface_temperature:scale_factor = 1.0e-3;
           sea_surface_temperature:valid_min = -32767s;
           sea_surface_temperature:valid_max = 32767s;
           sea_surface_temperature:_FillValue = -32768s;
           sea_surface_temperature:coordinates = "lon lat";
           sea_surface_temperature:comment = "Skin temperature of the ocean";
       short sst_dtime (time, nj, ni); 
           sst_dtime:long_name = "time difference from reference time";
           sst_dtime:units = "second";
           sst_dtime:add_offset = 0s;
           sst_dtime:scale_factor = 1s;
           sst_dtime:valid_min = -32767s;
           sst_dtime:valid_max = 32767s;
           sst_dtime:_FillValue = -32768s;
           sst_dtime:coordinates = "lon lat";
           sst_dtime:comment = "Variable time plus sst_dtime gives seconds after 00:00:00 UTC January 1, 1981";
       byte sses_bias (time, nj, ni);
           sses_bias:long_name = "SSES bias estimate";
           sses_bias:units = "kelvin";
           sses_bias:add_offset = 0.0;
           sses_bias:scale_factor = 0.02;
           sses_bias:valid_min = -127b;
           sses_bias:valid_max = 127b;
           sses_bias:_FillValue = -128b;
           sses_bias:coordinates = "lon lat";
           sses_bias:comment = "Estimated bias as described at http://www.ghrsst.org/SSES-Description-of-schemes.html";
       byte sses_standard_deviation (time, nj, ni);
           sses_standard_deviation:long_name = "SSES standard deviation";
           sses_standard_deviation:units = "kelvin";
           sses_standard_deviation:add_offset = 1.27;
           sses_standard_deviation:scale_factor = 0.01;
           sses_standard_deviation:valid_min = -127b;
           sses_standard_deviation:valid_max = 127b;
           sses_standard_deviation:_FillValue = -128b; 
           sses_standard_deviation:coordinates = "lon lat";
           sses_standard_deviation:comment = "Estimated standard deviation as described at http://www.ghrsst.org/SSES-Description-of-schemes.html";
       byte dt_analysis (time, nj, ni);
           dt_analysis:long_name = "deviation from SST reference climatology";
           dt_analysis:units = "kelvin";
           dt_analysis:add_offset = 0.;
           dt_analysis:scale_factor = 0.1;
           dt_analysis:valid_min = -127b;
           dt_analysis:valid_max = 127b;
           dt_analysis:_FillValue = -128b;
           dt_analysis:coordinates = "lon lat";
           dt_analysis:comment = "Reference is GHRSST L4 OSTIA";
       byte wind_speed (time, nj, ni);
           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:add_offset = 25.4;
           wind_speed:scale_factor = 0.2;
           wind_speed:valid_min = -127b;
           wind_speed:valid_max = 127b;
           wind_speed:_FillValue = -128b;
           wind_speed:coordinates = "lon lat";
           wind_speed:sources = "ECMWF_A";
           wind_speed:comment = "These wind speeds were created by the ECMWF and represent winds at 10 metres above the sea surface.";
       byte wind_speed_dtime_from_sst (time, nj, ni);
           wind_speed_dtime_from_sst :long_name = "time difference of wind speed measurement from sst measurement";
           wind_speed_dtime_from_sst:units = "hour";
           wind_speed_dtime_from_sst:add_offset = 12.7;
           wind_speed_dtime_from_sst:scale_factor = 0.1;
           wind_speed_dtime_from_sst:valid_min = -127b;
           wind_speed_dtime_from_sst:valid_max = 127b;
           wind_speed_dtime_from_sst:_FillValue = -128b;
           wind_speed_dtime_from_sst:coordinates = "lon lat";

wind_speed_dtime_from_sst:comment = "The hours between the wind speed measurement and the SST observation using variable sst_dtime as the reference";

       byte sea_ice_fraction(time, nj, ni);
           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:add_offset = 0.;
           sea_ice_fraction:scale_factor = 0.01 ;
           sea_ice_fraction:valid_min = 0b;
           sea_ice_fraction:valid_max = 100b;
           sea_ice_fraction:_FillValue = -128b;
           sea_ice_fraction:coordinates = "lon lat";
           sea_ice_fraction:sources = "ECMWF_A";
           sea_ice_fraction:comment = "Fractional sea ice cover from the ECMWF_A ice product";
       byte sea_ice_fraction_dtime_from_sst (time, nj, ni);
           sea_ice_fraction_dtime_from_sst :long_name = "time difference of sea ice fraction measurement from sst measurement";
           sea_ice_fraction_dtime_from_sst:units = "hour";
           sea_ice_fraction_dtime_from_sst:add_offset = 0.;
           sea_ice_fraction_dtime_from_sst:scale_factor = 0.1;
           sea_ice_fraction_dtime_from_sst:valid_min = -127b;
           sea_ice_fraction_dtime_from_sst:valid_max = 127b;
           sea_ice_fraction_dtime_from_sst:_FillValue = -128b;
           sea_ice_fraction_dtime_from_sst:coordinates = "lon lat";

sea_ice_fraction_dtime_from_sst:comment = “The hours between the sea ice measurement and the SST observation using variable sst_dtime as the reference";

       byte aerosol_dynamic_indicator(time, nj, ni);
           aerosol_dynamic_indicator:long_name = "aerosol dynamic indicator";
           aerosol_dynamic_indicator:units = " ";
           aerosol_dynamic_indicator:_FillValue = -128b;
           aerosol_dynamic_indicator:add_offset = 0.;
           aerosol_dynamic_indicator:scale_factor = 1.;
           aerosol_dynamic_indicator:valid_min = -127b;
           aerosol_dynamic_indicator:valid_max = 127b;
           aerosol_dynamic_indicator:coordinates = "lon lat";
           aerosol_dynamic_indicator:sources = "SDI";

aerosol_dynamic_indicator:comment = "Estimate of the potential for aerosol contamination based on the SDI product ";

       byte adi_dtime_from_sst(time, nj, ni);
           adi_dtime_from_sst:long_name = "time difference of ADI data from sst measurement";
           adi_dtime_from_sst:units = "hour";
           adi_dtime_from_sst:_FillValue = -128b;
           adi_dtime_from_sst:add_offset = 0.;
           adi_dtime_from_sst:scale_factor = 0.1;
           adi_dtime_from_sst:valid_min = -127b;
           adi_dtime_from_sst:valid_max = 127b;
           adi_dtime_from_sst:coordinates = "lon lat";

adi_dtime_from_sst:comment = "The hours between the aerosol measurement and the SST observation using variable sst_dtime as the reference";

       short l2p_flags(time, nj, ni);
           l2p_flags:long_name = "L2P flags";
           l2p_flags:coordinates = "lon lat";
   	    l2p_flags:valid_min = 0s;
   	    l2p_flags:valid_max = 65535s;
           l2p_flags:flag_meanings = "microwave land ice lake river reserved_for_future_use no_retrieval N2_retrieval N3R_retrieval N3_retrieval D2_retrieval D3_retrieval cloud sun_glint cosmetic_fill validation";
           l2p_flags:flag_masks = 1s, 2s, 4s, 8s, 16s, 32s, 64s, 128s, 256s,  512s, 1024s, 2048s, 4096s, 8192s, 16384s, 32768s ;

l2p_flags:comment = "These flags can be used to further filter data variables";

        byte quality_level (time, nj, ni);
           quality_level:long_name = "SST measurement quality" ;
           quality_level:coordinates = "lon lat" ;
           quality_level:_FillValue = -128b;
   	    quality_level:valid_min = 0b;
   	    quality_level:valid_max = 5b;
           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"; // Optional L2P field (1 byte) byte satellite_zenith_angle(time, nj, ni) ;

   	     satellite_zenith_angle:long_name = "satellite zenith angle" ;
    	     satellite_zenith_angle:standard_name = " zenith_angle";
   	     satellite_zenith_angle:units = "angular_degree" ;
   	     satellite_zenith_angle:_FillValue = -128b ;
   	     satellite_zenith_angle:add_offset = 0. ;
   	     satellite_zenith_angle:scale_factor = 1. ;
   	     satellite_zenith_angle:valid_min = -90b ;
   	     satellite_zenith_angle:valid_max = 90b ;
   	     satellite_zenith_angle:coordinates = "lon lat" ;
   	     satellite_zenith_angle:grid_mapping = "polar_stereographic" ;
       	           satellite_zenith_angle:comment = “The satellite zenith angle at the time of the SST observations” ;

// Global attributes

           :Conventions = "CF-1.4";
           :title = "SENTINEL-3A SLSTR L2P product";
           :summary = "The L2P product for the Sentinel-3A mission.  This data set is the follow-on the ATSR-1, ATSR-2, and AATSR series of instruments dating back to 1991.";
           :references = "http://sentinel.esa.int/handbooks/SLSTR_product_handbook.pdf";
           :institution = "ESA";
           :history = "processor XXX.YY";
           :comment = "SST from Sentinel-3A";
           :license = "These data are available free of charge under the GMES data policy.";
           :id = "SLSTR-EUR-L2P-Sentinel3A-v1";
           :naming_authority = "org.ghrsst";
           :product_version = "1.0";
           :uuid = "D7A88FA8-7421-4039-807C-B551D638EDC6";
           :gds_version_id = "2.0";
           :necdf_version_id = "4.1";
           :date_created = "20100201T120000Z";
           :file_quality_level=1;
           :spatial_resolution = "1 km";
           :start_time = "20100131T001223Z";
           :time_coverage_start = "20100131T001223Z";
           :stop_time = "20100131T001418Z";
           :time_coverage_end = "20100131T001418Z";
           :northernmost_latitude = 85.;
           :sourthenmost_latitude = -85.;
           :westernmost_longitude = -180.;
           :easternmost_longitude = 180.;
           :source = "S3A_SLSTR OSTIA ECMWF_A";
           :platform = "SENTINEL_3A";
           :sensor = "SLSTR";
           :Metadata_Conventions = "Unidata Observation Dataset v1.0";
           :metadata_link = "http://data.nodc.noaa.gov/waf/FGDC-GHRSST_all-SLSTR-EUR-L2P-Sentinel3A-v1.html";
           :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.01";
           :geospatial_lon_units = "degrees east";
           :geospatial_lon_resolution = "0.01";
           :acknowledgment = "Please acknowledge the use of these data with the following statement: These data were provided by GHRSST and its European Regional Data Assembly Center";
           :creator_name = "European Space Agency";
           :creator_email ="eohelp@esa.int";
           :creator_url = "http://sentinel.esa.int";
           :project = "Group for High Resolution SST";
           :publisher_name = "GHRSST Project Office";
           :publisher_url ="http://www.ghrsst.org";
           :publisher_email ="ghrsst-po@nceo.ac.uk";
           :processing_level = "L2P";
           :cdm_data_type = "swath";