The radar files delivered by DMI's radar services adhere to the so called ODIM HDF5 standard, from which the following two standards are used:

  • ODIM HDF5 (or just ODIM H5) version 2.2 are used for pseudo CAPPI files
  • ODIM HDF5 (or just ODIM H5) version 2.0 are used for volume and composite files

For a description we refer to the version 2.2 description, which also, to some extent, shows what happened between v 2.0 and v 2.2
https://www.eumetnet.eu/wp-content/uploads/2019/01/ODIM_H5_v23.pdf

Please note, that our radar data files to some extent differs from the ODIM HDF5 standard in relation to metadata. 

Tools for handling radar files

On Windows or Mac find a HDF5 viewer here :

https://www.hdfgroup.org/downloads/hdfview/?1638350659

The HDF viewer is, in the example, loaded with a volume, pseudo CAPPI and composite radar file:


On Linux find a lot of tools here:

https://portal.hdfgroup.org/display/HDF5/HDF5+Command-line+Tools

After installing them,

https://www.howtoinstall.me/ubuntu/18-04/hdf5-tools/

,  you can for example inspect the files with the "h5dump" command.
(Note what is meta data and what is actual data and note, that the metadata tells where the path to the actual data is, say "dataset1/data1/data")

$ h5dump dk.com.202108090355.500_max.h5 | less
HDF5 "dk.com.202108090355.500_max.h5" {
GROUP "/" {
   ATTRIBUTE "Conventions" {
      DATATYPE  H5T_STRING {
         STRSIZE 12;
         STRPAD H5T_STR_NULLPAD;
         CSET H5T_CSET_ASCII;
         CTYPE H5T_C_S1;
      }
      DATASPACE  SCALAR
      DATA {
      (0): "ODIM_H5/V2_0"
      }
   }
   GROUP "dataset1" {
      GROUP "data1" {
         ATTRIBUTE "quantity" {
            DATATYPE  H5T_STRING {
               STRSIZE 4;
               STRPAD H5T_STR_NULLPAD;
               CSET H5T_CSET_ASCII;
               CTYPE H5T_C_S1;
            }
            DATASPACE  SCALAR
            DATA {
            (0): "DBZH"
            }
         }
         DATASET "data" {
            DATATYPE  H5T_STD_U8LE
            DATASPACE  SIMPLE { ( 1728, 1984 ) / ( 1728, 1984 ) }
            DATA {
            (0,0): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,11): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,22): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,33): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,44): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,55): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,66): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,77): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,88): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,99): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,110): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,121): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,132): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,143): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,154): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
            (0,165): 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
:


With this information you can try to use the h52gif tool, which converts a h5 file downloaded from the API to a gif file:


$ h52gif dk.com.202108060720.500_max.h5 test.gif -i dataset1/data1/data


Afterwards you have an image i the gif format:


This is a only a very tiny bit of what you can do, explore for yourself and have fun !


  • No labels