eccodes/tigge/tools/convert.pm

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;