CF-compliant NetCDF metadata minimum requirements
Details about the CF Conventions can be found on the CF Conventions and Metadata website.
Define dimensions as needed:
- time
- lat
- lon
- nbnds
All variables should have attributes:
- units = units compatible with the UDUNITS-2 format are recommended
- long_name
In addition, lat/lon variables should have attributes:
- standard_name = "latitude" or "longitude"
- units = "degrees_north" or "degrees_east"
- Values of longitude variable shall go from west (-180) to east (180). For global data, avoid longitude values going from 0 to 360.
- Values of latitude variable shall go from south (-90) to north (90)
Values of latitude and longitude variables shall represent center of each grid cell.
In addition, time variables should have attributes:
- standard_name = "time"
- units = should follow CF conventions specifying the unit of measure and start date, such as "days since 2000-01-01 00:00:00" (see Time Coordinate). The time units should represent the middle time point of each measurement.
- calendar (see Calendar)
- bounds = "time_bnds". "time_bnds" is a separate 2-dimensional variable that defines the start and end time points of each measurement. Variable "time_bnds" has the same attributes "units" and "calendar" as variable "time".
It is highly recommended to use values of time variable represented in UTC.
In addition, data variables should have attributes:
- _FillValue (denotes missing or blank data. Should be outside the valid range of the data.)
If multiple missing data values are presented, use the attribute below instead:
- valid_range = values outside of valid range will be treated as missing values
In addition, data variables are highly recommended to include the attribute below:
- cell_methods = Purpose of this attribute is to describe the characteristic of a field that is represented by cell values. For example, assume variable "pressure" is an hourly time series and it has attribute pressure:cell_methods = "time: point". This means the pressure values represent the pressure measured at certain time points every hour. But if it has attribute pressure:cell_methods = "time: mean", the pressure values represent the average pressure during each hour. See http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#cell-methods for details.
Each file should also include the following global attributes:
- institution (can be "Oak Ridge National Laboratory (ORNL) Distributed Active Archive Center (DAAC)", or the PI's institution)
- references (any paper citation that the data is based on)
- title (title of the data set)
- source (some info about the source or provenance of the data set)
Any abbreviations, such as DAAC, should be spelled out in the attribute descriptions.
Example
dimensions: time = 506 ; lat = 360 ; lon = 720 ; nbnds = 2 ; variables: double lon(lon=720); :units = "degrees_east"; :long_name = "Longitude"; :standard_name = "longitude"; :_ChunkSize = 720; // int double lat(lat=360); :units = "degrees_north"; :long_name = "Latitude"; :standard_name = "latitude"; :_ChunkSize = 360; // int float prop_secd(time=506, lat=360, lon=720); :_FillValue = -9999.0f; // float :long_name = "Proportion of landcover in secondary landcover"; :missing_value = -9999.0f; // float :units = "percent"; :cell_methods = "time:mean area:mean"; :_ChunkSize = 1, 360, 720; // int double time(time=506); :long_name = "Time"; :standard_name = "time"; :calendar = "proleptic_gregorian"; :units = "years since 1500-01-01 00:00:00"; :bounds = "time_bnds"; :_ChunkSize = 1; // int double time_bnds(time=506, nbnds=2); :long_name = "start and end points of each time step"; :calendar = "proleptic_gregorian"; :units = "years since 1500-01-01 00:00:00"; // global attributes: :institution = "Oak Ridge National Laboratory (ORNL) Distributed Active Archive Center (DAAC)"; :references = "Hurtt, G.C., L.P. Chini, S. Frolking, R. A. Betts, J. Feddema, G. Fischer, J. P. Fisk, K. Hibbard, R. A. Houghton, A. Janetos, C. D. Jones, G. Kindermann, T. Kinoshita, Kees Klein Goldewijk, K. Riahi, E. Shevliakova, S. Smith, E. Stehfest, A. Thomson, P. Thornton, D. P. van Vuuren, Y. P. Wang (2011) Harmonization of land-use scenarios for the period 1500–2100: 600 years of global gridded annual land-use transitions, wood harvest, and resulting secondary lands. Climatic change, 109:117-161. DOI 10.1007/s10584-011-0153-2"; :title = "Land Use Harmonization version 1, including urban land (LUHa_u2.v1)"; :source = "Version 1 of Land-Use History A product, including land-use changes and transitions from/to urban land";