bufr.pm:bufralter.pl_source

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
bufr.pm:bufralter.pl_source [2010-10-01 17:16:53]
pals
bufr.pm:bufralter.pl_source [2023-02-05 10:21:16] (current)
pals
Line 1: Line 1:
-<code> +<code perl
-#!/usr/bin/perl -w+#!/usr/bin/perl
  
-# (C) Copyright 2010, met.no+# (C) Copyright 2010-2023 MET Norway
 # #
 # This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
Line 22: Line 22:
  
 use strict; use strict;
 +use warnings;
 use Getopt::Long; use Getopt::Long;
 use Pod::Usage qw(pod2usage); use Pod::Usage qw(pod2usage);
 use Geo::BUFR; use Geo::BUFR;
 +
 +# This is actually default in BUFR.pm, but provided here to make it
 +# easier for users to change to 'ECCODES' if preferred
 +use constant DEFAULT_TABLE_FORMAT => 'BUFRDC';
  
 # Will be used if neither --tablepath nor $ENV{BUFR_TABLES} is set # Will be used if neither --tablepath nor $ENV{BUFR_TABLES} is set
-use constant DEFAULT_TABLE_PATH => '/usr/local/lib/emos/bufrtables';+use constant DEFAULT_TABLE_PATH_BUFRDC => '/usr/local/lib/bufrtables'; 
 +use constant DEFAULT_TABLE_PATH_ECCODES => '/usr/local/share/eccodes/definitions/bufr/tables';
  
 # Parse command line options # Parse command line options
Line 55: Line 61:
            'subcategory=i',            'subcategory=i',
            'subcentre=i',            'subcentre=i',
 +           'tableformat=s',
            'tablepath=s',            'tablepath=s',
            'update_number=i',            'update_number=i',
Line 81: Line 88:
 # Set verbosity level # Set verbosity level
 Geo::BUFR->set_verbose($option{verbose}) if $option{verbose}; Geo::BUFR->set_verbose($option{verbose}) if $option{verbose};
 +
 +# Set BUFR table format
 +my $tableformat = (defined $option{tableformat}) ? uc $option{tableformat} : DEFAULT_TABLE_FORMAT;
 +Geo::BUFR->set_tableformat($tableformat);
  
 # Set BUFR table path # Set BUFR table path
Line 90: Line 101:
     Geo::BUFR->set_tablepath($ENV{BUFR_TABLES});     Geo::BUFR->set_tablepath($ENV{BUFR_TABLES});
 } else { } else {
-    # If all else fails, use the libemos bufrtables +    # If all else fails, use the default tablepath in BUFRDC/ECCODES 
-    Geo::BUFR->set_tablepath(DEFAULT_TABLE_PATH);+    if ($tableformat eq 'BUFRDC') { 
 +        Geo::BUFR->set_tablepath(DEFAULT_TABLE_PATH_BUFRDC); 
 +    } elsif ($tableformat eq 'ECCODES'
 +        Geo::BUFR->set_tablepath(DEFAULT_TABLE_PATH_ECCODES); 
 +    }
 } }
  
Line 102: Line 117:
     $OUT = *STDOUT;     $OUT = *STDOUT;
 } }
 +binmode($OUT);
  
 # Change input separator to 'BUFR' # Change input separator to 'BUFR'
Line 326: Line 342:
  
 =pod =pod
 +
 +=encoding utf8
  
 =head1 SYNOPSIS =head1 SYNOPSIS
Line 354: Line 372:
       [--outfile <file>]       [--outfile <file>]
       [--strict_checking n]       [--strict_checking n]
 +      [--tableformat <BUFRDC|ECCODES>]
       [--tablepath <path to BUFR tables>]       [--tablepath <path to BUFR tables>]
       [--verbose n]       [--verbose n]
Line 369: Line 388:
  
 =head1 OPTIONS =head1 OPTIONS
- 
  
    --data <descriptor=value[+]> Set (first) data value in section 4 for    --data <descriptor=value[+]> Set (first) data value in section 4 for
Line 376: Line 394:
                     to set a missing value. Repeat the option if more                     to set a missing value. Repeat the option if more
                     sequence descriptors are to be set. Example:                     sequence descriptors are to be set. Example:
-                    --data 004004=-1+ --data 00405=50 --data+                    --data 004004=-1+ --data 004005=50 --data
                     012101=missing This will set the data value for                     012101=missing This will set the data value for
                     first (and only first!) occurrence of these 3                     first (and only first!) occurrence of these 3
Line 407: Line 425:
    --compress 0|1   Set compression in section 3 to 0 or 1    --compress 0|1   Set compression in section 3 to 0 or 1
    --remove_sec2    Remove optional section 2 if present    --remove_sec2    Remove optional section 2 if present
-   --remove_qc      Remove all quality information,+   --remove_qc      Remove all quality control information,
                     i.e. remove all descriptors from 222000 on                     i.e. remove all descriptors from 222000 on
    --outfile <filename>    --outfile <filename>
Line 417: Line 435:
                              Nothing more in this message will be                              Nothing more in this message will be
                              decoded/encoded.                              decoded/encoded.
 +   --tableformat    Currently supported are BUFRDC and ECCODES (default is BUFRDC)
    --tablepath <path to BUFR tables>    --tablepath <path to BUFR tables>
                     Set path to BUFR tables (overrides $ENV{BUFR_TABLES})                     Set path to BUFR tables (overrides $ENV{BUFR_TABLES})
-   --verbose n      Set verbose level to n, 0<=n<=(default 0). Verbose+   --verbose n      Set verbose level to n, 0<=n<=(default 0). Verbose
                     output is sent to STDOUT, so ought to be combined with                     output is sent to STDOUT, so ought to be combined with
                     option --outfile                     option --outfile
Line 430: Line 449:
 set the environment variable BUFR_TABLES to the directory where your set the environment variable BUFR_TABLES to the directory where your
 BUFR tables are located (unless the default path provided by BUFR tables are located (unless the default path provided by
-bufralter.pl works for you).+bufralter.pl works for you). For tableformat ECCODES, se 
 +L<http://search.cpan.org/dist/Geo-BUFR/lib/Geo/BUFR.pm#BUFR-TABLE-FILES> 
 +for more info on how to set C<--tablepath> (or BUFR_TABLES).
  
 =head1 AUTHOR =head1 AUTHOR
Line 438: Line 459:
 =head1 COPYRIGHT =head1 COPYRIGHT
  
-Copyright (C) 2010 met.no+Copyright (C) 2010-2023 MET Norway
  
 =cut =cut
 </code> </code>
  • bufr.pm/bufralter.pl_source.1285953413.txt.gz
  • Last modified: 2022-05-31 09:23:11
  • (external edit)