saeon_netcdf_guidance

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
saeon_netcdf_guidance [2022/07/11 13:57] – [NetCDF File Structure] lindsaysaeon_netcdf_guidance [2022/07/28 12:23] (current) lindsay
Line 32: Line 32:
 | creator_name  | “John Smith”  | The name of the person principally responsible for creating this data.  | | creator_name  | “John Smith”  | The name of the person principally responsible for creating this data.  |
 | creator_email  | “jsmith@email.com”  | The email address of the person principally responsible for creating this data.  | | creator_email  | “jsmith@email.com”  | The email address of the person principally responsible for creating this data.  |
-| project(CONDITIONAL)  | “Agulhas System Climate Array”  | The name of the project(s) principally responsible for originating this data.  | +| project (CONDITIONAL)  | “Agulhas System Climate Array”  | The name of the project(s) principally responsible for originating this data.  | 
-| publisher_name(CONDITIONAL)  | “South African Environmental Observation Network”  | The name of the person responsible for publishing the data file or product to users, with its current metadata and format. +| publisher_name (CONDITIONAL)  | “South African Environmental Observation Network”  | The name of the person responsible for publishing the data file or product to users, with its current metadata and format. 
-| publisher_email(CONDITIONAL)  | “curation@saeon.ac.za”  | The email address of the person responsible for publishing the data file or product to users, with its current metadata and format.  |+| publisher_email (CONDITIONAL)  | “curation@saeon.ac.za”  | The email address of the person responsible for publishing the data file or product to users, with its current metadata and format.  |
 | geospatial_lat_min  | “-34.678”  | Describes the southernmost latitude covered by the dataset. A value between -90 and 90 decimal degrees North.  | | geospatial_lat_min  | “-34.678”  | Describes the southernmost latitude covered by the dataset. A value between -90 and 90 decimal degrees North.  |
 | geospatial_lat_max  | “-34.678”  | Describes the northernmost latitude covered by the dataset. A value between -90 and 90 decimal degrees North.  | | geospatial_lat_max  | “-34.678”  | Describes the northernmost latitude covered by the dataset. A value between -90 and 90 decimal degrees North.  |
Line 48: Line 48:
 | time_coverage_end | “2018-07-05T11:55:10Z” | End time of the data in this dataset. Use ISO 8601 standard for date and time. | | time_coverage_end | “2018-07-05T11:55:10Z” | End time of the data in this dataset. Use ISO 8601 standard for date and time. |
 | date_modified (CONDITIONAL) | “2018-08-12T10:30:00Z” | The date on which this file was last modified. Use ISO 8601 standard for date and time. | | date_modified (CONDITIONAL) | “2018-08-12T10:30:00Z” | The date on which this file was last modified. Use ISO 8601 standard for date and time. |
-| date_metadata_modified(CONDITIONAL) | “2018-08-12T10:30:00Z” | The date on which this metadata was last modified. Use ISO 8601 standard for date and time.  |+| date_metadata_modified (CONDITIONAL) | “2018-08-12T10:30:00Z” | The date on which this metadata was last modified. Use ISO 8601 standard for date and time.  |
 | %%instrument%%  | %%“SBE9/11 plus CTD”%%  | Name of the contributing instrument or sensor used to create this dataset.  | | %%instrument%%  | %%“SBE9/11 plus CTD”%%  | Name of the contributing instrument or sensor used to create this dataset.  |
-| lineage(RECOMMENDED)  | “The CTD raw data was converted to scientific units using SBEDataProcessing software (ver 7.26.7.114). The following modules (SBEDataProcessing) were then run on the converted data using the recommended default values: Align CTD, Filter, Loop Edit and Cell Thermal Mass. The data was then split into the up cast and the down cast. The downcast data was then bin averaged.”  | Information about how the data has been produced and processed, modified.  |+| lineage (RECOMMENDED)  | “The CTD raw data was converted to scientific units using SBEDataProcessing software (ver 7.26.7.114). The following modules (SBEDataProcessing) were then run on the converted data using the recommended default values: Align CTD, Filter, Loop Edit and Cell Thermal Mass. The data was then split into the up cast and the down cast. The downcast data was then bin averaged.”  | Information about how the data has been produced and processed, modified.  | 
 + 
 +=== Dimensions === 
 + 
 +NetCDF dimensions define the shape, grid or coordinate system of a variable. A dimension has both a name and a length. A dimension length is an arbitrary positive integer, except for cases where one dimension, at most, is UNLIMITED and can grow along that dimension. Once the data feature type has been identified, the US National Oceanographic Data Center [[https://www.nodc.noaa.gov/data/formats/netcdf/v1.1/|netCDF templates]] can be used as a guide for which dimensions to define in your file. 
 + 
 +Dimensions can be used to represent physical dimensions, for example, “time” (T), “latitude” (Y), “longitude” (X), or “depth” (Z). A dimension can also be used to index other quantities, for example, station number or model number. It is recommended that dimensions appear in the relative order T, then Z, then Y, then X, where applicable. 
 + 
 +Something to keep in mind in terms of naming dimensions and variables is the netCDF coordinate variable. This is when a variable has the exact same name as a dimension and is most commonly used for coordinates such as lat, lon, depth and/or time. This may not necessarily have special meaning to the netCDF library, however visualisation software treats this in a special way. 
 + 
 +=== Variables === 
 + 
 +Variables in a netCDF contain the parameters measured by an instrument. Variables in netCDF files can be one of six types (char, byte, short, int, float or double). Each variable has a data type, name and a shape which is defined by its specified dimensions. 
 + 
 +Our guidance does not standardise variable names, for example, a suitable variable name for temperature data could be anything from: Temperature, Temp or TEMP, so long as the variable name sufficiently describes that data which it contains. Keep in mind the naming of netCDF //coordinate variables//
 + 
 +Each variable has a corresponding set of attributes which provide information about the data for the end user. The following tables contain variable attributes derived from CF and ACDD conventions required by SAEON ODP for multidimensional data in netCDF format. 
 + 
 +Note: The //long_name// attribute is defined to contain a long descriptive name of the variable which may, for example, be used for labelling plots. The //standard_name// attribute is the name used to identify the physical quantity and must be taken from the [[https://cfconventions.org/standard-names.html|CF standard name table]]. Parameters with no suitable standard_name should be described using the long_name attribute only. 
 + 
 +=== Variable Attributes === 
 + 
 +== Time coordinates == 
 + 
 +Time data in a netCDF is represented as an integer representing an interval from some reference time. Time variables must include a clear units attribute, as there is no default value. The units attribute for a time variable is a string value in the format recommended by UDUNITS. Commonly these strings include “//days//”, “//hours//”, “//minutes//” or “//seconds//” //since// a specific date, time and time zone (e.g. “seconds since 1970-01-01 00:00:00 UTC”). Use Double data type. 
 + 
 +__Table 2. List of time variable attributes for SAEON netCDF files__ 
 + 
 +//All attributes are MANDATORY to include in your netCDF unless stated: CONDITIONAL= include these fields if the information exists, or RECOMMENDED = it is recommended to include these fields but not mandatory.// 
 + 
 +| **Attribute** | **Example** | **Description** | 
 +| standard_name | “time” | A description of the variable’s content from the CF standard name table. | 
 +| long_name | “time” | A descriptive name that indicates a variable’s content. | 
 +| units | “seconds since 1970-01-01 00:00:00 UTC” | Use approved CF convention with approved UDUNITS obtained from CF standard name table. Please contact SAEON curation if help is required. | 
 +| calendar (CONDITIONAL) | “gregorian” | Calendar used for encoding time axes. See CF documentation for clarification. Default is "gregorian". | 
 +| valid_min (RECOMMENDED) | “1530779700” | Smallest valid value of a variable. Should be of the same type as the variable type. | 
 +| valid_max (RECOMMENDED) | “1530791710” | Largest valid value of a variable. Should be of the same type as the variable type. | 
 +| axis | “T” | Identifies the time coordinate. Set value of “T”. | 
 +| comment (RECOMMENDED) | “....” | Miscellaneous information about the data, that cannot be described in any of the other available attributes. | 
 + 
 +== Horizontal coordinates == 
 + 
 +SAEON ODP uses the WGS84 coordinate reference system in decimal degrees when describing latitude and longitude. 
 + 
 +__Table 3. List of longitude and latitude variable attributes for SAEON netCDF files__ 
 + 
 +//All attributes are MANDATORY to include in your netCDF unless stated: CONDITIONAL= include these fields if the information exists, or RECOMMENDED = it is recommended to include these fields but not mandatory.// 
 + 
 +| **Attribute** | **Example** | **Description** | 
 +| standard_name | “latitude”or“longitude” | A description of the variable’s content from the CF standard name table. | 
 +| long_name | “latitude”or“longitude” | A descriptive name that indicates a variable’s content. | 
 +| units | “degrees_north” (LATITUDE)or “degrees_east” (LONGITUDE) | Use approved CF convention with approved UDUNITS obtained from CF standard name table. | 
 +| valid_min (RECOMMENDED) | “-34.678” (LATITUDE)or“26.012” (LONGITUDE) | Smallest valid value of a variable. Should be of the same type as the variable type. | 
 +| valid_max (RECOMMENDED) | “-34.678” (LATITUDE)or“26.012” (LONGITUDE) | Largest valid value of a variable. Should be of the same type as the variable type. | 
 +| axis | “Y” (LATITUDE)or “X” (LONGITUDE) | Identifies the horizontal coordinate. Set values of “X” or “Y”. | 
 +| comment (RECOMMENDED) | “....” | Miscellaneous information about the data, that cannot be described in any of the other available attributes. | 
 + 
 +== Vertical coordinates == 
 + 
 +Depth or height variables should be measured in SI units, most commonly “metres”. Pressure measurements should not be labelled as a depth or height variable, but as a separate parameter. 
 + 
 +__Table 4. List of depth variable attributes for SAEON netCDF files__ 
 + 
 +//All attributes are MANDATORY to include in your netCDF unless stated: CONDITIONAL= include these fields if the information exists, or RECOMMENDED = it is recommended to include these fields but not mandatory.// 
 + 
 +| **Attribute** | **Example** | **Description** | 
 +| standard_name | “depth” | A description of the variable’s content from the CF standard name table. | 
 +| long_name | “depth” | A descriptive name that indicates a variable’s content. | 
 +| units | “m” | Use approved CF convention with approved UDUNITS obtained from CF standard name table. | 
 +| positive | “down” | The direction of increasing vertical coordinate values corresponding to a reference point. Either “up” or “down”. | 
 +| valid_min (RECOMMENDED) | “10” | Smallest valid value of a variable. Should be of the same type as the variable type. | 
 +| valid_max (RECOMMENDED) | “1256” | Largest valid value of a variable. Should be of the same type as the variable type. | 
 +| axis | “Z” | Identifies the vertical coordinate. Set value of “Z”. | 
 +| comment (RECOMMENDED) | “....” | Miscellaneous information about the data, that cannot be described in any of the other available attributes. | 
 + 
 +== Geophysical parameters == 
 + 
 +These variables contain the data collected by an instrument or sensor. 
 + 
 +Note: For cases where a netCDF contains two sensors measuring the same variable it is important that these are easily differentiated, community best practise indicates one of the variable names is suffixed with “_2” (e.g. “Temp” and “Temp_2”). For guidance on variable naming conventions one can follow community guidance (e.g. [[https://github.com/aodn/imos-toolbox/blob/master/IMOS/imosParameters.txt|IMOS naming toolbox]]) or contact the [[curation@saeon.nrf.ac.za|SAEON Data Curators]]. 
 + 
 +__Table 5. List of geophysical parameter variable attributes for SAEON netCDF files__ 
 + 
 +//All attributes are MANDATORY to include in your netCDF unless stated: CONDITIONAL= include these fields if the information exists, or RECOMMENDED = it is recommended to include these fields but not mandatory.// 
 + 
 +| **Attribute** | **Example** | **Description** | 
 +| standard_name (CONDITIONAL) | “sea_water_temperature” | A description of the variable’s content from the CF standard name table. | 
 +| long_name | “Temperature” | A descriptive name that indicates a variable’s content. | 
 +| units | “degree_C” | Use approved CF convention with approved UDUNITS obtained from CF standard name table. | 
 +| scale_factor (CONDITIONAL) | “0.01” | If the data uses a scale_factor other than 1. Should be of the same type as the variable type. | 
 +| add_offset (CONDITIONAL) | “25.0" | If the data uses an add_offset other than 0. Should be of the same type as the variable type. | 
 +| _FillValue (CONDITIONAL) | “-9999” | This value is considered to be a special value that indicates undefined or missing data. Should be of the same type as the variable type. | 
 +| valid_min (RECOMMENDED) | “2.565” | Smallest valid value of a variable. Should be of the same type as the variable type. | 
 +| valid_max (RECOMMENDED) | “23.198” | Largest valid value of a variable. Should be of the same type as the variable type. | 
 +| coordinates (RECOMMENDED) | “T Y X Z” | This attribute contains a space separated list of all the coordinates corresponding to the variable. | 
 +| comment (RECOMMENDED) | “....” | Miscellaneous information about the data, that cannot be described in any of the other available attributes. | 
 + 
 +== Quality control flags (CONDITIONAL) == 
 + 
 +If applicable to the platform, quality control flags can be self describing variables that show some sort of assessment to identify possible errors in the data. 
 + 
 +__Table 6. List of quality control flag variable attributes for SAEON netCDF files__ 
 + 
 +//All attributes are MANDATORY to include in your netCDF unless stated: CONDITIONAL= include these fields if the information exists, or RECOMMENDED = it is recommended to include these fields but not mandatory.// 
 + 
 +| **Attribute** | **Example** | **Description** | 
 +| standard_name | “....” | A description of the variable’s content from the CF standard name table. | 
 +| long_name | “quality flag for sea_water_temperature” | A descriptive name that indicates a variable’s content. | 
 +| _FillValue (CONDITIONAL) | “-99b” | This value is considered to be a special value that indicates undefined or missing  quality control flags in the data. | 
 +| flag_values | 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b | List of flag values used in the data. | 
 +| flag_meanings | "No_QC_performed Good_data Probably_good_data Bad_data_that_are_correctable Bad_data Value_changed Missing_value" | The meaning of each flag in the same order as flag_values. | 
 +| comment (RECOMMENDED) | “....” | Miscellaneous information about the data, that cannot be described in any of the other available attributes. | 
 + 
 +=== NetCDF manipulation tools === 
 + 
 +  * [[https://downloads.unidata.ucar.edu/netcdf/|NetCDF library software]]: //ncdump// can convert a netCDF binary file to CDL text. 
 +  * [[https://www.giss.nasa.gov/tools/panoply/|Panoply]] and [[http://cirrus.ucsd.edu/~pierce/software/ncview/index.html|Ncview]] are great visualisation tools. 
 +  * [[http://nco.sourceforge.net/|NCO]] is a command-line toolkit for manipulating netCDF files: //ncatted// and //ncrename// are specifically useful for editing metadata on the fly.
  
  
  • saeon_netcdf_guidance.1657547866.txt.gz
  • Last modified: 2022/07/11 13:57
  • by lindsay