Hi John and CF-Metadata list,

Based on your earlier advice I decided using the Scalar way to represent
the 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.6


Hi Andrew:

You can use a dimension=1 instead of a scalar.

OK, you mean if one used the  vector method.

yes



But 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 ;
}

Attachment: 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 ;
}

Attachment: VectorCTD.nc
Description: Binary data

_______________________________________________
CF-metadata mailing list
CF-metadata@cgd.ucar.edu
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to