Skip to content
Snippets Groups Projects
writeTsgDataTsg.m 3.4 KiB
Newer Older
function [error] = writeTsgDataTsg( hMainFig, filename)
%
% Function to write the TSG data in an ASCII file
%
% Input
% -----
% hMainFig ............ 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'
%

PARA = ['SSPS'; 'SSJT'; 'SSTP'];

% Open the file
% -------------
fid = fopen( filename, 'wt' );

error = -1;
if fid ~= -1

  % Display write file info on console
  % ---------------------------------
  fprintf('\nWRITE_TXT_FILE\n'); tic;

  % Display more info about write file on console
  % ---------------------------------------------
  fprintf('...writing %s : ', filename);

  % Get the data from the application GUI
  % -------------------------------------
  tsg = getappdata( hMainFig, 'tsg_data');

  nbRecords = length( tsg.DAYD );

  if nbRecords ~= 0

    [year, month, day, hour, min, sec] = datevec( tsg.DAYD );
    sec = fix( sec );

    for i = 1 : 3
      
      para = PARA(i,:);
      
      if isempty(tsg.(para))
        tsg.(para) = NaN * ones( size( tsg.DAYD ) );
      end
      
      if isempty(tsg.([para '_QC']))
        tsg.([para '_QC']) = zeros( size( tsg.DAYD ) );
      end
      
      if isempty(tsg.([para '_ADJUSTED']))
        tsg.([para '_ADJUSTED']) = NaN * ones( size( tsg.DAYD ) );
      end
      
      if isempty(tsg.([para '_ADJUSTED_ERROR']))
        tsg.([para '_ADJUSTED_ERROR']) = NaN * ones( size( tsg.DAYD ) );
      end
      
      if isempty(tsg.([para '_ADJUSTED_QC']))
        tsg.([para '_ADJUSTED_QC']) = zeros( size( tsg.DAYD ) );
      end
      
    end

    tsg_data = [year month day hour min sec tsg.LATX  tsg.LONX ...
tsg.SSPS double(tsg.SSPS_QC) ...
tsg.SSPS_ADJUSTED tsg.SSPS_ADJUSTED_ERROR double(tsg.SSPS_ADJUSTED_QC)...
tsg.SSJT double(tsg.SSJT_QC) ...
tsg.SSJT_ADJUSTED tsg.SSJT_ADJUSTED_ERROR double(tsg.SSJT_ADJUSTED_QC) ...
tsg.SSTP double(tsg.SSTP_QC) ...
tsg.SSTP_ADJUSTED tsg.SSTP_ADJUSTED_ERROR double(tsg.SSTP_ADJUSTED_QC)];

    % Write some information
    % ----------------------
    if ~isempty( tsg.CYCLE_MESURE )
      fprintf( fid, '%%CYCLE_MESURE %s\n', tsg.CYCLE_MESURE);
    end

    if ~isempty( tsg.PLATFORM_NAME )
      fprintf( fid, '%%PLATFORM_NAME %s\n', tsg.PLATFORM_NAME);
    end

               
    % Write the header
    % ----------------
    headDate = 'yyyy mm dd hh mm ss ';
    headPos  = 'LATX LONX ';
    headSSPS = 'SSPS SSPS_QC SSPS_ADJUSTED SSPS_ADJUSTED_ERROR SSPS_ADJUSTED_QC ';
    headSSJT = 'SSJT SSJT_QC SSJT_ADJUSTED SSJT_ADJUSTED_ERROR SSJT_ADJUSTED_QC ';
    headSSTP = 'SSTP SSTP_QC SSTP_ADJUSTED SSTP_ADJUSTED_ERROR SSTP_ADJUSTED_QC ';
    
    fprintf( fid, ['%%HEADER ' headDate headPos headSSPS headSSJT headSSTP '\n']);
    fprintf( fid, '%%DATA\n');
    
    fprintf(fid,...
    '%04d %02d %02d %02d %02d %02d %12.7f %12.7f %6.3f %1d %6.3f %6.3f %1d %6.3f %1d %6.3f %6.3f %1d %6.3f %1d %6.3f %6.3f %1d\n',...
    tsg_data');

    % Clear the Workspace
    % -------------------
    clear tsgdata
  
    % Everything OK
    % -------------
    error = 1;
    
  end

  % Close the file
  % --------------
  fclose( fid );
  
  % Display time to write file on console
  % -------------------------------------
  t = toc; fprintf('...done (%6.2f sec).\n\n',t);

end