1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| % Return variable value
%
% SYNTAX :
% v = get_var_value (this, s, varName, FillValue, ScaleFactor, AddOffset)
% v = get_var_value (this, s, varName, FillValue, ScaleFactor, AddOffset, MissingValue)
%
% INPUT PARAMETERS :
% this : instance of cl_hdf_writer
% s : structure of data and format
% varName : variable name
% FillValue : {0,1}, fill value flag
% ScaleFactor : {0,1}, scale factor value flag
% AddOffset : {0,1}, add offset value flag
% MissingValue : {0,1}, missing value flag
%
% OUTPUT PARAMETERS :
% v : variable value
%
% EXAMPLES :
% [rep, tmp, tmp] = fileparts(which ('cl_hdf_writer/cl_hdf_writer'));
% f = 'exemple.hdf' ;
% fileName = fullfile (rep, 'ressources', f) ;
%
% this = cl_hdf_writer ;
% this = set_file_name (this, fileName) ;
% s = read (this) ;
% get_var_value (this, s, 'wvc_lon', 1, 1, 1)
%
%
% REMARKS :
% . case sensitive
%
% SEE ALSO :
% AUTHORS : DCF
% VERSION : $Id$
% ----------------------------------------------------------------------------
function v = get_var_value (this, s, varName, FillValue, ScaleFactor, AddOffset, varargin)
% ----------------------------------------------------------------------------
% HST
% 01/11/2006 - DCF - creation
% 26/09/2007 - DCF - test if fill value is empty added
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
% Bloc try
try
% --------------------------------------------------------------------------
% Returned values
v = [] ;
% --------------------------------------------------------------------------
% Locales
isOk = 1 ;
% --------------------------------------------------------------------------
% Test s
if (isempty (s))
isOk = 0 ;
warn ('', 'get_var_value', 'empty structure') ;
end
% --------------------------------------------------------------------------
% varargin
if (length(varargin)>0)
MissingValue = varargin{1} ;
else
MissingValue = 0 ;
end
% --------------------------------------------------------------------------
% Loop on variable to get variable name
if (isOk)
iVar = lookfor_var (this, s, varName) ;
if (iVar~=-1)
%
% variable value
v = double(s.var(iVar).value) ;
%
% _FillVallue
if (FillValue)
iFv = lookfor_att (this, s, '_FillValue', varName) ;
if (iFv~=-1)
fv = s.var(iVar).att(iFv).value ;
v (v==fv) = NaN ;
elseif isfield (s.var(iVar), 'fillvalue')
if ~isempty (s.var(iVar).fillvalue)
v (v==s.var(iVar).fillvalue) = NaN ;
end
end
end
%
% missing_value
if (MissingValue)
iMv = lookfor_att (this, s, 'missing_value', varName) ;
if (iMv~=-1)
mv = s.var(iVar).att(iMv).value ;
v (v==mv) = NaN ;
end
% valid range
if isfield (s.var(iVar), 'range')
v (v<s.var(iVar).range(1) | v>s.var(iVar).range(2)) = NaN ;
end
end
%
% scale_factor
if (ScaleFactor)
iSf = lookfor_att (this, s, 'scale_factor', varName) ;
if (iSf~=-1)
v = v * s.var(iVar).att(iSf).value ;
elseif isfield (s.var(iVar), 'cal')
v = v * s.var(iVar).cal{1} ;
end
end
%
% add_offset
if (AddOffset)
iAo = lookfor_att (this, s, 'add_offset', varName) ;
if (iAo~=-1)
v = v + s.var(iVar).att(iAo).value ;
elseif isfield (s.var(iVar), 'cal')
v = v + s.var(iVar).cal{3} ;
end
end
end
%
end
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
% ----------------------------------------------------------------------------
% Bloc catch
catch
err ('cl_hdf_writer', 'get_var_value', lasterr) ;
end |
Partager