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 } |