LADCPproc.loadCTD
changeset 2 16726a31a399
parent 1 54222c82435f
child 6 2cc7f3b110af
equal deleted inserted replaced
1:54222c82435f 2:16726a31a399
     1 #======================================================================
     1 #======================================================================
     2 #                    L A D C P P R O C . L O A D C T D 
     2 #                    L A D C P P R O C . L O A D C T D 
     3 #                    doc: Thu Dec  9 18:39:01 2010
     3 #                    doc: Thu Dec  9 18:39:01 2010
     4 #                    dlm: Mon Jan 10 12:13:54 2011
     4 #                    dlm: Sat Jan 22 21:40:12 2011
     5 #                    (c) 2010 A.M. Thurnherr
     5 #                    (c) 2010 A.M. Thurnherr
     6 #                    uE-Info: 31 30 NIL 0 0 72 2 2 4 NIL ofnI
     6 #                    uE-Info: 174 0 NIL 0 0 72 2 2 4 NIL ofnI
     7 #======================================================================
     7 #======================================================================
     8 
     8 
     9 # HISTORY:
     9 # HISTORY:
    10 #	Dec  9, 2010: - exported from LADCPproc
    10 #	Dec  9, 2010: - exported from LADCPproc
    11 #				  - added support for ASCII files
    11 #				  - added support for ASCII files
    12 #	Dec 16, 2010: - BUG cnv read did not work any more
    12 #	Dec 16, 2010: - BUG cnv read did not work any more
    13 #	Jan 10, 2010: - added code to skip ANTS header
    13 #	Jan 10, 2011: - added code to skip ANTS header
       
    14 #	Jan 22, 2011: - adapted to new -g
    14 
    15 
    15 sub readCTD_ASCII($$)
    16 sub readCTD_ASCII($$)
    16 {
    17 {
    17 	my($fn,$dtaR) = @_;
    18 	my($fn,$dtaR) = @_;
    18 
    19 
    19 	croak("$fn: unknown pressure field\n")    unless defined($CTD_ASCII_press_field);
    20 	croak("$fn: unknown pressure field\n")    unless defined($CTD_ASCII_press_field);
    20 	croak("$fn: unknown temperature field\n") unless defined($CTD_ASCII_temp_field);
    21 	croak("$fn: unknown temperature field\n") unless defined($CTD_ASCII_temp_field);
    21 	croak("$fn: unknown salinity field\n")    unless defined($CTD_ASCII_salin_field);
    22 	croak("$fn: unknown salinity field\n")    unless defined($CTD_ASCII_salin_field);
    22 	croak("$fn: unknown latitude field\n")    unless defined($CTD_ASCII_lat_field);
    23 	unless (numberp($dtaR->{lat})) {
    23 	croak("$fn: unknown longitude field\n")   unless defined($CTD_ASCII_lon_field);
    24 		croak("$fn: unknown latitude field\n")    unless defined($CTD_ASCII_lat_field);
       
    25 		croak("$fn: unknown longitude field\n")   unless defined($CTD_ASCII_lon_field);
       
    26 	}
    24 
    27 
    25 	$CTD_ASCII_badval = 9e99 unless defined($CTD_ASCII_badval);
    28 	$CTD_ASCII_badval = 9e99 unless defined($CTD_ASCII_badval);
    26 
    29 
    27 	open(F,$fn) || croak("$fn: $!\n");
    30 	open(F,$fn) || croak("$fn: $!\n");
    28 	my($sumLat,$sumLon); my($nPos) = 0;
    31 	my($sumLat,$sumLon); my($nPos) = 0;
    31 		next if ($ds =~ /^#/);
    34 		next if ($ds =~ /^#/);
    32 		my(@rec) = split('\s+',$ds);
    35 		my(@rec) = split('\s+',$ds);
    33 		push(@{$dtaR->{press}},($rec[$CTD_ASCII_press_field-1] == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_press_field-1]);
    36 		push(@{$dtaR->{press}},($rec[$CTD_ASCII_press_field-1] == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_press_field-1]);
    34 		push(@{$dtaR->{temp}}, ($rec[$CTD_ASCII_temp_field-1]  == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_temp_field-1]);
    37 		push(@{$dtaR->{temp}}, ($rec[$CTD_ASCII_temp_field-1]  == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_temp_field-1]);
    35 		push(@{$dtaR->{salin}},($rec[$CTD_ASCII_salin_field-1] == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_salin_field-1]);
    38 		push(@{$dtaR->{salin}},($rec[$CTD_ASCII_salin_field-1] == $CTD_ASCII_badval) ? nan : $rec[$CTD_ASCII_salin_field-1]);
    36 		unless ($rec[$CTD_ASCII_lat_field-1] == $CTD_ASCII_badval) {
    39 		unless (!defined($CTD_ASCII_lat_field) || $rec[$CTD_ASCII_lat_field-1] == $CTD_ASCII_badval) {
    37 			$nPos++;
    40 			$nPos++;
    38 			$sumLat += $rec[$CTD_ASCII_lat_field-1];
    41 			$sumLat += $rec[$CTD_ASCII_lat_field-1];
    39 			$sumLon += $rec[$CTD_ASCII_lon_field-1];
    42 			$sumLon += $rec[$CTD_ASCII_lon_field-1];
    40 		}
    43 		}
    41 	}
    44 	}