A description of the NetCDF file format specification for glider data.
Edit me

Introduction

This page provides an in-depth description of the NetCDF file format specification requirements of the U.S. IOOS National Glider Data Assembly Center.

The NetCDF file specification detailed below serves four primary purposes:

  • It helps to ensure that glider data submitted to the NGDAC contain complete metadata records that can be harvested and stored by existing catalogs and registries.
  • It ensures that submitted files comply with the required metadata conventions: CF-1.11, ACDD-1.3, IOOS-1.2, Unidata Dataset Discovery v1.0, COARDS, NCEI, and OG1.0. Compliance with these conventions promotes consistency, interoperability, and reliable interpretation across data systems and applications.
  • It provides a simple file format that is easily created by glider operators and data managers. The flexibility provided by this specification allows for the creation of compound data products that result in easier, more intuitive methods of access by a wide range of end-users and in a variety of formats (i.e.: csv, tsv, json, geoJson, etc.).
  • It preserves the original resolution of the data sets.

A thorough reading is strongly recommended prior to beginning the submission process. File specification and metadata requirements are organized into the following sections:

For convenience, an index of required attributes and variables (linking to descriptions in the text) is provided at the bottom of this page.

Glider Profile NetCDF File Example

Examples of the file specifications are available in the CDL format templates.

The Glider Profile NetCDF CDL format file example identifies all requires attributes. The NGDAC Metadata working directory provides modular JSON templates for the required attributes. These templates separate global metadata from variable definitions to improve clarity, reuse, and maintainability, and can be used as a guide when creating or validating NetCDF files. The included Python builder script reads all .json files, applies the metadata definitions, and generates the final output.

File Naming Conventions

The following file types are accepted by the U.S IOOS National Glider Data Assembly Center, along with the required naming conventions for each:

  • Real-time or near-real-time data:
    • GLIDER_YYYYMMDDTHHmmssZ.nc
    • GLIDER_YYYYMMDDTHHmmssZ_rt.nc
    • GLIDER_YYYYMMDDTHHmmssZ_R.nc

    These files contain data gathered during deployment and may include a subset of the full-resolution data available in delayed-mode files.

  • Delayed-mode data:
    • GLIDER_YYYYMMDDTHHmmssZ_delayed.nc

    These files contain data gathered after the glider is recovered. Delayed mode data may include a quality assessment, but this is not required currently.

Where

  • GLIDER is the identifying name or type abbreviation for the glider.
  • YYYYMMDDTHHmmssZ is the ISO 8601 formatted date representing the start time of the data acquisition, followed by Z to denote UTC time, not a local time zone
  • rt or R indicates real-time or near-real-time data. Note: not using _rt or _R is also acceptable.
  • delayed indicates delayed-mode (post-recovery) data acquisition.

Ideally, the GLIDER_YYYYMMDDTHHmmssZ(_rt, _R).nc files will be provided by the individual operators during the deployment and the GLIDER_YYYYMMDDTHHmmssZ_delayed.nc files will be provided after the glider has been recovered and the full data set processed. It is expected, where applicable, that all files will contain the appropriate VARIABLE_qc variables to convey some level of quality assurance for the data. The relationship between these variables and the sensor variables is discussed in the Variables section below.

Global Attributes

The following is the list of required global attributes that must be included in each NetCDF file submitted to the NGDAC. This list was created from a variety of sources with the goal of providing a complete metadata record of the data set. More information on these sources can be found at the following locations:

  • Climate and Forecast (CF): Especially the section on Attributes (section 2.6, as of CF v1.13),
  • Attribute Convention for Data Discovery (ACDD),
  • NOAA National Centers for Environmental Information (NCEI) netCDF Templates: Guidance from NCEI on netCDF templates to promote good stewardship and archiving. NCEI Templates and global attribute suggestions
  • Integrated Marine Observing System (IMOS): Delayed Mode QA/QC Best Practice Manual,
  • Integrated Ocean Observing System Metadata Profile Version 1.2 [IOOS-1.2] (https://ioos.github.io/ioos-metadata/ioos-metadata-profile-v1-2.html),
  • The Cooperative Ocean-Atmosphere Research Data Service COARDS, and
  • Ocean GLiders Format[OG1.0] (https://oceangliderscommunity.github.io/OG-format-user-manual/OG_Format.html).

Caveats

There are a few important points to mention with regards to global attributes:

  1. All attributes listed below are REQUIRED and should have meaningful values assigned to them. In the event that a meaningful value cannot be assigned, set the value to a single whitespace character enclosed in double quotes. For example, if the data set has not been modified, you should set the date_modified global attribute value to " ".
  2. For attributes with timestamp values (i.e.: date_created, date_modified, date_issued), use the ISO 8601:2004 ‘extended’ format. This format has the general form: YYYY-MM-DDThh:mm:ssZ.
  3. All global attributes must be string attributes.
  4. The name and a description of each attribute are listed below. An example is given where the selection of an appropriate value may be unclear. Please use the specified Value listed under the attribute name for the following attributes: Conventions, Metadata_Conventions, format_version, standard_name_vocabulary.

Description and Examples of Required Global Attributes

Conventions

Version of the conventions followed by the file format specification.

Value:
“CF-1.6, ACDD-1.3, IOOS-1.2”

Metadata_Conventions

Unidata NetCDF group’s Attribute Conventions for Dataset Discovery. These conventions identify and define a list of NetCDF global attributes recommended for describing a NetCDF dataset to discovery systems such as Digital Libraries. Software tools will use these attributes for extracting metadata from datasets, and exporting to Dublin Core, DIF, ADN, FGDC, ISO 19115 etc. metadata formats.

Value:
“CF-1.6, Unidata Dataset Discovery v1.0, COARDS”

acknowledgement

String used to properly acknowledge use of the data.

Example:
“This work supported by funding from NOAA”

comment

Free-form field used to provide additional information on the data set.

contributor_name

A comma separated list of contributors to this data set.

Example:
“Jerry Garcia, Bob Weir, Bill Graham”

contributor_role

A comma separated list of the roles of those specified using the contributor_name attribute.

Example:
“Principal Investigator, Principal Investigator, Data Manager”

creator_email

Email address for person who collected the data.

creator_name

Name of the person who collected the data.

creator_url

URL for person who collected the data.

date_created

Creation date of the file. Use the ISO 8601:2004 Extended Date/Time format.

Example:
“1977-05-08T20:00:00Z”

date_issued

The date on which this data was formally issued. Use the ISO 8601:2004 Extended Date/Time format.

Example:
“1992-06-25T20:00:00Z”

date_modified

Modification date of the file, if any. Use the ISO 8601:2004 Extended Date/Time format.

Example:
“1978-06-04T20:00:00Z”

format_version

NetCDF file format version.

Value:
“IOOS_Glider_NetCDF_v4.0.nc”

history

This is a string with one or more lines, each of which has the ISO 8601:2004 Extended Date/Time Format (EDTF) and the name and command line parameters of the program used to create or change the data and/or other information about the change.

Example:
“2014-07-21T00:00:00Z: /bin/writeIoosNc.py”

id

A human readable unique identifier for data set. We recommend using the trajectory variable string name, which must have the following format:

GLIDER-YYYYMMDDTHHmm, where GLIDER is the name of the glider and YYYYMMDDTHHmm is the deployment date/time.

Example:
“ru30-20140101T0000”

institution

Institution of the person or group that collected the data. This value should be identical to the “Operators” specified on the data providers’ page.

To maximize the findability of glider data submitted by a single institution, data providers should ensure that they consistently use the same spelling of an institution’s name in each data submission. Before submitting data to NGDAC, data providers can verify that the institution value matches that already associated with NCEI-archived datasets by referring to the NODC COLLECTING INSTITUTION NAMES THESAURUS value list provided on the Keywords tab of NCEI’s landing page for the NGDAC archive collection.

  • If the institution is present in that list, use NCEI’s spelling of the institution name to populate the global attribute institution in the NetCDF files to be submitted for archival.
  • If the institution is not present, check if the institution has a ROR ID (at https://ror.org).
    • If it does, use the name associated with that ROR ID. If the institution does not have its own ROR ID, but is nested within a parent institution that does have its own ROR ID, consider using the parent institution name.
    • Otherwise, use the name that the organization itself recommends for use (by checking the organization website, for example).
Example:
“Rutgers University”

keywords

A comma separated list of keywords coming from the controlled keyword vocabulary identified in the keywords_vocabulary global attribute.

Example:
“AUVS > Autonomous Underwater Vehicles, Oceans > Ocean Pressure > Water Pressure, Oceans > Ocean Temperature > Water Temperature, Oceans > Salinity/Density > Conductivity, Oceans > Salinity/Density > Density, Oceans > Salinity/Density > Salinity”

keywords_vocabulary

Identifies the controlled keyword vocabulary used to specify the values within the keywords global attribute.

Example:
“GCMD Science Keywords”

license

Describe the restrictions to data access and distribution.

Example:
“This data may be redistributed and used without restriction.”

This attribute provides a link to a complete metadata record for this data set or the collection that contains this data set.

naming_authority

Backward URL of institution.

Example:
“edu.rutgers.marine.rucool”

platform_type

Glider type.

Example:
“Seaglider”

No other values will be accepted for this attribute.

processing_level

Provide a description of the processing or quality control level of the data.

Example:
“Data provided as is with no expressed or implied assurance of quality assurance or quality control.”

project

The project under which the data was collected.

To maximize the findability of glider data collected within the same project, data providers should ensure that they consistently use the same spelling of a project’s name in each data submission. Before submitting data to NGDAC, data providers can verify that the project value matches that already associated with NCEI-archived datasets by referring to the NODC PROJECT NAMES THESAURUS value list provided on the Keywords tab of NCEI’s landing page for the NGDAC archive collection.

  • If the project is present in that list, use NCEI’s spelling of the project name to populate the global attribute “project” in the NetCDF files to be submitted for archival.
  • If the project is not present in that list, check if it’s present in the Provider Project Names list, also on the Keywords tab of NCEI’s landing page for the NGDAC archive collection
    • If it is present on that list, use that spelling of the project name to populate the global attribute project in the NetCDF files to be submitted for archival.
    • If it is not, you can use any project name that you consider suitable for your data.
Example:
“TEMPESTS”

publisher_email

Email address of the publisher of the data.

publisher_name

Name of the publisher of the data.

publisher_url

A URL for the publisher of the data.

references

Published or web-based references that describe the data or methods used to produce it.

sea_name

The names of the sea in which the data were collected. Use NODC sea names table. Currently located at: http://www.nodc.noaa.gov/General/NODC-Archive/seanamelist.txt.

source

The input data sources regardless of the method of production method used.

Example:
“Observational data from a profiling glider.”

standard_name_vocabulary

Version of CF standard names used for variables. Current standard name table (e.g. “Standard Name Table (Version 95, 16 September 2026)”)

summary

Provide a useful summary or abstract for the data in the file. This summary is used as the primary piece of information describing the data set for discovery and archiving purposes. As such, careful thought should be put into constructing the summary.

Example:
“Slocum glider dataset gathered as part of the TEMPESTS (The Experiment to Measure and Predict East coast STorm Strength), funded by NOAA through CINAR (Cooperative Institute for the North Atlantic Region). This dataset contains physical oceanographic measurements of temperature, conductivity, salinity, density and estimates of depth-average currents.”

Regardless of the summary added by the data provider, the following summary is added to this attribute prior to archiving by NCEI:

“Addendum: The Integrated Ocean Observing System’s National Glider Data Assembly Center receives sets of individual NetCDF files comprising an individual glider deployment from data operators and providers around the world. These files are checked for compliance and then aggregated into a single data set representing the entire deployment and made available via ERRDAP and THREDDS end points, making the data sets available to the public. Currently, the data sets provide measurements of physical oceanographic properties (temperature, salinity, conductivity and density). Future plans, currently under development, include providing access to biological and chemical properties. Once the deployment has been completed, as specified by the glider operator or data provider, the data set is marked for archiving, at which point it is added to the National Centers for Environmental Information (NCEI, formerly NODC) data archive to create a permanent archive of the data set.”

title

We recommend using the trajectory variable string name in the format GLIDER-YYYYMMDDTHHmm. This value must exactly match the deployment folder name created during deployment setup.

Where GLIDER is the name of the glider and YYYYMMDDTHHmm is the deployment date/time.

Example:
“ru30-20140101T0000”

wmo_id

A string attribute specifying the platform’s unique WMO ID. The WMO ID identifies an individual glider deployed at a specific location and must be requested from the NGDAC administrator. See Requesting a WMO ID for details.

Example:
“4801518”

Variables

The NetCDF file specification contains 3 core variable types which relate to how the individual NetCDF files are aggregated by the NGDAC:

  • time-series: dimensioned along the time axis to provide access to the data as time-series.
  • profile: dimensionless variables that provide access to data on a profile-by-profile basis
  • container: dimensionless variables used to capture metadata regarding the platform and instrumentation on board the glider.

Most of the time-series variables and many of the profile variables have corresponding data quality variables, which are referenced via the ancillary_variables variable attribute. Each variable has the same dimension as its associated quality control variable. While no CF standard names exist for these quality control variables, following CF conventions, a standard_name modifier may be appended to the corresponding variable’s standard name to create the standard name for the quality control flag.

For example, as seen in the CDL example below, the temperature variable has a corresponding data quality variable temperature_qc. The standard_name attribute of that quality control variable contains the CF standard name of the variable it references with “status_flag” appended, i.e. “sea_water_temperature status_flag.” Both variables have the same dimension, time.

double temperature(time) ;
        temperature:ancillary_variables = "temperature_qc" ;
 byte temperature_qc(time) ;
        temperature_qc:standard_name = "sea_water_temperature status_flag" ;
Important Note:

The NGDAC reserves the following QC variable names to populate with the results of the QARTOD tests:

  • qartod_(variable_name)_gross_range_flag
  • qartod_(variable_name)_spike_flag
  • qartod_(variable_name)_rate_of_change_flag
  • qartod_(variable_name)_flat_line_flag
  • qartod_(variable_name)_primary_flag

When checking your netCDF file, the QC process skips any variable that has a corresponding data quality variable starting with ‘qartod_’.

The following is a list and description of all variables and corresponding variable attributes that are REQUIRED for the file to be accepted by the NGDAC. A CDL description of each variable is located below the formal description. Examples of the various attributes have been provided for reference, but each data provider is encouraged to modify these values if they feel it is necessary, particularly for the following variable attributes:

  • comment,
  • valid_min,
  • valid_max,
  • accuracy,
  • precision,
  • resolution,
  • platform:wmo_id,
  • platform:id,
  • platform:long_name, and
  • All instrument_ctd attributes, except instrument_ctd:platform.

Dimensions

NetCDF files submitted by the individual glider operators contain two dimension variables:

  • time: time when the individual sensor record was recorded.
  • traj_strlen: string specifying the trajectory name.

According to CF Conventions, dimension variables are not allowed to have missing values (i.e.: _FillValue).

The aggregated data sets created by the NGDAC contain the following additional dimensions to increase the data access methods and are NOT included in the individual profile NetCDF files submitted by the glider operators:

  • trajectory,
  • profile,
  • obs, and
  • wmo_id_strlen.

Trajectory Variables

The trajectory variable stores a character array that identifies the deployment during which the data was gathered. This variable is used by the NGDAC to aggregate all individual NetCDF profiles containing the same trajectory value into a single trajectory profile data set. This value should be a character array that uniquely identifies the deployment. Each individual NetCDF file from the deployment data set must have the same value.

trajectory

   
Dimension traj_strlen
Data Type string stored as char array
Value Type array
_FillValue ””
Description String representation of the trajectory specified using the format: GLIDER-YYYYMMDDTHHmm.

CDL example with REQUIRED attributes:

 char trajectory(traj_strlen) ;
        trajectory:cf_role = "trajectory_id" ;
        trajectory:comment = "A trajectory is a single deployment of a glider and may span multiple data files." ;
        trajectory:long_name = "Trajectory/Deployment Name" ;

Time-Series Variables

The following variables are dimensioned along the time axis.

time

IMPORTANT: The CF specification does not allow coordinate variables to contain missing _FillValue values.

   
Dimension time
Data Type double
Value Type array
Description An array containing the time stamp corresponding to the acquisition of the sensor data for the profile.

CDL example with REQUIRED attributes:

double time(time) ;
	time:ancillary_variables = "time_qc" ;
	time:comment = "Measured or calculated time at each point in the time-series" ;
	time:calendar = "standard" ;
	time:long_name = "Time" ;
	time:observation_type = "measured" ;
	time:standard_name = "time" ;
	time:units = "seconds since 1970-01-01T00:00:00Z" ;

time_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the time variable.

CDL example with REQUIRED attributes:

byte time_qc(time) ;
	time_qc:_FillValue = -127b ;
	time_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	time_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	time_qc:long_name = "time Quality Flag" ;
	time_qc:standard_name = "time status_flag" ;
	time_qc:valid_max = 9b ;
	time_qc:valid_min = 0b ;

lat

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the time-series of measured and/or interpolated latitudes for the profile.

CDL example with REQUIRED attributes:

double lat(time) ;
	lat:_FillValue = -999. ;
	lat:standard_name = "latitude" ;
	lat:units = "degrees_north" ;
	lat:ancillary_variables = "lat_qc" ;
	lat:comment = "Interpolated latitude at each point in the time-series" ;
	lat:long_name = "Profile Latitude" ;
	lat:observation_type = "calculated" ;
	lat:platform = "platform" ;
	lat:valid_max = 90. ;
	lat:valid_min = -90. ;
	lat:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	lat:reference = "WGS84" ;

lat_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the lat variable.

CDL example with REQUIRED attributes:

byte lat_qc(time) ;
	lat_qc:_FillValue = -127b ;
	lat_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	lat_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	lat_qc:long_name = "latitude Quality Flag" ;
	lat_qc:standard_name = "latitude status_flag" ;
	lat_qc:valid_max = 9b ;
	lat_qc:valid_min = 0b ;

lon

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the time-series of measured and/or interpolated longitudes for the profile.

CDL example with REQUIRED attributes:

double lon(time) ;
	lon:_FillValue = -999. ;
	lon:standard_name = "longitude" ;
	lon:units = "degrees_east" ;
	lon:ancillary_variables = "lon_qc" ;
	lon:comment = "Interpolated longitude at each point in the time-series" ;
	lon:long_name = "Profile Longitude" ;
	lon:observation_type = "calculated" ;
	lon:platform = "platform" ;
	lon:valid_max = 180. ;
	lon:valid_min = -180. ;
	lon:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	lon:reference = "WGS84" ;

lon_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the lon variable.

CDL example with REQUIRED attributes:

byte lon_qc(time) ;
	lon_qc:_FillValue = -127b ;
	lon_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	lon_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	lon_qc:long_name = "longitude Quality Flag" ;
	lon_qc:standard_name = "longitude status_flag" ;
	lon_qc:valid_max = 9b ;
	lon_qc:valid_min = 0b ;

pressure

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the time-series of measured and/or interpolated pressures for the profile.

CDL example with REQUIRED attributes:

double pressure(time) ;
	pressure:_FillValue = -999. ;
	pressure:platform = "platform" ;
	pressure:instrument = "instrument_ctd" ;
	pressure:ancillary_variables = "pressure_qc" ;
	pressure:comment = "comment_here" ;
	pressure:standard_name = "sea_water_pressure" ;
	pressure:long_name = "Sea Water Pressure" ;
	pressure:observation_type = "measured" ;
	pressure:positive = "down" ;
	pressure:reference_datum = "sea-surface" ;
	pressure:precision = 0.01 ;
	pressure:resolution = 0.01 ;
	pressure:accuracy = 0.01 ;
	pressure:valid_max = 2000. ;
	pressure:valid_min = 0. ;
	pressure:units = "dbar" ;
	pressure:coverage_content_type = " " ;
	pressure:missing_value = -999. ;
	pressure:standard_name_vocabulary = "CF Standard Name Table v75" ;
	pressure:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;

pressure_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the pressure variable.

CDL example with REQUIRED attributes:

byte pressure_qc(time) ;
	pressure_qc:_FillValue = -127b ;
	pressure_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	pressure_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	pressure_qc:long_name = "pressure Quality Flag" ;
	pressure_qc:standard_name = "sea_water_pressure status_flag" ;
	pressure_qc:valid_max = 9b ;
	pressure_qc:valid_min = 0b ;

depth

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the time-series of measured and/or interpolated depths for the profile.

CDL example with REQUIRED attributes:

double depth(time) ;
	depth:_FillValue = -999. ;
	depth:platform = "platform" ;
	depth:instrument = "instrument_ctd" ;
	depth:ancillary_variables = "depth_qc" ;
	depth:comment = "comment_here" ;
	depth:standard_name = "depth" ;
	depth:long_name = "Depth" ;
	depth:observation_type = "calculated" ;
	depth:positive = "down" ;
	depth:reference_datum = "sea-surface" ;
	depth:precision = 0.01 ;
	depth:resolution = 0.01 ;
	depth:accuracy = 0.01 ;
	depth:valid_max = 2000. ;
	depth:valid_min = 0. ;
	depth:units = "m" ;

depth_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the depth variable.

CDL example with REQUIRED attributes:

byte depth_qc(time) ;
	depth_qc:_FillValue = -127b ;
	depth_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	depth_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	depth_qc:long_name = "depth Quality Flag" ;
	depth_qc:standard_name = "depth status_flag" ;
	depth_qc:valid_max = 9b ;
	depth_qc:valid_min = 0b ;

temperature

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the temperature time-series for the profile.

CDL example with REQUIRED attributes:

double temperature(time) ;
	temperature:_FillValue = -999. ;
	temperature:platform = "platform" ;
	temperature:instrument = "instrument_ctd" ;
	temperature:ancillary_variables = "temperature_qc" ;
	temperature:standard_name = "sea_water_temperature" ;
	temperature:long_name = "Sea Water Temperature" ;
	temperature:observation_type = "measured" ;
	temperature:valid_max = 40. ;
	temperature:valid_min = -5. ;
	temperature:accuracy = 0.01 ;
	temperature:precision = 0.01 ;
	temperature:resolution = 0.0001 ;
	temperature:units = "Celsius" ;
	temperature:coverage_content_type = " " ;
	temperature:missing_value = -999. ;
	temperature:standard_name_vocabulary = "CF Standard Name Table v75" ;
	temperature:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;

temperature_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the temperature variable.

CDL example with REQUIRED attributes:

byte temperature_qc(time) ;
	temperature_qc:_FillValue = -127b ;
	temperature_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	temperature_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	temperature_qc:long_name = "temperature Quality Flag" ;
	temperature_qc:standard_name = "sea_water_temperature status_flag" ;
	temperature_qc:valid_max = 9b ;
	temperature_qc:valid_min = 0b ;

conductivity

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the conductivity time-series for the profile.

CDL example with REQUIRED attributes:

double conductivity(time) ;
	conductivity:_FillValue = -999. ;
	conductivity:platform = "platform" ;
	conductivity:instrument = "instrument_ctd" ;
	conductivity:ancillary_variables = "conductivity_qc" ;
	conductivity:standard_name = "sea_water_electrical_conductivity" ;
	conductivity:long_name = "Sea Water Electrical Conductivity" ;
	conductivity:observation_type = "measured" ;
	conductivity:precision = 0.01 ;
	conductivity:resolution = 0.01 ;
	conductivity:accuracy = 0.01 ;
	conductivity:valid_max = 10. ;
	conductivity:valid_min = 0. ;
	conductivity:units = "S m-1" ;
	conductivity:coverage_content_type = " " ;
	conductivity:missing_value = -999. ;
	conductivity:standard_name_vocabulary = "CF Standard Name Table v75" ;
	conductivity:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;

conductivity_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the conductivity variable.

CDL example with REQUIRED attributes:

byte conductivity_qc(time) ;
	conductivity_qc:_FillValue = -127b ;
	conductivity_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	conductivity_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	conductivity_qc:long_name = "conductivity Quality Flag" ;
	conductivity_qc:standard_name = "sea_water_electrical_conductivity status_flag" ;
	conductivity_qc:valid_max = 9b ;
	conductivity_qc:valid_min = 0b ;

salinity

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the conductivity time-series for the profile.

CDL example with REQUIRED attributes:

double salinity(time) ;
	salinity:_FillValue = -999. ;
	salinity:platform = "platform" ;
	salinity:instrument = "instrument_ctd" ;
	salinity:ancillary_variables = "salinity_qc" ;
	salinity:standard_name = "sea_water_practical_salinity" ;
	salinity:long_name = "Salinity" ;
	salinity:observation_type = "measured" ;
	salinity:valid_max = 40. ;
	salinity:valid_min = 0. ;
	salinity:accuracy = 0.01 ;
	salinity:precision = 0.01 ;
	salinity:resolution = 0.0001 ;
	salinity:units = "1" ;
	salinity:coverage_content_type = " " ;
	salinity:missing_value = -999. ;
	salinity:standard_name_vocabulary = "CF Standard Name Table v75" ;
	salinity:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/salinity:cf-standard-name-table.html" ;

salinity_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the salinity variable.

CDL example with REQUIRED attributes:

byte salinity_qc(time) ;
	salinity_qc:_FillValue = -127b ;
	salinity_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	salinity_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	salinity_qc:long_name = "sea_water_practical_salinity Quality Flag" ;
	salinity_qc:standard_name = "sea_water_salinity status_flag" ;
	salinity_qc:valid_max = 9b ;
	salinity_qc:valid_min = 0b ;

density

   
Dimension time
Data Type double
Value Type array
_FillValue -999.
Description An array containing the conductivity time-series for the profile.

CDL example with REQUIRED attributes:

double density(time) ;
	density:_FillValue = -999. ;
	density:platform = "platform" ;
	density:instrument = "instrument_ctd" ;
	density:ancillary_variables = "density_qc" ;
	density:standard_name = "sea_water_density" ;
	density:long_name = "Sea Water Density" ;
	density:observation_type = "calculated" ;
	density:precision = 0.01 ;
	density:resolution = 0.01 ;
	density:accuracy = 0.01 ;
	density:valid_max = 1040. ;
	density:valid_min = 1015. ;
	density:units = "kg m-3" ;
	density:coverage_content_type = " " ;
	density:missing_value = -999. ;
	density:standard_name_vocabulary = "CF Standard Name Table v75" ;
	density:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;

density_qc

   
Dimension time
Data Type byte
Value Type array
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the values in the density variable.

CDL example with REQUIRED attributes:

byte density_qc(time) ;
	density_qc:_FillValue = -127b ;
	density_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	density_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	density_qc:long_name = "sea_water_density Quality Flag" ;
	density_qc:standard_name = "density status_flag" ;
	density_qc:valid_max = 9b ;
	density_qc:valid_min = 0b ;

Dimensionless Profile Variables

The following variables are dimensionless and are used by the NGDAC to provide access to individual profiles from within the aggregated data sets. The NGDAC uses these variables to create a profile dimension in the aggregated data sets to provide access to the data on a profile-by-profile basis.

profile_id

   
Dimension None
Data Type integer
Value Type Scalar
_FillValue -999
Description Unique identifier for the profile. The numbering can begin at 1 and be incremented for each successive profile contained in the trajectory or can contain the timestamp corresponding to the mid-point of the profile.

The standard_name variable attribute should not be included for the profile_id variable, as no corresponding CF standard name exists for this variable.

CDL example with REQUIRED attributes:

int profile_id ;
	profile_id:_FillValue = -999 ;
	profile_id:cf_role = "profile_id" ;
	profile_id:comment = "A sequential number assigned to each vertically oriented profile track of a glider, either ascending or descending through the water column. This value is unique within each individual profile file that is part of a single trajectory or deployment." ;
	profile_id:long_name = "profile id" ;
	profile_id:valid_min = 1 ;
	profile_id:valid_max = 100 ;

profile_time

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The time stamp at the mid-point of the profile.

CDL example with REQUIRED attributes:

double profile_time ;
	profile_time:_FillValue = -999. ;
	profile_time:platform = "platform" ;
	profile_time:calendar = "standard" ;
	profile_time:comment = "Timestamp corresponding to the mid-point of the profile." ;
	profile_time:long_name = "Profile Center Time" ;
	profile_time:observation_type = "calculated" ;
	profile_time:standard_name = "time" ;
	profile_time:units = "seconds since 1970-01-01T00:00:00Z" ;

profile_time_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -9b
Description An array that contains values conveying information on the data quality status of the value in the profile_time variable.

CDL example with REQUIRED attributes:

byte profile_time_qc ;
	profile_time_qc:_FillValue = -127b ;
	profile_time_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	profile_time_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	profile_time_qc:long_name = "profile_time Quality Flag" ;
	profile_time_qc:standard_name = "time status_flag" ;
	profile_time_qc:valid_max = 9b ;
	profile_time_qc:valid_min = 0b ;

profile_lat

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The latitude at the mid-point of the profile. Since the glider is underwater at this point, this value is interpolated with the interpolation method left up to the data provider.

CDL example with REQUIRED attributes:

double profile_lat ;
	profile_lat:_FillValue = -999. ;
	profile_lat:standard_name = "latitude" ;
	profile_lat:units = "degrees_north" ;
	profile_lat:comment = "Value is interpolated to provide an estimate of the latitude at the mid-point of the profile" ;
	profile_lat:long_name = "Profile Center Latitude" ;
	profile_lat:observation_type = "calculated" ;
	profile_lat:platform = "platform" ;
	profile_lat:valid_max = 90. ;
	profile_lat:valid_min = -90. ;
	profile_lat:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	profile_lat:reference = "WGS84" ;

profile_lat_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the profile_lat variable.

CDL example with REQUIRED attributes:

byte profile_lat_qc ;
	profile_lat_qc:_FillValue = -127b ;
	profile_lat_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	profile_lat_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	profile_lat_qc:long_name = "profile_lat Quality Flag" ;
	profile_lat_qc:standard_name = "latitude status_flag" ;
	profile_lat_qc:valid_max = 9b ;
	profile_lat_qc:valid_min = 0b ;

profile_lon

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The longitude at the mid-point of the profile. Since the glider is underwater at this point, this value is interpolated with the interpolation method left up to the data provider.

CDL example with REQUIRED attributes:

double profile_lon ;
	profile_lon:_FillValue = -999. ;
	profile_lon:standard_name = "longitude" ;
	profile_lon:units = "degrees_east" ;
	profile_lon:comment = "Value is interpolated to provide an estimate of the longitude at the mid-point of the profile" ;
	profile_lon:long_name = "Profile Center Longitude" ;
	profile_lon:observation_type = "calculated" ;
	profile_lon:platform = "platform" ;
	profile_lon:valid_max = 180. ;
	profile_lon:valid_min = -180. ;
	profile_lon:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	profile_lon:reference = "WGS84" ;

profile_lon_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the profile_lon variable.

CDL example with REQUIRED attributes:

byte profile_lon_qc ;
	profile_lon_qc:_FillValue = -127b ;
	profile_lon_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	profile_lon_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	profile_lon_qc:long_name = "profile_lon Quality Flag" ;
	profile_lon_qc:standard_name = "longitude status_flag" ;
	profile_lon_qc:valid_max = 9b ;
	profile_lon_qc:valid_min = 0b ;

time_uv

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The time stamp of the calculated depth-averaged current for the profile.

CDL example with REQUIRED attributes:

double time_uv ;
	time_uv:_FillValue = -999. ;
	time_uv:platform = "platform" ;
	time_uv:calendar = "gregorian" ;
	time_uv:comment = "The depth-averaged current is an estimate of the net current measured while the glider is underwater.  The value is calculated over the entire underwater segment, which may consist of 1 or more dives." ;
	time_uv:long_name = "Depth-Averaged Time" ;
	time_uv:observation_type = "calculated" ;
	time_uv:standard_name = "time" ;
	time_uv:units = "seconds since 1970-01-01T00:00:00Z" ;

time_uv_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the time_uv variable.

CDL example with REQUIRED attributes:

byte time_uv_qc ;
	time_uv_qc:_FillValue = -127b ;
	time_uv_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	time_uv_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	time_uv_qc:long_name = "time_uv Quality Flag" ;
	time_uv_qc:standard_name = "time status_flag" ;
	time_uv_qc:valid_max = 9b ;
	time_uv_qc:valid_min = 0b ;

lat_uv

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The latitude of the calculated depth-averaged current for the profile.

CDL example with REQUIRED attributes:

double lat_uv ;
	lat_uv:_FillValue = -999. ;
	lat_uv:standard_name = "latitude" ;
	lat_uv:units = "degrees_north" ;
	lat_uv:comment = "The depth-averaged current is an estimate of the net current measured while the glider is underwater.  The value is calculated over the entire underwater segment, which may consist of 1 or more dives." ;
	lat_uv:long_name = "Depth-averaged Latitude" ;
	lat_uv:observation_type = "calculated" ;
	lat_uv:platform = "platform" ;
	lat_uv:valid_max = 90. ;
	lat_uv:valid_min = -90. ;
	lat_uv:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	lat_uv:reference = "WGS84" ;

lat_uv_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the lat_uv variable.

CDL example with REQUIRED attributes:

byte lat_uv_qc ;
	lat_uv_qc:_FillValue = -127b ;
	lat_uv_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	lat_uv_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	lat_uv_qc:long_name = "lat_uv Quality Flag" ;
	lat_uv_qc:standard_name = "latitude status_flag" ;
	lat_uv_qc:valid_max = 9b ;
	lat_uv_qc:valid_min = 0b ;

lon_uv

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The longitude of the calculated depth-averaged current for the profile.

CDL example with REQUIRED attributes:

double lon_uv ;
	lon_uv:_FillValue = -999. ;
	lon_uv:standard_name = "longitude" ;
	lon_uv:units = "degrees_east" ;
	lon_uv:comment = "The depth-averaged current is an estimate of the net current measured while the glider is underwater.  The value is calculated over the entire underwater segment, which may consist of 1 or more dives." ;
	lon_uv:long_name = "Depth-averaged Longitude" ;
	lon_uv:observation_type = "calculated" ;
	lon_uv:platform = "platform" ;
	lon_uv:valid_max = 180. ;
	lon_uv:valid_min = -180. ;
	lon_uv:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ;
	lon_uv:reference = "WGS84" ;

lon_uv_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the lon_uv variable.

CDL example with REQUIRED attributes:

byte lon_uv_qc ;
	lon_uv_qc:_FillValue = -127b ;
	lon_uv_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	lon_uv_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	lon_uv_qc:long_name = "lon_uv Quality Flag" ;
	lon_uv_qc:standard_name = "longitude status_flag" ;
	lon_uv_qc:valid_max = 9b ;
	lon_uv_qc:valid_min = 0b ;

u

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The eastward velocity component of the calculated depth-averaged current for the profile.

CDL example with REQUIRED attributes:

double u ;
	u:_FillValue = -999. ;
	u:standard_name = "eastward_sea_water_velocity" ;
	u:standard_name_vocabulary = "CF Standard Name Table v75" ;
	u:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;
	u:units = "m s-1" ;
	u:comment = "The depth-averaged current is an estimate of the net current measured while the glider is underwater.  The value is calculated over the entire underwater segment, which may consist of 1 or more dives." ;
	u:long_name = "Depth-averaged Eastward Sea Water Velocity" ;
	u:observation_type = "calculated" ;
	u:platform = "platform" ;
	u:valid_max = 10. ;
	u:valid_min = -10. ;
	u:coverage_content_type = " " ;
	u:missing_value = -999. ;
	u:accuracy = 0.01 ;
	u:precision = 0.01 ;
	u:resolution = 0.0001 ;

u_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the u variable.

CDL example with REQUIRED attributes:

byte u_qc ;
        u_qc:_FillValue = -127b ;
        u_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
        u_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
        u_qc:long_name = "u Quality Flag" ;
        u_qc:standard_name = "eastward_sea_water_velocity status_flag" ;
        u_qc:valid_max = 9b ;
        u_qc:valid_min = 0b ;

v

   
Dimension None
Data Type double
Value Type Scalar
_FillValue -999.
Description The northward velocity component of the calculated depth-averaged current for the profile.

CDL example with REQUIRED attributes:

double v ;
	v:_FillValue = -999. ;
	v:standard_name = "northward_sea_water_velocity" ;
	v:standard_name_vocabulary = "CF Standard Name Table v75" ;
	v:standard_name_url = "https://cfconventions.org/Data/cf-conventions/75/build/cf-standard-name-table.html" ;
	v:units = "m s-1" ;
	v:comment = "The depth-averaged current is an estimate of the net current measured while the glider is underwater.  The value is calculated over the entire underwater segment, which may consist of 1 or more dives." ;
	v:long_name = "Depth-averaged Northward Sea Water Velocity" ;
	v:observation_type = "calculated" ;
	v:platform = "platform" ;
	v:valid_max = 10. ;
	v:valid_min = -10. ;
	v:coverage_content_type = " " ;
	v:missing_value = -999. ;
	v:accuracy = 0.01 ;
	v:precision = 0.01 ;
	v:resolution = 0.0001 ;

v_qc

   
Dimension None
Data Type byte
Value Type scalar
_FillValue -127b
Description An array that contains values conveying information on the data quality status of the value in the v variable.

CDL example with REQUIRED attributes:

byte v_qc ;
	v_qc:_FillValue = -127b ;
	v_qc:flag_meanings = "no_qc_performed good_data probably_good_data bad_data_that_are_potentially_correctable bad_data value_changed not_used not_used interpolated_value missing_value" ;
	v_qc:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b ;
	v_qc:long_name = "v Quality Flag" ;
	v_qc:standard_name = "northward_sea_water_velocity status_flag" ;
	v_qc:valid_max = 9b ;
	v_qc:valid_min = 0b ;

Dimensionless Container Variables

The following variables are dimensionless container variables used to store metadata about the glider and instrumentation.

platform

   
Dimension None
Data Type int
Value Type Scalar
_FillValue -999
Description Variable to store metadata about the glider platform that measured the profile. All of the attributes of this variable, with the exception of comment are REQUIRED. This variable contains a wmo_id attribute to store the WMO ID assigned to this glider by NDBC. The WMO ID is also stored as a global file attribute to allow for aggregations of all deployments from the platform with that WMO ID.

CDL example with REQUIRED attributes and comments on values:

int platform ;
	platform:_FillValue = -999 ;
	platform:comment = "Spray Glider 028 deployed by (program/institution)" ;
	platform:id = "sp028" ;
	platform:long_name = "Platform Identifier" ;
	platform:type = "platform" ;
	platform:instrument = "instrument_ctd" ;
	platform:wmo_id = "4801921" ;

instrument_ctd

   
Dimension None
Data Type int
Value Type Scalar
_FillValue -999
Description Variable to store metadata about the CTD. The data provider should make an effort to include values for as many attributes as possible to create a complete metadata record, but are not required.

CDL example with REQUIRED attributes and comments on values:

int instrument_ctd ;
	instrument_ctd:_FillValue = -999 ;
	instrument_ctd:comment = "pumped CTD" ;
	instrument_ctd:long_name = "CTD Metadata" ;
	instrument_ctd:make_model = "Sea-Bird SBE 41CP CTD" ;
	instrument_ctd:platform = "platform" ;
	instrument_ctd:serial_number = "28" ;
	instrument_ctd:type = "instrument" ;
	instrument_ctd:calibration_date = "2025-09-11T12:20:31.819208" ;
	instrument_ctd:calibration_report = "report_here" ;
	instrument_ctd:factory_calibrated = "info_here" ;
	instrument_ctd:component = "CTD" ;
	instrument_ctd:discriminant = "Serial Number 1234" ;

Index of Required Global Attributes and Variables

Conventions
Metadata_Conventions
acknowledgement
comment
contributor_name
contributor_role
creator_email
creator_name
creator_url
date_created
date_issued
date_modified
format_version
history
id
institution
keywords
keywords_vocabulary
license
metadata_link
naming_authority
platform_type
processing_level
project
publisher_email
publisher_name
publisher_url
references
sea_name
source
standard_name_vocabulary
summary
title
wmo_id
time (described here and here)
traj_strlen
trajectory (described here and here)
profile
obs
wmo_id_strlen
time_qc
lat
lat_qc
lon
lon_qc
pressure
pressure_qc
depth
depth_qc
temperature
temperature_qc
conductivity
conductivity_qc
salinity
salinity_qc
density
density_qc
profile_id
profile_time
profile_time_qc
profile_lat
profile_lat_qc
profile_lon
profile_lon_qc
time_uv
time_uv_qc
lat_uv
lat_uv_qc
lon_uv
lon_uv_qc
u
u_qc
v
v_qc
platform (described here and here)
instrument_ctd (described here and here)