Dear Steve,

If this coordinate information is to be stored as auxiliary coordinate variable, one option is to do something similar to what we've done in CMIP5. Like others, I'm not advocating this as the best solution for CF, but it seems useful until a convention for doing this is accepted.

In CMIP5 we point to gridspec files and also files containing cell_measures, so that this information doesn't have to be encoded in each of the netCDF files. In your case for a variable, which I've named "irradiance", the information might look like:

float  irradiance(time, i, j)
    irradiance: coordinates = "lat lon"
irradiance: associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation lat: latitude.nc lon: longitude.nc"

The lat and lon variables would not be found in the file containing irradiance, but lat(time, i, j) would be found in latitude.nc and lon would be found in longitude.nc (or they both could be in a single file if you want with the obvious modification of associated_files -- e.g., lat: coord.nc lon: coord.nc). The files would be found at a location pointed to by baseURL.

I've also provided an example of CMIP5 output below with the cell_measures reliance on associated_files.

Best regards,
Karl


 Example 1: Usual Treatment of a 2-D Field
(surface latent heat flux; a function of longitude, latitude, month)

netcdf hfls_Amon_GICCM1_abrupt4xCO2_r1i1p1_198001-198002 {

dimensions:

time = UNLIMITED ; // (2 currently)

lat = 3 ;

lon = 4 ;

bnds = 2 ;

variables:

double time(time) ;

time:bounds = "time_bnds" ;

time:units = "days since 1980" ;

time:calendar = "standard" ;

time:axis = "T" ;

time:long_name = "time" ;

time:standard_name = "time" ;

double time_bnds(time, bnds) ;

double lat(lat) ;

lat:bounds = "lat_bnds" ;

lat:units = "degrees_north" ;

lat:axis = "Y" ;

lat:long_name = "latitude" ;

lat:standard_name = "latitude" ;

double lat_bnds(lat, bnds) ;

double lon(lon) ;

lon:bounds = "lon_bnds" ;

lon:units = "degrees_east" ;

lon:axis = "X" ;

lon:long_name = "longitude" ;

lon:standard_name = "longitude" ;

double lon_bnds(lon, bnds) ;

float hfls(time, lat, lon) ;

hfls:standard_name = "surface_upward_latent_heat_flux" ;

hfls:long_name = "Surface Upward Latent Heat Flux" ;

hfls:comment = "comment from CMIP5 table: includes both evaporation and sublimation" ;

hfls:units = "W m-2" ;

hfls:original_name = "LATENT" ;

hfls:history = "2010-04-21T21:05:23Z altered by CMOR: Changed sign. Inverted axis: lat." ;

hfls:cell_methods = "time: mean" ;

hfls:cell_measures = "area: areacella" ;

hfls:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_fx_GICCM1_abrupt4xCO2_r0i0p0.nc areacella: areacella_fx_GICCM1_abrupt4xCO2_r0i0p0.nc" ;

hfls:_FillValue = 1.e+20f ;

hfls:missing_value = 1.e+20f ;

// global attributes:

:institution = "GICC (Generic International Climate Center, Geneva, Switzerland)" ;

:institute_id = "GICC" ;

:experiment_id = "abrupt4xCO2" ;

:source = "GICCM1 (2002): atmosphere: GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;

:model_id = "GICCM1" ;

:forcing = "GHG (CO2 only)" ;

:parent_experiment_id = "piControl" ;

:branch_time = 365. ;

:contact = "Rusty Koder (ko...@middle_earth.net)" ;

:history = "Output from archive/giccm_03_std_2xCO2_2256. 2010-04-21T21:05:23Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;

:references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation described in Dorkey et al. \'(Clim. Dyn., 2003, 323-357.)" ;

:initialization_method = 1 ;

:physics_version = 1 ;

:tracking_id = "c35a58c3-8978-4628-9103-9a7d61002e07" ;

:product = "output" ;

:experiment = "abrupt 4XCO2" ;

:frequency = "mon" ;

:creation_date = "2010-04-21T21:05:23Z" ;

:Conventions = "CF-1.4" ;

:project_id = "CMIP5" ;

:table_id = "Table Amon (02 April 2010)" ;

:title = "GICCM1 model output prepared for CMIP5 abrupt 4XCO2" ;

:modeling_realm = "atmos" ;

:realization = 1 ;

data:

time = 15.5, 45.5 ;

time_bnds =

0, 31,

31, 60 ;

lat = 10, 20, 30 ;

lat_bnds =

5, 15,

15, 25,

25, 35 ;

lon = 0, 90, 180, 270 ;

lon_bnds =

-45, 45,

45, 135,

135, 225,

225, 315 ;

hfls =

120, 116, 112, 108,

104, 100, 96, 92,

88, 84, 80, 76,

119, 115, 111, 107,

103, 99, 95, 91,

87, 83, 79, 75 ;

}




On 28-Apr-10 7:14 AM, Stephen Emsley wrote:

We have multiple satellite geophysical data products which share the same set of geo-location and timing co-ordinates. To avoid product bloat (e.g. from approx. 30GB to 90GB per orbit) we are considering the possibility of having a single file storing the co-ordinates but we think that this conflicts with our desire to be CF Convention conformant. Is that correct?

Many thanks

Steve

--

Dr Stephen Emsley *::* ARGANS Limited *::* www.*argans.co.uk

T: +44 1752 764289 *|* M: +44 7912 515418 *|* [email protected]

/ /

This message is to be treated as private and confidential, and the information in it may not be used or disclosed except for the purpose for which it has been sent. ARGANS is a limited company registered in England & Wales. Registered number: 6313966. Registered address: Thatchers, Russells Water, Henley on Thames, Oxon, RG9 6EU


_______________________________________________
CF-metadata mailing list
[email protected]
http://*mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to