The RMIB SEVIRI "Belgian Area" Archive

This page describes the extraction and the archiving of SEVIRI data over a restricted rectangular area ("belgian area") at RMIB: data availability, archive content, how to access the data and how to read the ROF format.

Introduction

To support the use of SEVIRI data by Belgian users, it has been decided to extract and archive the SEVIRI data over a rectangular area centered around the country. The area was defined to include the grid of the NWP model operated at RMIB (Aladin). This Belgian archiving is effective since 7 of October 2003. The data availability for the belgian archive is the same as the availability of original SEVIRI data in out archive with status available at:
   http://gerb.oma.be/seviri/seviri.html

Area definition

The area extension is 600 columns by 300 lines in the original SEVIRI images (3 km resolution). The upper-left pixel of this area corresponds to the pixel (1650,200) in the original image, where pixel (0,0) refers to the upper-left pixel. For the HRV channel (1 km resolution), the area is exactly the same but the images have 1800 columns by 900 lines. The composite image hereafter illustrates the area.

Content

For each 15' SEVIRI repeat cycle ("YYYYMMDDhhmm"), the following data are archived: the images for the 12 SEVIRI channels (ROF files), the MPEF cloud mask (PGM image), a color composite visible image (JPEG image) and the SEVIRI prologue and epilogue (EUMETSAT format).
  YYYYMMDDhhmm_MSG1_SEVIRI_VIS006_BEL.rof(.bz2)   -> visible 0.6 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_VIS008_BEL.rof(.bz2)   -> visible 0.8 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_016_BEL.rof(.bz2)   -> near ir 1.6 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_039_BEL.rof(.bz2)   -> ir 3.9 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_WV_062_BEL.rof(.bz2)   -> water vapour 6.2 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_WV_073_BEL.rof(.bz2)   -> water vapour 7.3 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_087_BEL.rof(.bz2)   -> ir 8.7 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_097_BEL.rof(.bz2)   -> ir 9.7 Ám (ozone 03)
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_108_BEL.rof(.bz2)   -> ir 10.8 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_120_BEL.rof(.bz2)   -> ir 12.0 Ám
  YYYYMMDDhhmm_MSG1_SEVIRI_IR_134_BEL.rof(.bz2)   -> ir 13.4 Ám (CO2)
  YYYYMMDDhhmm_MSG1_SEVIRI_HRV_BEL.rof(.bz2)      -> high resolution visible (1 km)
  YYYYMMDDhhmm_MPEF_CLM_BEL.pgm(.bz2)             -> MPEF cloud mask
  YYYYMMDDhhmm_MSG1_SEVIRI_VIS_BEL.jpg            -> color composite from HRV and (IR_016,VIS008,VIS006)
  H-000-MSG1__-MSG1________-_________-PRO______-YYYYMMDDhhmm-__.(bz2)    -> SEVIRI prologue
  H-000-MSG1__-MSG1________-_________-EPI______-YYYYMMDDhhmm-__(.bz2)    -> SEVIRI epilogue
An illustration of the visible color composite was given herebefore, the following images illustrate the other kinds of data in the archive.
VIS006 VIS008 IR_016
IR_039 WV_062 WV_073
IR_087 IR_097 IR_108
IR_120 IR_134 MPEF CLM
HRV
VIS

Reading the ROF format

The ROF format is fully described in the following RMIB internal document:
  http://gerb.oma.be/internal/BatsLibrary/ROF/rof_doc.html
Nevertheless, to read Belgian SEVIRI data you can simply skip the ROF header which is 512 bytes long (but only for data after 1st of May 2004) and then you can read the 300 lines of 600 pixels of short integer data (2 bytes). For the HRV, the number of column and line is 1800 and 900. If you use BIG_ENDIAN computer (like Silicon Graphics) you will have to byteswap the 2-bytes data (see hereafter a simple C program that performs the byteswapping). If you use standard PC no byteswapping is needed.

The ROF header at the start of a "Belgian image" gives successively: the original image name, geometry, navigation parameters, the calibration (gain and offset), the coordinates of the extraction rectangle, and the information about the ROF file:

   # ORIG=/archive/msg-us/200405120800_MSG1_SEVIRI_IR_108.XPIF
   # PIF_L=3712
   # PIF_C=3712
   # NAV_LOFF=1856.000000
   # NAV_COFF=1856.000000
   # NAV_LRES=667.204030
   # NAV_CRES=667.204030
   # GAIN=0.205034
   # OFFSET=-10.456757
   #
   # REC_UL_X=1650
   # REC_UL_Y=200
   # REC_LR_X=2250
   # REC_LR_Y=500
   #
   # STRUCT = IP_IMAGE
   # TYPE = INT2
   # WIDTH = 600
   # HEIGHT = 300
   # ENCODING = BINARY
   # COMPRESSION = NONE
   # BYTESEX = LITTLE_ENDIAN
   #
   #END_HEADER

Belgian SEVIRI Data Geolocation

Thanks to the EUMETSAT Level 1.5 image rectification, the geolocation of the SEVIRI Belgian data is fixed. Images of the geodetic latitude and of the longitude [in degrees] are available in HDF5 files on our FTP site:
  ftp://gerb.oma.be/seviri/Geolocation
Overlay images (3km and 1km resolution), showing the country borders, are available in the files:
  ftp://gerb.oma.be/seviri/Overlay/BEL_OVERLAY.pgm
  ftp://gerb.oma.be/seviri/Overlay/BEL_HRV_OVERLAY.pgm

Accessing the data

The data is available on the RMIB GERB team file server "tsunami.oma.be" by NFS or by FTP. For FTP, a "guest" user exists but you have to ask for a password. The near real time data is available uncompressed for 5 hours in the Input directory. After that time, the data is compressed (using bzip2) and organized in day-by-day ("YYYYMMDD") directories:
   /tsunami/gerb/SEVIRI/SEVIRI_BEL/Input
   /tsunami/gerb/SEVIRI/SEVIRI_BEL/SEVIRI_BEL_YYYYMMDD 

For data before 20040318

There are 2 problems that affect the data before this date. First, the ROF headers were not as complete as now and did not contain the navigation, calibration and extracted rectangle information. Second, the rectangle used to extract the HRV data was set as a constant and was not adapted according to the image navigation. In this case, the area extracted in the HRV data does not correspond to the one from the standard channels and we do not recommand to use it.

For data before 20040730

Before this date, the color image "YYYYMMDDhhmm_MSG1_SEVIRI_VIS_BEL.jpg" resolution was 3km (300*600 pixels). Afterwards the color image is created at the 1km resolution using the HRV.

Contact

If you need some assistance (or the FTP password), you can contact the GERB team at:
   gerb@oma.be
or the operator at +3223730628.

Annex: Byte Swapping

void byte_swap_16(unsigned short int *buf, size_t num)
{
   while (num--) {
     *buf = ((*buf & 0x00ffU) << 8) | ((*buf & 0xff00U) >> 8);
     buf++;
     }
    
}


Home page