libWOCE.pl
author Andreas Thurnherr <ant@ldeo.columbia.edu>
Mon, 13 Apr 2020 11:06:22 -0400
changeset 40 c1803ae2540f
parent 0 a5233793bf69
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    L I B W O C E . P L 
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Mon Aug 28 11:07:47 2000
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     4
#                    dlm: Thu Dec 10 13:43:44 2009
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2000 A.M. Thurnherr
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     6
#                    uE-Info: 31 33 NIL 0 0 72 2 2 4 NIL ofnI
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	Sep 04, 2000: - created from [libNODC.pl]
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
#	Sep 19, 2000: - added &q_OK()
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
#	Jan  2, 2002: - added optional length argument to &q_OK()
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
#				  - allowed NaN observations in &q_OK()
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
#	Aug 14, 2002: - added &csv_q_OK()
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
#	Jun 19, 2004: - made Y2K compatible
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
#	Apr  4, 2006: - added flt_qual(), flt_src()
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
#   Jul  1, 2006: - Version 3.3 [HISTORY]
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
#	Dec 10, 2009: - adapted to netCDF processing
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
require "$ANTS/libconv.pl";		# imply lat/lon conversions
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
# date/time
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
sub YYYYMMDD(@)		# 8 digit date
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
	my($YYYYMMDD) = &antsFunUsage(1,"8","YYYYMMDD",@_);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
	return substr($YYYYMMDD,4,2) . '/' .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
		   substr($YYYYMMDD,6,2) . '/' .
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
		   substr($YYYYMMDD,0,4);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
sub HHMM(@)			# 4 digits
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
	$_[0] = sprintf('%04d',$_[0]) if (@_ > 0);		# pre-pad with 0es
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
	my($HHMM) = &antsFunUsage(1,"4","HHMM",@_);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
	return substr($HHMM,0,2) . ":" . substr($HHMM,2,2);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
# CTD quality flags
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
sub q_OK(@)			# exchange-format version (single flags)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
	return $_[1] == 2 ? $_[0] : nan;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
# Float Quality/Source Flags [/Data/Floats/DBE/WFDAC/WDBE/quality.doc]
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
#	- 2-digit decimal number
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    53
#	- 10s: quality (0-9, with 9 being best)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
#	-  1s: source:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
#			0	missing
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
#			1	interpolated 	(backward diff for u/v)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
#			2					(forward diff for u/v)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
#			3	splined
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    59
#			4	manually edited
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    60
#			5	filtered/averaged
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    61
#			9	original value
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    62
#	- should accept source values >= 4
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    63
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    64
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    65
sub flt_qual($)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    66
{ return int($_[0] / 10); }
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    67
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    68
sub flt_src($)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    69
{ return $_[0] % 10; }
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    70
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    71
1;