WARNING
Some modifications have been made in this page since the meeting at C3S General Assembly at Toulouse
More details about those changes, and the final netCDF examples following the guide are expected to be made available around the 21st April 2017
Introduction
During these first stages of the proof-of-concept phase of C3S seasonal forecast activity, we have been working in standardise the data provision in netCDF.
The proposal is constrained by the CF convention, and we have tried not to diverge from specifications coming from other well established communities: SPECS and CMIP5/6
Additionally ACDD has been also taken into account when defining the data discovery related metadata.
In that sense, the following links are valuable sources of information that have informed the definition of this proposal:
CF convention standard names tables
SPECS file content and format, data structure and metadata
CMIP6 Data Request: MIP variables search
NOTES about tables color coding
Along this document some issues are still at some level under discussion. To mark that it has been followed the following color coding scheme
Items to be discussed with EQC / Waiting for a proposal from EQC |
Items under discussion within C3S seasonal forecast team |
Encoding Guide
Global attributes
The following properties are intended to provide information about where the data came from and what has been done to it. This information is mainly for the benefit of human readers and data discovery mechanisms. The attribute values are all character strings. When an attribute appears both globally and as a variable attribute, the variable’s version has precedence.
Attribute Name | Value | Examples | Comment |
---|---|---|---|
Conventions | CF_convention_string C3S-0.1 [Other convention] :... | "CF-1.6 C3S-0.1" | Multiple conventions may be included (separated by blank spaces) |
title | "<short institution name> seasonal forecast model output prepared for C3S" CF: Free text ACDD (highly recommended) | "ECMWF seasonal forecast model output prepared for C3S" | A short phrase or sentence describing the dataset. In many discovery systems, the title will be displayed in the results list from a search, and therefore should be human readable and reasonable to display in a list of such names <short institution name> is the first element of the comma-separated list of values of the corresponding "institution" attribute |
references | URIs (such as a URL or DOI) for papers or other references. A valid doi is recommended CF: Free text | "doi:10.5194/gmd-8-1509-2015" | Published or web-based references that describe the data or methods used to produce it. |
source | A methodology to build this attribute will be provided |
| The method of production of the original data. If it was model-generated, source should name the model and its version, as specifically as it could be useful |
institution | Controlled Vocabulary: "ECMWF, European Centre for Medium-Range Weather Forecasts, Reading, United Kingdom" "Met Office, Exeter, United Kingdom" "Météo-France, Toulouse, France" "DWD, Deutscher Wetterdienst, Offenbach, Germany" "CMCC, Centro Euro-Mediterraneo sui Cambiamenti Climatici, Bologna, Italy" CF: Free text
| "Météo-France, Toulouse, France" | Specifies where the original data was produced. The name of the institution principally responsible for originating this data. NOTE: The first element of the comma-separated list of values will be used as a shortened version of this attribute in some of the other global attributes ('summary', 'title') |
contact | Copernicus User Support URI should be used CF: Free text | "http://copernicus-support.ecmwf.int" |
|
project | "C3S Seasonal Forecast" should be used CF: Free text
| "C3S Seasonal Forecast" | |
creation_date | SPECS: YYYY-MM-DDThh:mm:ss<zone> ISO 8601:2004 extended format | "2011-06-24T02:53:46Z" | The date on which this version of the data was created. Modification of values implies a new version, hence this would be assigned the date of the most recent values modification. Metadata changes are not considered when assigning the creation_date NOTE: The ACDD 1.3 names this attribute as "date_create". The name "creation_date" has been used following SPECS convention. |
comment | Free text |
| Miscellaneous information about the data, not captured elsewhere. |
forecast_type | "forecast" or "hindcast" | "forecast" | To identify the type of data |
history | Each line should begin with a timestamp indicating the date and time of day when the program was executed CF: Free Text |
| To record relevant information, such as the command history which led to this file being produced. Provides an audit trail for modifications to the original data.
|
commit, iso_lineage or lineage | Free text (ISO Lineage model 19115-2) | "Produced using CDS Toolbox v1.0" | Trace of the tools/scripts used. Either this attribute or the "history" attribute needs to include information about the versioning of the software used to create the data. This is related with some of the EQC activities (WP4 of QA4SEAS). ISO 19115-2 defines a linage model where this is been considered. |
summary | Controlled Vocabulary: ACDD (highly recommended) | "Seasonal Forecast data produced by DWD as its contribution to the seasonal forecast activity of the Copernicus Climate Change Service (C3S). The data has global coverage with a 1-degree horizontal resolution and spans for around 6 months since the start date" | A short paragraph describing the dataset
<short institution name> is the first element of the comma-separated list of values of the corresponding "institution" attribute |
keywords | Fixed string "Seasonal Forecasts, C3S, ECMWF, Copernicus, Climate Change, Climate Services, Earth Science Services, Environmental Advisories, Climate Advisories" ACDD (highly recommended) | A comma separated list of key words and phrases. NOTE: This attribute is likely to be modified in the future, once the contents of the Thesaurus for CDS faceting will be defined | |
forecast_reference_time | SPECS: YYYY-MM-DDThh:mm:ssZ NOTE: This is ISO 8601:2004 extended format, but time zone is required to be UTC | "2011-06-01T00:00:00Z" | time of the analysis from which the forecast was made
|
Spatial Coordinates
Type (CMIP5) | Coordinate Name (CMIP5) | Dimension Names (CMIP5) | Axis | standard_name | long_name (CMIP5) | units (CF canonical units) | positive | valid_min (CMIP5) | valid_max (CMIP5) | bounds | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|
double | lat | lat | Y | latitude | latitude | degrees_north | N/A | -90. | 90. | lat_bnds | Values (1x1deg grid) prescribed: [-89.5, -88.5 , ..., -0.5, 0.5 ... 89.5] |
double | lon | lon | X | longitude | longitude | degrees_east | N/A | 0. | 360. | lon_bnds | Values (1x1deg grid) prescribed: center of 1-degree cells dimension lon=360 [0.5 , 1.5 , ..., 358.5, 359.5] |
double | plev | plev | Z | air_pressure | pressure | Pa | down | N/A | N/A | This is also referred to as isobaric level by some tools [925., 850., 700., 500., 400., 300., 200., 100., 50., 30., 10.] | |
double | depth | depth | Z | depth | depth | m | down | N/A | N/A | depth_bnds | Only used for soil model levels NOTE: Number and depth of levels is not prescribed by C3S |
double | height | (scalar auxiliary coordinate) | Z | height | height | m | up or down | CMIP5: 2mtemp: 1. | CMIP5: 2mtemp: 10. | Used for single level fields (height, soil,SST) e.g. 2 m (for Temperature) | |
C3S: string
| realization | str31=31 | E | realization | realization | 1 | N/A | N/A | N/A | members are not a physical quantity. Realization is a discrete coordinate and the members its categorical values (ordered or non-ordered ones) SPECS approach: rXXiYYpZZ |
NOTE about the horizontal coordinates: The regridding procedure to provide the data in the 1-degree grid must take into account that the full definition of the gird cells is done by the cell boundaries (lat_bnds, lon_bnds)
Time Coordinates
Type | Coordinate Name | Dimension Names | Axis | standard_name | long_name | calendar | units | bounds | Notes |
---|---|---|---|---|---|---|---|---|---|
double | reftime | N/A | N/A | forecast_reference_time | "Start date of the forecast" | gregorian | UDUNITS time units e.g. "hours since YYYY-MM-DD hh:mm:ss TZhh:TZmm" | N/A | In SPECS it is a "global_attribute" It has been additionally introduced here as a coordinate variable to ease future netCDF management (e.g. file merging) |
double | leadtime | leadtime | N/A | forecast_period | "Time elapsed since the start of the forecast" | N/A | SPECS: days | leadtime_bnds | The interval of time between the forecast reference time and the valid time Boundaries not needed when this time coordinate is used for instantaneous values (note that "time:point" is used as cell_method in those cases) When boundaries are required, the value of the coordinate must be in the centre of the correspondent time cell boundaries |
double | time | leadtime | N/A | time | "Verification time of the forecast" | gregorian | SPECS: "days since 1850-01-01" C3S: requested units can be relaxed to equivalent time units | time_bnds | Time for which the forecast is valid Boundaries not needed when this time coordinate is used for instantaneous values (note that "time:point" is used as cell_method in those cases) When boundaries are required, the value of the coordinate must be in the centre of the correspondent time cell boundaries
|
NOTE: Definitions for "leadtime" and "time" have been taken from SPECS. The introduction of "reftime" as a variable has been adapted from SPECS global attribute description for the forecast reference time.
NOTE: Even though there are different requested time steps among the variables (6h, 12h, 24h), just one set of time axes has been defined, as that would be enough when applying the requirement of "one variable per file"
"leadtime" has been selected as dimension (instead of "time") for both time and leadtime. That means "leadtime" is the coordinate and "time" is an auxiliary coordinate
- This diverges from SPECS (where "time" was the name of the dimension and the coordinate, and "leadtime" was an auxiliary coordinate)
- Here it has been done like that because
- both reftime and leadtime are the relevant (let's say "orthogonal") coordinates coming from time = reftime + leadtime
- doing like that has some advantages when merging netcdf files ("leadtime" can be easily shared by different variables in a merged file, while "time" cannot)
Cell boundaries
As described in section 7.1 Cell Boundaries of CF convention.
To represent cells we add the attribute bounds
to the appropriate coordinate variable(s). The value of bounds
is the name of the variable that contains the vertices of the cell boundaries. We refer to this type of variable as a "boundary variable." A boundary variable will have one more dimension than its associated coordinate or auxiliary coordinate variable. The additional dimension should be the most rapidly varying one, and its size is the maximum number of cell vertices. Since a boundary variable is considered to be part of a coordinate variable’s metadata, it is not necessary to provide it with attributes such as long_name
and units
Bounds Name | Dimensions | Comments |
---|---|---|
time_bnds | leadtime, bnds | |
leadtime_bnds | ||
lat_bnds | lat, bnds | Values (1x1deg grid) prescribed: [-90., 89.], [-89., -88.], ... [89., 90.] |
lon_bnds | lon, bnds | Values (1x1deg grid) prescribed: [0., 1.], [1., 2.], ... [359., 360.] |
depth_bnds | depth,bnds | Should define the full vertical extent of the soil model layers |
Grid mapping
As described in section 5.6 Grid Mappings and Projections of CF convention.
grid_mapping_name
of latitude_longitude
may be used to specify the ellipsoid and prime meridian.char hcrs ; hcrs:grid_mapping_name = "latitude_longitude" ;
Variables
Common attributes
The following attributes must be included in all the variables
attribute name | value | comment |
---|---|---|
grid_mapping | hcrs | |
_FillValue | 1.0e20 | Those attributes must be included JUST when the variable has missing values |
missing_value | 1.0e20 |
Static Fields
attributes | ||||||
name (CMIP5) | dimensions | standard_name | long_name (CMIP5) | units | coordinates | NOTES |
---|---|---|---|---|---|---|
sftlf | lat,lon | land_area_fraction | "Land Area Fraction" | 1 | "lat lon"
| |
orog | lat,lon | surface_altitude | "Surface Altitude" | m | "lat lon" |
Surface Fields (defined at a given height level)
attributes | |||||||
name (CMIP5/6&C3S) | dimensions | standard_name | long_name (CMIP5/6&C3S) | units | coordinates | cell_methods | NOTES |
---|---|---|---|---|---|---|---|
tas | time,lat,lon | air_temperature | "Near-Surface Air Temperature" | K | "height time lat lon"
| "time: point" | height is usually 2m |
tasmax | time,lat,lon | air_temperature | "Daily Maximum Near-Surface Air Temperature" | K | "height time lat lon" | "time: maximum (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | height is usually 2m C3S: The interval is required to have a value<=3 hours) |
tasmin | time,lat,lon | air_temperature | "Daily Minimum Near-Surface Air Temperature" | K | "height time lat lon" | "time: minimum (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | height is usually 2m C3S: The interval is required to have a value<=3 hours) |
tdps | time,lat,lon | dew_point_temperature | "2m dewpoint temperature" | K | "height time lat lon" | "time: point" C3S: required CF: recommended | height is usually 2m
|
uas | time,lat,lon | x_wind | Eastward Near-Surface Wind | m s-1 | "height time lat lon" | "time: point" C3S: required CF: recommended | height is usually 10m |
vas | time,lat,lon | y_wind | Northward Near-Surface Wind | m s-1 | "height time lat lon" | "time: point" C3S: required CF: recommended | height is usually 10m |
wsgmax
N/A in CMIP | time,lat,lon | wind_speed_of_gust | "Maximum Wind Speed of Gust"
N/A in CMIP | m s-1 | "height time lat lon" | "time: maximum (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | height is usually 10m C3S: The interval is required to have a value<=3 hours) |
Surface Fields (not defined at a height level)
attributes | |||||||
name (CMIP5/6&C3S) | dimensions | standard_name | long_name (CMIP5/6&C3S) | units | coordinates | cell_methods | NOTES |
---|---|---|---|---|---|---|---|
psl | time,lat,lon | air_pressure_at_sea_level | "Sea Level Pressure" | Pa | "time: point" C3S: required CF: recommended | ||
clt | time,lat,lon | cloud_area_fraction | "Total Cloud Fraction" | 1 | "time: point" C3S: required CF: recommended | ||
tsl | time,lat,lon | soil_temperature | "Temperature of Soil" | K | "time: point" C3S: required CF: recommended | ||
tso | time,lat,lon | sea_surface_temperature | "Sea Surface Temperature" | K | "time: point" C3S: required CF: recommended | ||
sitemptop
N/A in CMIP | time,lat,lon | sea_ice_temperature | "Surface temperature of sea ice" N/A in CMIP | K | "time: point" C3S: required CF: recommended | ||
sic | time,lat,lon | sea_ice_area_fraction | "Sea Ice Area Fraction" | 1 | "time: point" C3S: required CF: recommended | ||
N/A in CMIP | time,depth,lat,lon | mass_content_of_water_in_soil_layer |
N/A in CMIP | kg m-2 | "time: point" C3S: required CF: recommended | ||
lwesnw
N/A in CMIP | time,lat,lon | lwe_thickness_of_surface_snow_amount | "Liquid Water Equivalent of Surface Snow Amount" N/A in CMIP | m | "time: point" C3S: required CF: recommended | ||
rhosn
N/A in CMIP | time,lat,lon | snow_density | "Snow density"
N/A in CMIP | kg m-3 | "time: point" C3S: required CF: recommended | ||
lweprs
N/A in CMIP | time,lat,lon | lwe_thickness_of_stratiform_precipitation_amount | "Liquid Water Equivalent of Stratiform Precipitation Amount"
N/A in CMIP | m | "time: sum" | ||
lweprc
N/A in CMIP | time,lat,lon | lwe_thickness_of_convective_precipitation_amount | "Liquid Water Equivalent of Convective Precipitation Amount"
N/A in CMIP | m | "time: sum" | ||
lwepr
N/A in CMIP | time,lat,lon | lwe_thickness_of_precipitation_amount | "Liquid Water Equivalent of Total Precipitation Amount"
N/A in CMIP | m | "time: sum" | ||
lweprsn
N/A in CMIP | time,lat,lon | lwe_thickness_of_snowfall_amount | "Liquid Water Equivalent of Snowfall Amount"
N/A in CMIP | m | "time: sum" | ||
hfss | time,lat,lon | surface_upward_sensible_heat_flux | "Surface Upward Sensible Heat Flux" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
hfls | time,lat,lon | surface_upward_latent_heat_flux | "Surface Upward Latent Heat Flux" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rsds | time,lat,lon | surface_downwelling_shortwave_flux_in_air | "Surface Downwelling Shortwave Radiation" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rlds | time,lat,lon | surface_downwelling_longwave_flux_in_air | "Surface Downwelling Longwave Radiation" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rss | time,lat,lon | surface_net_downward_shortwave_flux | "Net Shortwave Surface Radiation" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rls | time,lat,lon | surface_net_downward_longwave_flux | "Net Longwave Surface Radiation" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rst
N/A in CMIP | time,lat,lon | toa_net_downward_shortwave_flux | "TOA Net Shortwave Radiation" N/A in CMIP | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
rlt
N/A in CMIP | time,lat,lon | toa_net_downward_longwave_flux | "TOA Net Longwave Radiation" N/A in CMIP | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is r equired. CF: interval is optional | ||
rsdt | time,lat,lon | toa_incoming_shortwave_flux | "TOA Incident Shortwave Radiation" | W m-2 | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
tauu | time,lat,lon | surface_downward_eastward_stress | "Surface Downward Eastward Wind Stress" | Pa | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
tauv | time,lat,lon | surface_downward_northward_stress | "Surface Downward Northward Wind Stress" | Pa | "time: mean (interval: <value> <unit>)" C3S: interval is required. CF: interval is optional | ||
lwee
N/A in CMIP | time,lat,lon | lwe_thickness_of_water_evaporation_amount | "Liquid Water Equivalent of Evaporation Amount" N/A in CMIP | m | "time: sum" | ||
N/A in CMIP | time,lat,lon | runoff_amount |
N/A in CMIP | kg m-2 | "time: sum" | ||
N/A in CMIP | time,lat,lon | surface_runoff_amount |
N/A in CMIP | kg m-2 | "time: sum" | ||
N/A in CMIP | time,lat,lon | subsurface_runoff_amount |
N/A in CMIP | kg m-2 | "time: sum" |
Pressure Level Fields
attributes | |||||||
name (CMIP5) | dimensions | standard_name | long_name (CMIP5) | units | coordinates | cell_methods | NOTES |
---|---|---|---|---|---|---|---|
zg | time,plev,lat,lon | geopotential_height | "Geopotential Height" | m | "time: point" C3S: required CF: recommended | ||
ta | time,plev,lat,lon | air_temperature | "Air Temperature" | K | "time: point" C3S: required CF: recommended | ||
hus | time,plev,lat,lon | specific_humidity | "Specific Humidity" | 1 | "time: point" C3S: required CF: recommended | ||
N/A in CMIP | time,plev,lat,lon | atmosphere_relative_vorticity |
N/A in CMIP | s-1 | "time: point" C3S: required CF: recommended | ||
N/A in CMIP | time,plev,lat,lon | divergence_of_wind |
N/A in CMIP | s-1 | "time: point" C3S: required CF: recommended | ||
ua | time,plev,lat,lon | x_wind | "Eastward Wind" | m s-1 | "time: point" C3S: required CF: recommended | ||
va | time,plev,lat,lon | y_wind | "Northward Wind" | m s-1 | "time: point" C3S: required CF: recommended |
When boundaries are required, the value of the coordinate must be in the centre of the correspondent time cell boundaries