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. 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 first on station identification, secondly on <parameter> with missing values printed firstly) --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.