Thanks for the suggestions Dave,
I fixed the points you noted, and also a couple of other small things. The file
passes the CF-1.2 compliance checks at
http://puma.nerc.ac.uk/cgi-bin/cf-checker.pl with no warnings or error
messages, yet still does not display in IDV.
I am wondering if IDV is getting confused by the use of two time-coordinate
variables (one for the model basetime and one for the forecast lead time)? The
IDV user's guide is rather vague on what meta-data are required for NetCDF
files:
"Generally, the IDV requires that datasets in netCDF format use meta data
conventions to be able to fully understand and geolocate the dataset. These
conventions provide documented "best practices". The whole point of using
netCDF is to insure your data is complete and self-describing, and can be used
by others. Using conventions helps ensure this. We recommend you use CF,
COARDS, or NUWG conventions for netCDF data files for the IDV, and be sure to
follow the best practices noted above."
So here are a few extra questions which people on this list might be able to
help with:
1) Is there a CF-1.3 compliance checker? I had to rename my Conventions
attribute to CF-1.2 in order to test the file using the online compliance
checker.
2) What is the standard way to store more than one NWP model run in a NetCDF
file? I use one dimension for the model basetime, and a second dimension for
the forecast lead time.
3) Has anyone had any success displaying NetCDF-CF files in the IDV, and if so,
would you be able to post an example CDL for a file which is viewable?
For reference, I have attached a CDL from one of my problem files below:
netcdf ukgc_1p25deg_ocf_t2m_rtdb_opn {
dimensions:
forecast = 10 ;
basetime = UNLIMITED ; // (100 currently)
latitude = 77 ;
longitude = 97 ;
bounds = 2 ;
variables:
double forecast(forecast) ;
forecast:long_name = "Time of model forecast, relative to the
basetime" ;
forecast:units = "hours" ;
forecast:standard_name = "forecast_period" ;
forecast:bounds = "forecast_bounds" ;
double forecast_bounds(forecast, bounds) ;
forecast_bounds:long_name = "forecast interval" ;
forecast_bounds:units = "hours" ;
int basetime(basetime) ;
basetime:long_name = "Model basetime" ;
basetime:units = "seconds since 1970-01-01 00:00:00.0 +00:00"
;
basetime:standard_name = "forecast_reference_time" ;
basetime:calendar = "gregorian" ;
basetime:axis = "T" ;
double latitude(latitude) ;
latitude:long_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:bounds = "latitude_bounds" ;
latitude:valid_min = -90. ;
latitude:valid_max = 90. ;
latitude:axis = "Y" ;
latitude:standard_name = "latitude" ;
double latitude_bounds(latitude, bounds) ;
latitude_bounds:long_name = "grid cell latitude boundaries" ;
latitude_bounds:units = "degrees_north" ;
latitude_bounds:valid_min = -90. ;
latitude_bounds:valid_max = 90. ;
double longitude(longitude) ;
longitude:long_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:bounds = "longitude_bounds" ;
longitude:valid_min = -360. ;
longitude:valid_max = 360. ;
longitude:standard_name = "longitude" ;
longitude:axis = "X" ;
double longitude_bounds(longitude, bounds) ;
longitude_bounds:long_name = "grid cell longitude boundaries"
;
longitude_bounds:units = "degrees_east" ;
longitude_bounds:valid_min = -360. ;
longitude_bounds:valid_max = 360. ;
float temperature_2m(basetime, forecast, latitude, longitude) ;
temperature_2m:long_name = "2m temperature" ;
temperature_2m:units = "K" ;
temperature_2m:_FillValue = 9.96921e+36f ;
temperature_2m:missing_value = 9.96921e+36f ;
temperature_2m:valid_min = 180.f ;
temperature_2m:valid_max = 330.f ;
temperature_2m:standard_name = "air_temperature" ;
temperature_2m:cell_methods = "lat: lon: mean (area
weighted)" ;
temperature_2m:coordinates = "level" ;
double level ;
level:long_name = "Height above the surface" ;
level:units = "m" ;
level:positive = "up" ;
level:standard_name = "height" ;
level:axis = "Z" ;
// global attributes:
:Conventions = "CF-1.3" ;
:history = "File created by the Gridded OCF data ingest
system" ;
:institution = "Australian Bureau of Meteorology" ;
:source = "model" ;
:title = "UKGC forecasts of temperature_2m; resolution: 1.25
degree; source: rtdb" ;
}
-----Original Message-----
From: netcdfgroup-bounces@xxxxxxxxxxxxxxxx
[mailto:netcdfgroup-bounces@xxxxxxxxxxxxxxxx] On Behalf Of Dave Allured
Sent: Saturday, 29 November 2008 08:51
To: netcdfgroup@xxxxxxxxxxxxxxxx
Subject: Re: [netcdfgroup] Viewing NetCDF CF-1.3 files in IDV version 2.5
[SEC=UNCLASSIFIED]
Tim,
Did you try the on-line CF compliance checker?
http://cf-pcmdi.llnl.gov/conformance/compliance-checker/
One thing I noticed is that basetime:units contains two time-of-day
strings after the date. This is patently illegal, and it might be
your whole problem.
Also, there are no standard_name or axis attributes on your
coordinate variables. I think these are optional by CF, but there
is a chance that IDV has some dependency on them.
Did you check IDV documentation for a possible list of required
metadata? That may give you a more concise checklist than the
entire CF spec. HTH.
Dave Allured
CU/CIRES Climate Diagnostics Center (CDC)
http://cires.colorado.edu/science/centers/cdc/
NOAA/ESRL/PSD, Climate Analysis Branch (CAB)
http://www.cdc.noaa.gov/