Usage:
bufrdump.pl <bufr file(s)>
[--filter <filter file>]
[--param <parameter file | parameter list> [--csv]]
[--sort]
[--sort_on <parameter>[-]]
[--station <station list>]
[--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 | parameter list> [--csv]
Print parameters in parameter file or comma separated
list (e.g. wmonr,TA) only, in same order as they occur
there. 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. E.g. --sort_on TA- will
sort on decreasing temperatures. Observations not
containing the parameter at all will be printed lastly,
except when --sort_on is combined with --sort (in which
case sorting is done firstly on station identification,
secondly on <parameter> with missing values printed first)
--station <station list>
Print observations for stations in station list only,
e.g. wmonr=01384,01492
--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 (but you might instead prefer to use
perldoc bufrdump.pl)
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>, or the comma separated values in
<parameter list>, 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, either supply
wmonr,call_sign,TA
as argument to --params, or supply a <parameter file> which 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 the
argument to --param is a parameter list, you must prevent the shell from
attaching special meaning to the exclamation mark by enclosing the list
in single quotes.
If the parameter list consists of one parameter only, a comma must be
appended (e.g. 'wmonr,') because bufrdump.pl uses the appearence of
comma to signal that this is not a filename but parameter name(s).
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 or list. 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).
To avoid the need of creating a filter file when observations for some
few stations are requested, you can provide the stations in a comma
separated list after option --station. Three examples:
--station wmonr=01001,01152,01492
--station call_sign=LF5U
--station buoyid=64607,64609
You cannot mix different kinds of stations this way (before '=' you must
choose either wmonr, call_sign or buoy_id). Note also that providing the
stations in the BUFR descriptor part (first part) of the filter file
will speed up execution time considerably, compared to using option
--station. It is possible to combine --filter with --station if done
with some care, e.g, specifying WMO block 01 and the required parameters
in filter file, then the requested stations in station list.
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.