From 090037261659cb1492a2bd64e32f9cbbe63a6c23 Mon Sep 17 00:00:00 2001 From: Micah Wengren Date: Thu, 18 Jan 2024 17:02:47 -0500 Subject: [PATCH] Add Glider DAC File Format 2.0 files --- datasets/gliders/IOOS_Glider_NetCDF_v2.0.cdl | 408 +++++++++++++++++++ datasets/gliders/IOOS_Glider_NetCDF_v2.0.nc | Bin 0 -> 77011 bytes 2 files changed, 408 insertions(+) create mode 100644 datasets/gliders/IOOS_Glider_NetCDF_v2.0.cdl create mode 100644 datasets/gliders/IOOS_Glider_NetCDF_v2.0.nc diff --git a/datasets/gliders/IOOS_Glider_NetCDF_v2.0.cdl b/datasets/gliders/IOOS_Glider_NetCDF_v2.0.cdl new file mode 100644 index 0000000..f034a06 --- /dev/null +++ b/datasets/gliders/IOOS_Glider_NetCDF_v2.0.cdl @@ -0,0 +1,408 @@ +netcdf IOOS_Glider_NetCDF_v2.0 { +dimensions: + time = UNLIMITED ; // (0 currently) + traj_strlen = 20 ; +variables: + 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" ; + double time(time) ; + time:ancillary_variables = "time_qc" ; + time:calendar = "gregorian" ; + time:comment = "Measured or calculated time at each point in the time-series" ; + time:long_name = "Time" ; + time:observation_type = "measured" ; + time:standard_name = "time" ; + time:units = "seconds since 1970-01-01T00:00:00Z" ; + double lat(time) ; + lat:_FillValue = -999. ; + lat:ancillary_variables = "lat_qc" ; + lat:comment = "Interpolated latitude at each point in the time-series" ; + lat:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ; + lat:long_name = "Latitude" ; + lat:observation_type = "measured" ; + lat:platform = "platform" ; + lat:reference = "WGS84" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:valid_max = 90. ; + lat:valid_min = -90. ; + double lon(time) ; + lon:_FillValue = -999. ; + lon:ancillary_variables = "lon_qc" ; + lon:comment = "Interpolated longitude at each point in the time-series." ; + lon:coordinate_reference_frame = "urn:ogc:crs:EPSG::4326" ; + lon:long_name = "Longitude" ; + lon:observation_type = "measured" ; + lon:platform = "platform" ; + lon:reference = "WGS84" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:valid_max = 180. ; + lon:valid_min = -180. ; + double pressure(time) ; + pressure:_FillValue = -999. ; + pressure:accuracy = " " ; + pressure:ancillary_variables = "pressure_qc" ; + pressure:comment = " " ; + pressure:instrument = "instrument_ctd" ; + pressure:long_name = "Pressure" ; + pressure:observation_type = "measured" ; + pressure:platform = "platform" ; + pressure:positive = "down" ; + pressure:precision = " " ; + pressure:reference_datum = "sea-surface" ; + pressure:resolution = " " ; + pressure:standard_name = "sea_water_pressure" ; + pressure:units = "dbar" ; + pressure:valid_max = 2000 ; + pressure:valid_min = 0 ; + double depth(time) ; + depth:_FillValue = -999. ; + depth:accuracy = " " ; + depth:ancillary_variables = "depth_qc" ; + depth:comment = " " ; + depth:instrument = "instrument_ctd" ; + depth:long_name = "Depth" ; + depth:observation_type = "calculated" ; + depth:platform = "platform" ; + depth:positive = "down" ; + depth:precision = " " ; + depth:reference_datum = "sea-surface" ; + depth:resolution = " " ; + depth:standard_name = "depth" ; + depth:units = "m" ; + depth:valid_max = 2000 ; + depth:valid_min = 0 ; + double temperature(time) ; + temperature:_FillValue = -999. ; + temperature:accuracy = " " ; + temperature:ancillary_variables = "temperature_qc" ; + temperature:instrument = "instrument_ctd" ; + temperature:long_name = "Temperature" ; + temperature:observation_type = "measured" ; + temperature:platform = "platform" ; + temperature:precision = " " ; + temperature:resolution = " " ; + temperature:standard_name = "sea_water_temperature" ; + temperature:units = "Celsius" ; + temperature:valid_max = 40. ; + temperature:valid_min = -5. ; + double conductivity(time) ; + conductivity:_FillValue = -999. ; + conductivity:accuracy = " " ; + conductivity:ancillary_variables = "conductivity_qc" ; + conductivity:instrument = "instrument_ctd" ; + conductivity:long_name = "Conductivity" ; + conductivity:observation_type = "measured" ; + conductivity:platform = "platform" ; + conductivity:precision = " " ; + conductivity:resolution = " " ; + conductivity:standard_name = "sea_water_electrical_conductivity" ; + conductivity:units = "S m-1" ; + conductivity:valid_max = 10. ; + conductivity:valid_min = 0. ; + double salinity(time) ; + salinity:_FillValue = -999. ; + salinity:accuracy = " " ; + salinity:ancillary_variables = "salinity_qc" ; + salinity:instrument = "instrument_ctd" ; + salinity:long_name = "Salinity" ; + salinity:observation_type = "calculated" ; + salinity:platform = "platform" ; + salinity:precision = " " ; + salinity:resolution = " " ; + salinity:standard_name = "sea_water_practical_salinity" ; + salinity:units = 1 ; + salinity:valid_max = 40. ; + salinity:valid_min = 0. ; + double density(time) ; + density:_FillValue = -999. ; + density:accuracy = " " ; + density:ancillary_variables = "density_qc" ; + density:instrument = "instrument_ctd" ; + density:long_name = "Density" ; + density:observation_type = "calculated" ; + density:platform = "platform" ; + density:precision = " " ; + density:resolution = " " ; + density:standard_name = "sea_water_density" ; + density:units = "kg m-3" ; + density:valid_max = 1040. ; + density:valid_min = 1015. ; + int profile_id ; + profile_id:_FillValue = -999 ; + profile_id:comment = "Sequential profile number within the trajectory. This value is unique in each file that is part of a single trajectory/deployment." ; + profile_id:long_name = "Profile ID" ; + profile_id:valid_max = 2147483647 ; + profile_id:valid_min = 1 ; + double profile_time ; + profile_time:_FillValue = -999. ; + profile_time:calendar = "gregorian" ; + 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:platform = "platform" ; + profile_time:standard_name = "time" ; + profile_time:units = "seconds since 1970-01-01T00:00:00Z" ; + double profile_lat ; + profile_lat:_FillValue = -999. ; + 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:standard_name = "latitude" ; + profile_lat:units = "degrees_north" ; + profile_lat:valid_max = 90. ; + profile_lat:valid_min = -90. ; + double profile_lon ; + profile_lon:_FillValue = -999. ; + 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:standard_name = "longitude" ; + profile_lon:units = "degrees_east" ; + profile_lon:valid_max = 180. ; + profile_lon:valid_min = -180. ; + double time_uv ; + time_uv:_FillValue = -999. ; + 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" ; + double lat_uv ; + lat_uv:_FillValue = -999. ; + 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:standard_name = "latitude" ; + lat_uv:units = "degrees_north" ; + lat_uv:valid_max = 90. ; + lat_uv:valid_min = -90. ; + double lon_uv ; + lon_uv:_FillValue = -999. ; + 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:standard_name = "longitude" ; + lon_uv:units = "degrees_east" ; + lon_uv:valid_max = 180. ; + lon_uv:valid_min = -180. ; + double u ; + u:_FillValue = -999. ; + 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:standard_name = "eastward_sea_water_velocity" ; + u:units = "m s-1" ; + u:valid_max = 10. ; + u:valid_min = -10. ; + double v ; + v:_FillValue = -999. ; + 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:standard_name = "northward_sea_water_velocity" ; + v:units = "m s-1" ; + v:valid_max = 10. ; + v:valid_min = -10. ; + int platform ; + platform:_FillValue = -999 ; + platform:comment = " " ; + platform:id = " " ; + platform:instrument = "instrument_ctd" ; + platform:long_name = " " ; + platform:type = "platform" ; + platform:wmo_id = " " ; + int instrument_ctd ; + instrument_ctd:_FillValue = -999 ; + instrument_ctd:calibration_date = " " ; + instrument_ctd:calibration_report = " " ; + instrument_ctd:comment = "pumped CTD" ; + instrument_ctd:factory_calibrated = " " ; + instrument_ctd:long_name = "Seabird Glider Payload CTD" ; + instrument_ctd:make_model = "Seabird GPCTD" ; + instrument_ctd:platform = "platform" ; + instrument_ctd:serial_number = " " ; + instrument_ctd:type = "platform" ; + 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 ; + 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 = "lat Quality Flag" ; + lat_qc:standard_name = "latitude status_flag" ; + lat_qc:valid_max = 9b ; + lat_qc:valid_min = 0b ; + 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 = "lon Quality Flag" ; + lon_qc:standard_name = "longitude status_flag" ; + lon_qc:valid_max = 9b ; + lon_qc:valid_min = 0b ; + 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 ; + 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 ; + 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 ; + 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 ; + 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 = "salinity Quality Flag" ; + salinity_qc:standard_name = "sea_water_practical_salinity status_flag" ; + salinity_qc:valid_max = 9b ; + salinity_qc:valid_min = 0b ; + 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 = "density Quality Flag" ; + density_qc:standard_name = "sea_water_density status_flag" ; + density_qc:valid_max = 9b ; + density_qc:valid_min = 0b ; + 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 ; + 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 ; + 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 ; + 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 ; + 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 ; + 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 ; + 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 ; + 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 ; + +// global attributes: + :Conventions = "CF-1.6, Unidata Dataset Discovery v1.0" ; + :Metadata_Conventions = "CF-1.6, Unidata Dataset Discovery v1.0" ; + :acknowledegment = "This deployment supported by ..." ; + :comment = " " ; + :contributor_name = " " ; + :contributor_role = " " ; + :creator_email = " " ; + :creator_name = " " ; + :creator_url = " " ; + :date_created = " " ; + :date_issued = " " ; + :date_modified = " " ; + :format_version = "IOOS_Glider_NetCDF_v2.0.nc" ; + :history = " " ; + :id = " " ; + :institution = " " ; + :keywords = "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 = "GCMD Science Keywords" ; + :license = "This data may be redistributed and used without restriction. Data provided as is with no expressed or implied assurance of quality assurance or quality control" ; + :metadata_link = " " ; + :naming_authority = "edu.rutgers.marine" ; + :platform_type = "Slocum Glider" ; + :processing_level = " " ; + :project = " " ; + :publisher_email = " " ; + :publisher_name = " " ; + :publisher_url = " " ; + :references = " " ; + :sea_name = " " ; + :source = "Observational data from a profiling glider" ; + :standard_name_vocabulary = "CF-v25" ; + :summary = "The Rutgers University Coastal Ocean Observation Lab has deployed autonomous underwater gliders around the world since 1990. Gliders are small, free-swimming, unmanned vehicles that use changes in buoyancy to move vertically and horizontally through the water column in a saw-tooth pattern. They are deployed for days to several months and gather detailed information about the physical, chemical and biological processes of the world\'s The Slocum glider was designed and oceans. built by Teledyne Webb Research Corporation, Falmouth, MA, USA. This dataset contains observational sub-surface profile data of the water-column." ; + :title = " " ; + :wmo_id = " " ; +} diff --git a/datasets/gliders/IOOS_Glider_NetCDF_v2.0.nc b/datasets/gliders/IOOS_Glider_NetCDF_v2.0.nc new file mode 100644 index 0000000000000000000000000000000000000000..7ac2241a126ced234f9bf558296aa010fa13da46 GIT binary patch literal 77011 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 d^