WXP version 5
User's Guide

Data Ingest: Header Files

To aid in the parsing of products from the various feeds, a header file can be created by the ingest program.  This essentially lists the header of each product in the file along with its byte offset into the file.  Since most parsing is based on header, it is far easier to search the smaller header file than to parse through the much larger product file. The use of header files improves the speed of data parsing by nearly an order of magnitude, especially if the file does not exist on a local hard drive.  For GRIB data, header files provide a simple means to pull specific grids from a large GRIB file.  These files can be larger than 10MB and thus full parsing for a grid can be time consuming.  The header file means a program can seek directly to the grid location thus reading 2-5KB of data rather than the entire file.  This not only speeds up data processing but also reduces network traffic.

Header File Syntax

The syntax of the file is as follows:

offset header / extra
offset header / extra
....

where:

A sample from a forecast data header file:

      0 FPUS86 KPQR 282359 / OPUPDX
   3264 FPUS85 KGGW 290001 / OPUGGW
   3548 FPAK11 PAYA 282207 / &ZCZC JNULFPYAK
   4190 FPUS73 KFGF 282359 / NOWFAR
   6865 FPAK57 PAJK 290001 CCA / &ZCZC JNUZFPAK
   9613 FPUS73 KLBF 290002 / NOWLBF
  10092 FPUS73 KGRB 290001 / NOWGRB
  10588 FPAK11 PAFA 290005&ZCZC FAILFPFAI / AKZ007-290530-
  11366 FCCN51 CWAO 290001 AAA / TAF AMD CYUY 290001Z
  11592 FPAK57 PAJK 290001 CCA / &ZCZC JNUZFPAK
  14342 FPAK11 PAFA 290005 / &ZCZC FAILFPFAI              

The header file is from a GRIB product, the decoded GRIB information is listed including model number, grid number, forecast time, level type, level number and variable/parameter number.  To decode these numbers, see the Appendix (WXP Product Descriptions). Since GRIB headers are not unique, this information is needed to uniquely describe the contents of the product.

3087563 YORB10 KWBE 131500 /  85 212       6 100     100  39
3102432 ZORE10 KWBE 131500 /  85 212       9 100     100  39
3117301 YCUA99 KWBE 131500 PAA /  85 215       0 100    1000  41
3230510 YCUA85 KWBE 131500 PAA /  85 215       0 100     850  41
3336000 YCUA70 KWBE 131500 PAA /  85 215       0 100     700  41
3352511 YCUA50 KWBE 131500 PAA /  85 215       0 100     500  41
3368533 YCUA25 KWBE 131500 PAA /  85 215       0 100     250  41
3474022 YTUA98 KWBE 131500 PAA /  85 215       0 105       2  11
3487852 YUUA98 KWBE 131500 PAA /  85 215       0 105      10  33
3583433 YVUA98 KWBE 131500 PAA /  85 215       0 105      10  34
3599668 YRUA98 KWBE 131500 PAA /  85 215       0 105       2  52
3635495 YPUA98 KWBE 131500 PAA /  85 215       0   1       0   1 

Creation of Header Files

The creation of header is done automatically by the WXP ingestor if the header file name convention is added to the bulletin file.  For example for forecast data:

F[^O]             >>    %D/%y%m%d%6h_for.wmo  %D/%y%m%d%6h_for.hdr

The first name convention listed "%D/%y%m%d%6h_for.wmo" is the filename where the actual product is saved. The second name convention "%D/%y%m%d%6h_for.hdr" is where the header file information is saved.  It is recommended that header files be created for any product that requires parsing.  Here is a list:

The sample ingest bulletin file also lists those products that need header files.

Header Files and the LDM

The LDM cannot generate header files so WXP has two programs that will generate header files for LDM data.

For header files to work, they must be continually generated as the data arrives.   This means that a script should be run in cron once a minute to generate these files.  Here is a sample script:

#! /bin/csh -f

setenv wxpdefault /usr/wxp/etc

foreach model ( eta ngm ruc \
   avn_n0e avn_n1e avn_n0w avn_n1w \
   avn_s0e avn_s1e avn_s0w avn_s1w \
   mrf_nh mrf_us mrf_ak mrf_hi mrf_pr \
   mrf_nhem mrf_shem )
   /usr/wxp/bin/griblook -cu=la -mo=$model -ou=hdrfile -pf=app -me=none
end

foreach type ( for_dat sev_dat cli_dat sum_dat mos_dat )
   /usr/wxp/bin/hdrparse -cu=la -if=$type -pf=app -me=none
end 

Both programs are run in append mode so that they only parse what has come in since the last running of the program.  The program uses the existing header file to find out the location of the last product seen when the program ran last.  It then starts parsing from that point and appends the new products to the end of the existing header file.  This reduces the execution time of the script considerably.


Last updated July 21, 1998