Difference between revisions of "NetCDF-CF File Examples for Satellite Swath Data"

From Earth Science Information Partners (ESIP)
(An example of packaging satellite data and metadata into netCDF using the CF metadata model)
(No difference)

Revision as of 11:55, April 17, 2013

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";