Login to ecs-login and work in your $SCRATCH:
Make a copy of the practicals directory in your $SCRATCH to Atos:
This will create a directory in your $SCRATCH called grib_practicals containing the GRIB data files for this tutorial.
There are sub-directories for each practical:
For this tutorial cd to the inspect directory:
Remember to load the ecmwf-toolbox !
This tutorial covers the following topics:
Use grib_ls to inspect the content of the files t2m.grib1 and t2m.grib2
What fields do the GRIB messages contain ?
To list the GRIB messages in t2m.grib1
The file contains 2 metre temperature (shortName=2tl) from the ECMWF Ensemble control forecast (dataType=cf) for 6-hourly steps (stepRange) from 0 to 24 hours for dataDate=20170217.
Similarly, for t2m.grib2:
Again, the file contains 2 metre temperature (shortName=2t) from the ECMWF Ensemble control forecast (dataType=cf) for 6-hourly steps (stepRange) from 0 to 24 hours for dataDate=20170217.
In fact, they are the same fields as in t2m.grib1 but encoded in GRIB edition 2 and obtained from the TIGGE archive.
Do the default keys printed by grib_ls depend on the GRIB edition ? Do you see any other differences ?
No, grib_ls prints the same set of default keys for the both GRIB edition 1 and GRIB edition2. However, the order of the columns output is different.
The only differences seen with grib_ls is for the value of the typeOfLevel and level keys which are
- typeOfLevel=surface and level=0 inthe GRIB1 encoding; and
- typeOfLevel=heightAboveGround and level=2 for the GRIB2 encoding.
How do you print the MARS keys for the two files ?
To print the mars keys, use either grib_ls -m or grib_ls -n mars. This is the output for the file t2m.grib1:
For t2m.grib2, the same command gives:
How do you add the shortName to the output of the previous command ?
To print the shortName along with the list of mars keys use the –P option e.g.:
How do you change the previous command so that the output is in descending step order ?
Hint: think about strings and integers
To order the output in descending step order use the –B option:
Note that you need to specify “step:i” so that step is treated as an integer rather than a character string.
How do you use grib_ls to print only the centre, dataDate, stepRange, typeOfLevel and shortName ?
To specify a set of keys to print, use the -p option:
How do you change the previous command so that only the field for forecast step=6 is printed ?
To print the keys for forecast step 6 only, use the -p option with the -w option:
Using the same commands with the file t2m.grib2 gives similar output.
How do you change the previous command to print the centre as both a string and an integer ?
Specifying the key as "centre:i" and “centre:s” prints the centre both as an integer and a string:
As before, using the same commands with the file t2m.grib2 gives similar output.
How do you use grib_dump to inspect the fourth (count=4) GRIB message in both files in WMO Octet mode ?
To use grib_dump to inspect the contents of the fourth message in t2m.grib1 and t2m.grib2 use the -w option with "count=4" (the count key counts the number of messages starting form count=1 for the first message. To print the output in WMO Octet mode use the -O option:
The command may produce many lines of output. You may want to redirect output to a file using, e.g.:
To use grib_dump to all of the keys for the fourth message in JSON mode, use the -j option:
Similarly, for t2m.grib2:
The file t2m.grib1 contains the 2m temperature from the ENS control forecast at 6-hourly time steps for the first 24 hours on the O640 octahedral reduced Gaussian grid. The file lsm.grib1 contains the ENS land-sea mask on the O640 grid.
How do you use grib_ls to find the value of the 2m temperature at the grid point nearest to ECMWF's headquarters in the UK (Lat 51.42°N, Lon 0.95°W) at each forecast step ?
Be careful to specify the longitude correctly !
To list the nearest points to Lat 51.42° N, Lon 0.95° W use:
Note a longitude of 0.95° W must be specified as -0.95 !
Note that ecCodes converts all longitude values so that they lie in the interval 0° to 360°. In GRIB 2 all longitude values must be positive !
From the output of the previous command, what is the latitude and longitude of the grid point nearest to ECMWF's Headquarters in Reading, UK ?
The nearest grid point is at latitude=51.38° longitude=359.03° (0.77° W) and is 4.79 km from ECMWF.
How do you change the previous command to output only the forecast step and the 2m temperature value at the grid point nearest to ECMWF ?
To output only the forecast step and 2 metre temperature value at the nearest grid point set the MODE option to 1 and specify that the stepRange key only should be printed using the -p option:
How would you change the previous command to specific that the land-sea mask in the lsm.grib1 file is used to identify the nearest land point and print the 2m temperature values at the nearest grid point in decimal format with 2 decimal places ?
The output format of the values is specified with the -F option. Here, -F"%.2f" is used to specify decimal format with 2 decimal places.
To specify the land-sea mask, pass the name of the file containing the land-sea mask as the FILE option:
Here the value=1.00 (or 0.99) at the end of the line showing the four nearest grid points indicates which are land points (mask=1.0). Land points have mask ≥ 0.5; sea points have mask<0.5.
Once the index of the nearest grid point is known, its value can be obtained directly with the -i option:
How do you print the latitude, longitude and values for the field in surface1.grib with the values output in decimal format with 5 decimal places ?
To print the data values for surface.grib1 in decimal format with 6 decimal places use grib_get_data with the option -F"%.6f":
How do you change the previous command to also output the latitude and longitude with 6 decimal places ?
To output also the latitude and longitude values with 6 decimal places, we need to use the -L option:
Note that we need to specify the format for both latitude and longitude separately: -L"%.6f %.6f".
How can you find out whether there are any missing values in the field in surface1.grib ?
Missing values can be identified by using grib_get_data with the –m option, for example:
You can also print the key numberOfMissing with the grib_get or grib_ls tools:
So there are 3 missing values in total.
Other keys also provide the numberOfPoints and numberOfValues: