Step-by-step guide
You can either use the API or the grib_dump tool for this.
The library provides a function that can be used to find out what the native type of a key value is.
In the Python interface there is a function called "codes_get_native_type" which returns one of: "int", "float" or "str". E.g.
gid = codes_grib_new_from_samples("GRIB2") codes_get_native_type(gid, "date") # returns int codes_get_native_type(gid, "referenceValue") # returns float codes_get_native_type(gid, "stepType") # returns str
As of version 2.14.0, one can use the grib_dump tool with the "-p" option to dump a given key and query its type with the "-t" option.
Let's look at the types of various keys in a GRIB2 message:
% grib_dump -t -p identifier my.grib # type ascii (str) #-READ ONLY- identifier = GRIB; % grib_dump -t -p typeOfProcessedData my.grib # type codetable (int) # Analysis and forecast products (grib2/tables/4/1.4.table) typeOfProcessedData = 2; % grib_dump -t -p numberOfDataPoints my.grib # type unsigned (int) numberOfDataPoints = 496; % grib_dump -t -p scaleFactorOfFirstFixedSurface my.grib # type signed (int) scaleFactorOfFirstFixedSurface = MISSING; % grib_dump -t -p referenceValue my.grib # type ieeefloat (double) #-READ ONLY- referenceValue = 45.67;
Here we see several keys in a GRIB2 message with their respective types:
- "ascii" means a string (character array)
- "codetable" means an integer whose values come from entries in the given Code Table e.g. 1.4
- "unsigned" is a non-negative integer
- "signed" means an integer which can be negative
- "ieeefloat" is a floating-point number (https://en.wikipedia.org/wiki/IEEE_754)
Note: The above command could be run passing in all the keys in one go:
% grib_dump -t -p identifier,typeOfProcessedData,numberOfDataPoints,scaleFactorOfFirstFixedSurface,referenceValue my.grib
Related articles