USS Bear (1939-40)

USS Bear was the expedition ship for the United States Antarctic Service Expedition, commanded by Richard E. Byrd.

Transcribed observations

Conversion script

#!/usr/bin/perl

# Process digitised logbook data from The USS Bear into
#  IMMA records.

use strict;
use warnings;
use lib "/home/hc1300/hadpb/tasks/digitisation/imma/";
use IMMA;
use Getopt::Long;
use FindBin;

my $Ship_name = 'USS Bear';
my ( $Year, $Month, $Day, $Lat, $Lon );

while (<>) {

    if ( $_ !~ /^\s*\d/ ) { next; }    # Discard headers

    my @Fields = split /\t/, $_;

    if ( defined( $Fields[0] ) && $Fields[0] =~ /\d/ ) {
        $Year = $Fields[0];
    }
    if ( defined( $Fields[1] ) && $Fields[1] =~ /\d/ ) {
        $Month = $Fields[1];
    }

    my $Ob = new IMMA;
    $Ob->clear();                      # Why is this necessary?
    push @{ $Ob->{attachments} }, 0;

    $Ob->{YR}  = $Year;
    $Ob->{MO}  = $Month;
    $Ob->{DY}  = $Fields[2];
    $Ob->{HR}  = $Fields[5];
    $Ob->{LAT} = $Fields[3] * -1;

    # Longitude is missing its most significant figure
    if ( $Fields[4] < 80 ) {
        $Ob->{LON} = ( 100 + $Fields[4] ) * -1;
    }
    else {
        $Ob->{LON} = $Fields[4] * -1;
    }
    $Ob->{LI} = 0;    # Degrees and tenths

    # Pressure converted from inches
    $Ob->{SLP} = $Fields[6] * 33.86;

    # Temperatures in F
    if ( defined( $Fields[7] ) && $Fields[7] =~ /\d/ ) {
        $Ob->{SST} = ( $Fields[7] - 32 ) * 5 / 9;
        $Ob->{IT}  = 6;                             # Whole degrees Farenheit
    }

    # Fill in extra metadata
    $Ob->{IM}   = 0;                                # Check with Scott
    $Ob->{ATTC} = 1;                                # Icoads
    $Ob->{TI}   = 0;                                # Nearest hour
    $Ob->{DS}   = undef;                            # Unknown course
    $Ob->{VS}   = undef;                            # Unknown speed
    $Ob->{NID}  = 3;                                # Check with Scott
    $Ob->{II}   = 10;                               # Check with Scott
    $Ob->{ID}   = $Ship_name;
    $Ob->{C1}   = '02';                             # US

    # Add the icoads attachment
    push @{ $Ob->{attachments} }, 1;
    $Ob->{BSI} = undef;
    $Ob->{B10} = undef;    # 10 degree box
    $Ob->{B1}  = undef;    # 1 degree box
    $Ob->{DCK} = 246;      # Deck ID - from Scott
    $Ob->{SID} = 127;      # Source ID - from Scott
    $Ob->{PT}  = 0;        # 'US Navy or "deck" log, or unknown'
    foreach my $Var (qw(DUPS DUPC TC PB WX SX C2)) {
        $Ob->{$Var} = undef;
    }

    # Other elements all missing
    foreach my $Var ( @{ $IMMA::parameters[1] } ) {
        unless ( exists( $Ob->{$Var} ) ) {
            $Ob->{$Var} = undef;
        }
    }

    # Output the IMMA ob
    $Ob->write( \*STDOUT );
}

Converted observations