Skip to content
Snippets Groups Projects
read_file_woa01.m 2.17 KiB
Newer Older
function levitus = read_file_woa01(file)
% read WOA01 Levitus T-S-O2, Stddev & nb_obs Netcdf file in memory
% $Id$

filesfound = checkforfiles( file );
if filesfound == 0; 
   warning(['Couldn''t find ', file]);
   levitus = -1;
   return;
end

% il existe un "bug" dans netcdf ligne 409, ncitem retourne une
% erreur dans la variable result

% open file in read mode
% ----------------------
nc = netcdf(which(file),'nowrite');

% Initialise la waitbar de chargement du fichier netCDF
% -----------------------------------------------------
wb = waitbar(0,'');

% We cannot change title property to 'none' (default set as 'tex') inside
% waitbar function (line 81), see
% http://www.mathworks.co.uk/matlabcentral/newsreader/view_thread/115725
% -----------------------------------------------------------------------
hchild = get(wb,'children');
htitle = get(hchild,'title');
set(htitle,'Interpreter','None');

% update waitbar title with Tex mode disable
% ------------------------------------------
waitbar(wb, ['Loading file: ' file ' Please  wait...']);
% loop for every variable
% -----------------------
for i = 1:length(var(nc))
  
  % first initialize the dimensions of the data array
  % -------------------------------------------------
  data = zeros(size(nc{i}));
  
  % then fill with values
  % ---------------------
  data(:) = nc{i}(:);
  
  % finally replace fillvalue with NaN when only fillvalue exist
  % ------------------------------------------------------------
  if ~isempty(fillval(nc{i}))
    data(data == fillval(nc{i})) = NaN;
  end
  
  % assign dynamically variable in structure levitus
  % ------------------------------------------------
  levitus.(name(nc{i})) = data;
  
  % moves the waitbar cursor 
  % ------------------------
  waitbar( i/length(nc{i}), wb);
  
close(wb);
close(nc);


%----------------------------------------------------------------------
%----------------------------------------------------------------------
function filesfound = checkforfiles( file )

if exist(file,'file');
   filesfound = 1;
else 
   filesfound = 0;
end