Skip to content
Snippets Groups Projects
Commit cda02b61 authored by jacques.grelet_ird.fr's avatar jacques.grelet_ird.fr
Browse files

renomme le fichier

parent 22ed3831
No related branches found
No related tags found
No related merge requests found
function [error] = tsg_writeTSGDataNetCDF( hTsgGUI, filename)
% Function to write TSG data in NetCDF file.
%
% Input
% -----
% hTsgGUI ............ Handel to the main user interface
% filename ........... Data filename
%
% Output
% ------
% error ............. 1 : OK
% ............. -1 : an error occured
%
% The data are store using setappdata - Variable name : 'tsg_data'
%
% Caution : replace the fill-value with NaN
% $Id$
% Open the file
% -------------
nc = netcdf(filename, 'clobber');
if isempty(nc)
msg_error = ['TSG_GOSUD file_lecture : Open file error : ' filename];
warndlg( msg_error, 'NetCDF write dialog');
error = -1;
return;
end
% Initialize loading NetCDF file waitbar
% --------------------------------------
wb = waitbar(0, 'Initializing NetCDF file. Please wait...');
% 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');
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hTsgGUI, 'tsg_data');
% Get global attributes list from class tsg_nc with file 'tsg_ncattr.csv'
% -----------------------------------------------------------------------
nca = tsg_nc('tsg_ncattr.csv');
nca_keys = keys(nca);
% Get GF3 variables list codes from class tsg_nc with file 'tsg_ncvar.csv'
% -----------------------------------------------------------------------
ncv = tsg_nc('tsg_ncvar.csv');
ncv_keys = keys(ncv);
ncv_fieldNames = get_fieldnames(ncv);
% Create NetCDF file:
% -------------------
% Variable dimensions
% -------------------
nc('DAYD') = numel(tsg.DAYD); % number of TSG measurements
nc('DAYD_WS') = numel(tsg.DAYD_WS); % number of water samples
nc('DAYD_EXT') = numel(tsg.DAYD_EXT); % number of external SSPS or SSTP comparison
nc('NCOEF_CAL') = 5; % number of calibration coefficients
nc('NCOEF_LIN') = 2; % number of linearisation coefficients
% Fixed dimensions
% ----------------
nc('STRING256') = 256;
nc('STRING14') = 14;
nc('STRING4') = 4;
nc('N1') = 1;
% display filename after 'Interpreter','None' initialization to prevent
% display console warning
% ---------------------------------------------------------------------
waitbar(1/50,wb,['Writing file: ' filename ' Please wait...']);
% Create NetCDF global attributes
% -------------------------------
for i=1:numel(nca_keys)
nc.(nca_keys{i}) = tsg.(nca_keys{i});
end
% Create NetCDF variables and attributes
% ---------------------------------------------------
for i=1:numel(ncv_keys)
for j=1:numel(ncv_fieldNames)
fn = ncv_fieldNames{j};
% define dimension
if strcmp(fn,'dimension')
nc{ncv_keys{i}} = ncfloat(get(ncv, ncv_keys{i}, fn));
% define variable atributes
elseif ~isempty(get(ncv, ncv_keys{i}, fn))
if ischar(get(ncv, ncv_keys{i}, fn))
nc{ncv_keys{i}}.(fn) = ncchar(get(ncv, ncv_keys{i}, fn));
else
nc{ncv_keys{i}}.(fn) = ncfloat(get(ncv, ncv_keys{i}, fn));
end
end
end
end
% Create data to NetCDF file:
% ---------------------------
% Write global attributes
% -----------------------
for i=1:numel(nca_keys)
nc.(nca_keys{i}) = tsg.(nca_keys{i});
end
% Convert Matlab julian days (datenum) to 1950 reference
% ------------------------------------------------------
d = strmatch('DAYD',ncv_keys);
for i=1:numel(d)
tsg.(ncv_keys{d(i)}) = datenumToJulian(tsg.(ncv_keys{d(i)}));
end
% Write measurements (variables)
% -------------------------------
for i=1:numel(ncv_keys)
% display waitbar
waitbar( i/numel(ncv_keys), wb, ['writing ' ncv_keys{i} ' variable']);
% DATE as two dimension
if strmatch('DATE',ncv_keys(i))
nc{ncv_keys{i}}(:,:) = tsg.(ncv_keys{i});
else
% other one dimension
nc{ncv_keys{i}}(:) = tsg.(ncv_keys{i});
end
end
% Close waitbar
% -------------
close(wb)
% Close NetCDF file
% -----------------
endef(nc)
close(nc)
% Everything OK
% -------------
error = 1;
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment