Hi John, Thanks, I think we have reached a near conclusion to our discussions about how best to encode a 'single' profile CTD cast following CF standard v1.6.
This not been easy as CF allows more than 1 way to do it and the standard is large. Thanks also Jonathon, Roy, Nan, Jim, Upendra, Thierry, Karl for your valuable inputs,
hope I haven't missed anyone else! Jonathon, thanks for clarifying that 'axis' attribute will be allowed on 'auxilliary coordinate variables', yes the standard was confusing. To summarise I will use a 'Scalar' method for simplicity, noting that the 'Vector' method is also acceptable. Attached for reference is the netCDF file and CDL (.txt) of the same. Convention attribute has been updated to 'CF-1.6' Andrew----- Original Message ----- From: "John Caron" <[email protected]>
To: <[email protected]> Sent: Wednesday, May 02, 2012 2:21 AM Subject: Re: [CF-metadata] Ocean CTD data following CF Conventions v1.6
On 4/30/2012 8:40 PM, andrew walsh wrote:Hi John and CF-Metadata list, Based on your earlier advice I decided using the Scalar way to representthe coordinate lat, long and time rather than Vector way i.e lat(lat0, lon(lon), time(time)mainly for reason of simplicity.the correct other choice is lat(profile), lon(profile), time(profile). not sure if you caught that.the scalar choice is fine for 1 profile per file. the other is used to store multiple profiles in one file.I have run the Scalar sample through the BADC netCDF checker (*Note)at http://titania.badc.rl.ac.uk/cgi-bin/cf-checker.pl and I now get this erroron each of the lat, lon, time variables: ERROR (4): Axis attribute is not allowed for auxillary coordinate variables.I don't get this error with the Vector approach. It looks like the checker thinks my scalar lat, lon, time are 'auxilliary coordinate variables' and axis attributesare not allowed on these. Is the checker interpreting things correctly?i think we recently clarified that axis is acceptable on auxiliary coordinates. OTOH, its unecessary, as long as you follow the other rules for identifying coordinates (chapter 4)._______________________________________________ CF-metadata mailing list [email protected] http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
netcdf ScalarCTDFinal {
dimensions:
pressure = UNLIMITED ; // (9 currently)
variables:
double time ;
time:standard_name = "time" ;
time:units = "days since 1950-01-01 00:00:00" ;
time:axis = "T" ;
time:valid_min = 0 ;
time:valid_max = 999999 ;
byte time_qc_flag ;
time_qc_flag:long_name = "quality control flag for time (primary
Level 1 flag)" ;
time_qc_flag:quality_control_convention = "Proposed IODE qc scheme
March 2012" ;
time_qc_flag:valid_min = 1 ;
time_qc_flag:valid_max = 9 ;
time_qc_flag:flag_values = 1b, 2b, 3b, 4b, 9b ;
time_qc_flag:flag_meanings = "good not_evaluated_or_unknown suspect
bad missing" ;
double latitude ;
latitude:standard_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:axis = "Y" ;
latitude:valid_min = -90 ;
latitude:valid_max = 90 ;
double longitude ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:axis = "X" ;
longitude:valid_min = -180 ;
longitude:valid_max = 180 ;
byte position_qc_flag ;
position_qc_flag:long_name = "quality control flag for position
(primary Level 1 flag)" ;
position_qc_flag:quality_control_convention = "Proposed IODE qc
scheme March 2012" ;
position_qc_flag:valid_min = 1 ;
position_qc_flag:valid_max = 9 ;
position_qc_flag:flag_values = 1b, 2b, 3b, 4b, 9b ;
position_qc_flag:flag_meanings = "good not_evaluated_or_unknown
suspect bad missing" ;
double pressure(pressure) ;
pressure:standard_name = "sea_water_pressure" ;
pressure:units = "decibars" ;
pressure:axis = "Z" ;
pressure:valid_min = 0 ;
pressure:valid_max = 12000 ;
pressure:positive = "down" ;
double temperature(pressure) ;
temperature:_FillValue = -99.99 ;
temperature:standard_name = "sea_water_temperature" ;
temperature:units = "degrees_C" ;
temperature:valid_min = -2 ;
temperature:valid_max = 40 ;
temperature:ancillary_variables = "temperature_whole_profile_flag
temperature_qc_flag temperature_sd_test" ;
temperature:coordinates = "time latitude longitude pressure" ;
byte temperature_whole_profile_flag ;
temperature_whole_profile_flag:long_name = "qc flag for whole
temperature profile (primary Level 1 flag)" ;
temperature_whole_profile_flag:quality_control_convention =
"Proposed IODE qc scheme March 2012" ;
temperature_whole_profile_flag:valid_min = 1 ;
temperature_whole_profile_flag:valid_max = 9 ;
temperature_whole_profile_flag:flag_values = 1b, 2b, 3b, 4b, 9b
;
temperature_whole_profile_flag:flag_meanings = "good
not_evaluated_or_unknown suspect bad missing" ;
byte temperature_qc_flag(pressure) ;
temperature_qc_flag:long_name = "quality control flag for
temperature (primary Level 1 flag)" ;
temperature_qc_flag:standard_name = "sea_water_temperature
status_flag" ;
temperature_qc_flag:quality_control_convention = "Proposed IODE qc
scheme March 2012" ;
temperature_qc_flag:valid_min = 1 ;
temperature_qc_flag:valid_max = 9 ;
temperature_qc_flag:flag_values = 1b, 2b, 3b, 4b, 9b ;
temperature_qc_flag:flag_meanings = "good not_evaluated_or_unknown
suspect bad missing" ;
temperature_qc_flag:coordinates = "time latitude longitude
pressure" ;
byte temperature_sd_test(pressure) ;
temperature_sd_test:long_name = "qc flag for monthly temperature 3
standard deviation test (secondary Level 2 flag)" ;
temperature_sd_test:quality_control_convention = "Proposed IODE qc
scheme March 2012" ;
temperature_sd_test:valid_min = 0 ;
temperature_sd_test:valid_max = 2 ;
temperature_sd_test:flag_values = 0b, 1b, 2b ;
temperature_sd_test:flag_meanings = "passed failed unknown" ;
temperature_sd_test:coordinates = "time latitude longitude
pressure" ;
double salinity(pressure) ;
salinity:_FillValue = -99.99 ;
salinity:standard_name = "sea_water_salinity" ;
salinity:units = "psu" ;
salinity:valid_min = 0 ;
salinity:valid_max = 45 ;
salinity:ancillary_variables = "salinity_whole_profile_flag
salinity_qc_flag salinity_sd_test" ;
salinity:coordinates = "time latitude longitude pressure" ;
byte salinity_whole_profile_flag ;
salinity_whole_profile_flag:long_name = "qc flag for whole salinity
profile (primary Level 1 flag)" ;
salinity_whole_profile_flag:quality_control_convention = "Proposed
IODE qc scheme March 2012" ;
salinity_whole_profile_flag:valid_min = 1 ;
salinity_whole_profile_flag:valid_max = 9 ;
salinity_whole_profile_flag:flag_values = 1b, 2b, 3b, 4b, 9b ;
salinity_whole_profile_flag:flag_meanings = "good
not_evaluated_or_unknown suspect bad missing" ;
byte salinity_qc_flag(pressure) ;
salinity_qc_flag:long_name = "quality control flag for salinity
(primary Level 1 flag)" ;
salinity_qc_flag:standard_name = "sea_water_salinity
status_flag" ;
salinity_qc_flag:quality_control_convention = "Proposed IODE qc
scheme March 2012" ;
salinity_qc_flag:valid_min = 1 ;
salinity_qc_flag:valid_max = 9 ;
salinity_qc_flag:flag_values = 1b, 2b, 3b, 4b, 9b ;
salinity_qc_flag:flag_meanings = "good not_evaluated_or_unknown
suspect bad missing" ;
salinity_qc_flag:coordinates = "time latitude longitude
pressure" ;
byte salinity_sd_test(pressure) ;
salinity_sd_test:long_name = "qc flag for monthly salinity 3
standard deviation test (secondary Level 2 flag)" ;
salinity_sd_test:quality_control_convention = "Proposed IODE qc
scheme March 2012" ;
salinity_sd_test:valid_min = 0 ;
salinity_sd_test:valid_max = 2 ;
salinity_sd_test:flag_values = 0b, 1b, 2b ;
salinity_sd_test:flag_meanings = "passed failed unknown" ;
salinity_sd_test:coordinates = "time latitude longitude
pressure" ;
int profile ;
profile:long_name = "profile identifier" ;
profile:cf_role = "profile_id" ;
// global attributes:
:Conventions = "CF-1.6" ;
:featureType = "profile" ;
:cdm_data_type = "Profile" ;
data:
time = 22509.0081018517 ;
time_qc_flag = 1 ;
latitude = -10.5688 ;
longitude = 142.11713 ;
position_qc_flag = 1 ;
pressure = 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
temperature = 24.737, 24.737, 24.739, 24.738, 24.737, 24.736, 24.7375,
24.737, 24.735 ;
temperature_whole_profile_flag = 1 ; temperature_qc_flag = 1, 1, 1, 1, 1, 1, 1, 1, 1 ; temperature_sd_test = 0, 0, 0, 0, 0, 0, 0, 0, 0 ;salinity = 35.2028, 35.2032, 35.2013, 35.2018, 35.2022, 35.2019, 35.2019, 35.2024, 35.204 ;
salinity_whole_profile_flag = 1 ; salinity_qc_flag = 1, 1, 1, 1, 1, 1, 1, 1, 1 ; salinity_sd_test = 0, 0, 0, 0, 0, 0, 0, 0, 0 ; profile = 123456 ; }
ScalarCTD2.nc
Description: Binary data
_______________________________________________ CF-metadata mailing list [email protected] http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
