mirror of https://github.com/ecmwf/eccodes.git
114 lines
2.7 KiB
Perl
Executable File
114 lines
2.7 KiB
Perl
Executable File
package tigge::tools::convert;
|
|
use Exporter;
|
|
use base qw(Exporter);
|
|
@EXPORT=qw(TiggeNameToGrib1 TiggeAbbreviationToGrib1 Grib1ToGrib2 Grib1ToNewId);
|
|
|
|
|
|
use DBI;
|
|
|
|
use strict;
|
|
|
|
sub TiggeNameToGrib1 {
|
|
my ( $self ) = @_;
|
|
|
|
my $DHB1 = DBI->connect("dbi:Pg(RaiseError=>1):dbname=tigge_prod;host=datasvc","max", "");
|
|
|
|
my $prepare = "select grib1_numbers, name, levtype from parameters";
|
|
my $sth = $DHB1->prepare( $prepare );
|
|
$sth->execute();
|
|
|
|
my %result;
|
|
|
|
while( my ( $grib1, $name, $levtype ) = $sth->fetchrow_array() ) {
|
|
$result{ $grib1 . "_" . $levtype } = lc $name;
|
|
}
|
|
|
|
return \%result
|
|
}
|
|
|
|
|
|
sub TiggeAbbreviationToGrib1 {
|
|
my ( $self ) = @_;
|
|
|
|
my $DHB1 = DBI->connect("dbi:Pg(RaiseError=>1):dbname=tigge_prod;host=datasvc","max", "");
|
|
|
|
my $prepare = "select grib1_numbers, abbreviation, levtype from parameters";
|
|
my $sth = $DHB1->prepare( $prepare );
|
|
$sth->execute();
|
|
|
|
my %result;
|
|
|
|
while( my ( $grib1, $abbreviation, $levtype ) = $sth->fetchrow_array() ) {
|
|
$result{ $grib1 . "_" . $levtype } = lc $abbreviation;
|
|
}
|
|
|
|
return \%result
|
|
}
|
|
|
|
|
|
sub Grib1ToGrib2 {
|
|
my ( $self ) = @_;
|
|
|
|
my $DHB1 = DBI->connect("dbi:Pg(RaiseError=>1):dbname=tigge_prod;host=datasvc","max", "");
|
|
|
|
my $prepare = "select grib1_numbers from parameters";
|
|
my $sth1 = $DHB1->prepare( $prepare );
|
|
$sth1->execute();
|
|
|
|
my %result;
|
|
|
|
while( my ( $grib1 ) = $sth1->fetchrow_array() ){
|
|
|
|
my $DHB2 = DBI->connect("dbi:Pg(RaiseError=>1):dbname=metdb_test;host=datasvc","max", "");
|
|
|
|
my $prepare = "select distinct levtype from grib2_test where param_id=?";
|
|
my $sth2 = $DHB2->prepare( $prepare );
|
|
$sth2->execute( $grib1 );
|
|
|
|
while( my ( $levtype ) = $sth2->fetchrow_array() ){
|
|
|
|
my $prepare = "select keyword, value from grib2_test where param_id=? and levtype=?";
|
|
my $sth2 = $DHB2->prepare( $prepare );
|
|
$sth2->execute( $grib1, $levtype );
|
|
|
|
my %key_value;
|
|
|
|
while( my ( $key, $value ) = $sth2->fetchrow_array() ){
|
|
|
|
$key_value{ $key } = $value if( $value ne "255" and $value ne "pressure level [Pa]" )
|
|
}
|
|
|
|
$result{ $grib1 . "_" . $levtype } = \%key_value
|
|
}
|
|
}
|
|
|
|
return \%result
|
|
}
|
|
|
|
|
|
sub Grib1ToNewId {
|
|
my ( $self ) = @_;
|
|
|
|
my $DHB1 = DBI->connect("dbi:Pg(RaiseError=>1):dbname=tigge_prod;host=datasvc","max", "");
|
|
|
|
my $prepare = "select grib1_numbers from parameters";
|
|
my $sth1 = $DHB1->prepare( $prepare );
|
|
$sth1->execute();
|
|
|
|
my %result;
|
|
|
|
while( my ( $NewId ) = $sth1->fetchrow_array() ){
|
|
|
|
my $grib1 = $NewId;
|
|
$grib1 =~ s/^(\d\d\d)(\d\d\d)\Z/\2.\1/;
|
|
$grib1 =~ s/^(\d{1,3})\Z/\1.128/;
|
|
|
|
$grib1 =~ s/^0*//;
|
|
$result{ $grib1 } = $NewId + 0;
|
|
}
|
|
|
|
return \%result
|
|
}
|
|
|
|
1;
|