This is an old revision of the document!
Usage:
bufrdump.pl <bufr file(s)>
[--filter <filter file>]
[--param <parameter file> [--csv]]
[--sort | --sort_on <parameter>[-]]
[--transform <transformation file>]
[--lon1 x1]
[--lat1 y1]
[--lon2 x2]
[--lat2 x2]
[--tablepath <path to BUFR tables>]
[--help]
Options:
--filter <filter file>
Decode observations meeting criteria in <filter file> only
--param <parameter file> [--csv]
Print parameters in <parameter file> only, in same order
as they occur in <parameter file>. If --csv, the parameters
vill be printed using the CSV (comma separated values) format
--sort Sort the decoded observations on station identification;
first stations with wmonr, then stations with call sign,
then stations with buoy_id (others left out)
--sort_on <parameter>[-] Sort the decoded observations on increasing
values of <parameter>, or decreasing values if a '-'
follows the parameter name. Observations not containing
the parameter at all will be printed lastly. E.g.
--sort_on TA- will sort on decreasing temperatures
--transform <transformation file>
Do the transformations of parameter values listed in
<transformation file>
--lon1 x1 Decode observations with longitude >= x1 only
--lat1 y1 Decode observations with latitude >= y1 only
--lon2 x2 Decode observations with longitude <= x2 only
--lat2 y2 Decode observations with latitude <= y2 only
x1,y1,x2,y2 should be decimal degrees
--tablepath <path to BUFR tables>
Set path to BUFR tables (overrides ENV{BUFR_TABLES})
--help Print this Usage
Options may be abbreviated, e.g. --h or -h for --help.
To avoid having to use the "--tablepath" option, you are adviced to set
the invironment variable BUFR_TABLES to the directory where your BUFR
tables are located (unless the default path provided by bufrdump.pl
works for you).
The lines in <parameter file> should be name of the parameters you want
to be printed. For example, if you want only station identification and
temperature to be printed for a BUFR SYNOP file, the <parameter file>
should look like this:
wmonr
call_sign
TA
If you want "parameter=value" to be printed also when value is missing
in BUFR message, precede the parameter name with an exclamation mark
(e.g. '!TA'). Missing values will then be displayed as -32767.
If --csv is used in conjunction with --param, all values will be printed
using the CSV format, with first line listing the parameters, and with
missing fields printed as -32767 if the parameter is marked with '!' in
parameter file. With the parameter file above, the listing may for
example start like
wmonr,call_sign,TA
01001,,-1.5
,LF5U,9.0
Using --filter will decode only those observations that meet at least
one of the BUFR descriptor criteria and all of the parameter criteria in
<filter file>, where the BUFR descriptor criteria should come first in
filter file followed by a blank line, then comes the parameter criteria
which should match <param> or <param> <operator> <value> where operator
is one of =, !=, <, <=, > and >=. An example filter file is
D: 001001 I2.2
01
D: 001001 I2.2 001002 I3.3
03 895
06 252
D: 001011 A9
LF5U
type = Manned
NN != 8
TA >= 5
TA < 9.5
RR_24
which decodes all observations with block number 01, two other specific
wmo stations and one specific ship, being manned stations and having
cloud cover different from 8 (but NN must be part of the message) and
temperature between 5 and 9.5 degrees Celsius and containing
precipitation for last 24 hours. Comment lines starting with # will be
ignored.
Another example: the simple filter file (starting with a blank line!)
wmonr
will print only those observations containing a wmonr (skipping ships).
The --transform option is provided mainly to be able to use other units
than what is default in bufrdump.pl. The transformation file should list
the transformations wanted, one per line as
<parameter> = <perl expression involving $x>
where $x is original value of the parameter.
For example, the following transformation file will display wind speed
FF and wind gust FG in knots instead of m/s, rounded to one decimal, and
cloud cover NN in % (instead of the default which is using WMO code
table 2700, roughly counting octas):
FF = sprintf("%.1f", $x*1.9438)
FG = sprintf("%.1f", $x*1.9438)
NN = int($x*12.5 + .5)
If --transform is combined with --filter, the filter criteria should
refer to the transformed values. E.g. if the above NN transform to % is
to be applied for sky not all covered by clouds, you should use NN !=
100 instead of NN != 8 in filter file.