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.
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 error on 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 attributes
are not allowed on these. Is the checker interpreting things correctly? If the scalar approach is breaking the CF rules then I would prefer to go back to the vector approach which is what I proposed in the first email to this topic on April 2.For reference attached are netCDF files for the Scalar and Vector alternative and
corresponding text files. Andrew(*Note: I set the 'Conventions' global attribute temporarily to CF-1.5 in the netCDF file
because the checker doesn't recognise CF-1.6 yet, only works up to 1.5. The 'Conventions' attribute will be CF-1.6 in the final file.)----- Original Message ----- From: "John Caron" <ca...@unidata.ucar.edu>
To: "andrew walsh" <awa...@metoc.gov.au> Cc: <cf-metadata@cgd.ucar.edu> Sent: Monday, April 30, 2012 10:46 PM Subject: Re: [CF-metadata] Ocean CTD data following CF Conventions v1.6
On 4/29/2012 5:33 PM, andrew walsh wrote:Hi John, My responses inline below. Andrew ----- Original Message ----- From: "John Caron" <ca...@unidata.ucar.edu> To: <cf-metadata@cgd.ucar.edu> Sent: Saturday, April 28, 2012 2:39 AM Subject: Re: [CF-metadata] Ocean CTD data following CF Conventions v1.6Hi Andrew: You can use a dimension=1 instead of a scalar.OK, you mean if one used the vector method.yesBut you cant use lat(lat) lon(lon) time(time) the correct usage in the single profile case would be: lat(profile) lon(profile) time(profile)So, do you mean in the vector method have this? (simpler I guess to have common profile dimension = 1)yes, you cant use incorrect dimensions, even when they are all = 1.dimensions: profile=1 pressure = 57 variables: lat(profile) lon(profile) time(profile) pressure(pressure) temperature(pressure) Instead of this? Dimensions: time=1 lat=1 lon=1 pressure=57 Variables: time(time) lat(lat) lon(lon) pressure(pressure) temperature(pressure)
netcdf Vector1.5 { dimensions: time = 1 ; pressure = UNLIMITED ; // (9 currently) latitude = 1 ; longitude = 1 ; variables: double time(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) ; latitude:standard_name = "latitude" ; latitude:units = "degrees_north" ; latitude:axis = "Y" ; latitude:valid_min = -90 ; latitude:valid_max = 90 ; double longitude(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.5" ; :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 ; }
ScalarCTD.nc
Description: Binary data
netcdf 20110818T001140Z_M_HI504BEN { 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.5" ; :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 ; }
VectorCTD.nc
Description: Binary data
_______________________________________________ CF-metadata mailing list CF-metadata@cgd.ucar.edu http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata