Skip to content
Snippets Groups Projects
readTsgDataOracle.m 4.67 KiB
Newer Older
function [error] = readTsgDataOracle( hMainFig, filename )
% readTsgDataOracle( hMainFig, filename )
% Function to read TSG data a
%
% Input
% -----
% hMainFig ........... Handle to the main user interface
% filename ........... Data filename
%
% Output
% ------
% error .............. 1: OK - -1 : an error occured
%

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

% Get the fieldnames of tsg structure
% -----------------------------------
tsgNames     = fieldnames(tsg);
nbFieldNames = length( tsgNames );

% Get NO_CONTROL, GOOD, PROBABLY_GOOD codes
% -----------------------------------------
NO_CONTROL = tsg.qc.hash.NO_CONTROL.code;
GOOD = tsg.qc.hash.GOOD.code;
PROBABLY_GOOD = tsg.qc.hash.PROBABLY_GOOD.code;

% Display read file info on console
% ---------------------------------
fprintf('\nREAD_ASCII_FILE\n'); tic;

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

% Check file
% -----------
if fid == -1
  msg_error = ['TSG_GOSUD file_lecture : Open file error : ' filename];
  warndlg( msg_error, 'ASCII error dialog');
  sprintf('...cannot locate %s\n', filename);
  error = -1;
  return;
end

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

% Oracle format has no header
% Columns are: 
% yyyy/mm/dd HH:MM(:SS) latx lonx ssjt ssps ? 
% -------------------------------------------
theFormat = '%s %s %f %f %f %f %d';
cellData = textscan( fid, theFormat );
nrecords=length(cellData{1});

% Fill TSG attributes (extracted from filename)
% ---------------------------------------------
tsg.report.tsgfile = filename;

%remove path and extension from filename
%---------------------------------------
whereSeparator=find(filename=='/' | filename=='\');
if ~isempty(whereSeparator)
    shortname=filename(max(whereSeparator)+1:end);
else
    shortname=filename;
end
shortname=shortname(1:max(find(shortname=='.'))-1);

tsg.CYCLE_MESURE = lower(shortname);

%deduce PLATFORM_NAME and CALL_SIGN from 4-letter code
%-----------------------------------------------------
switch lower(shortname(1:4))
    case 'ante'
        tsg.PLATFORM_NAME= 'antea';
        tsg.SHIP_CALL_SIGN = 'FNUR';
    case 'atal'
        tsg.PLATFORM_NAME= 'atalante';
        tsg.SHIP_CALL_SIGN = 'FNCM';
    case 'cave'
        tsg.PLATFORM_NAME= 'cap verde';
        tsg.SHIP_CALL_SIGN = 'ELVO3';
    case 'coli'
        tsg.PLATFORM_NAME= 'colibri';
        tsg.SHIP_CALL_SIGN = 'FNHO';
    case {'cons','wate'}
        tsg.PLATFORM_NAME= 'waterberg';
        tsg.SHIP_CALL_SIGN = 'ZSUY';
    case 'lape'
        tsg.PLATFORM_NAME= 'la perouse';
        tsg.SHIP_CALL_SIGN = 'FNDH';
    case 'nuka'
        tsg.PLATFORM_NAME= 'nuka arctica';
        tsg.SHIP_CALL_SIGN = 'OXYH2';
    case 'past'
        tsg.PLATFORM_NAME= 'pasteur';
        tsg.SHIP_CALL_SIGN = 'ELWT7';
    case 'thal'
        tsg.PLATFORM_NAME= 'thalassa';
        tsg.SHIP_CALL_SIGN = 'FNFP';
    case 'touc'
        tsg.PLATFORM_NAME= 'toucan';
        tsg.SHIP_CALL_SIGN = 'FNAV';
    otherwise
        tsg.PLATFORM_NAME= '';
        tsg.SHIP_CALL_SIGN = '';
end

% Fill TSG variables
% ------------------
datechar = char(cellData{1});
timechar = char(cellData{2});
yyyy = str2num(datechar(:,1:4));
mm = str2num(datechar(:,6:7));
dd = str2num(datechar(:,9:10));
HH = str2num(timechar(:,1:2));
MM = str2num(timechar(:,4:5));
if size(timechar,2)>5
    SS = str2num(timechar(:,7:8));
else
    SS = zeros(nrecords,1);
end
tsg.DATE = datestr([yyyy mm dd HH MM SS],...
                   tsg.preference.date_format_variable);
tsg.DAYD = datenum(tsg.DATE, tsg.preference.date_format_variable);
tsg.LATX = cellData{3};
tsg.LONX = cellData{4};
tsg.SSJT = cellData{5};
tsg.SSPS = cellData{6};

% by default, SSPS before correction flagged GOOD 
% -----------------------------------------------
tsg.SSPS_QC=GOOD*ones(nrecords,1,'int32');

% populate tsg.file structure
% ---------------------------
[tsg.file.pathstr, tsg.file.name, tsg.file.ext] = ...
  fileparts(filename);

% Perform some automatic tests
% -----------------------------
automaticQC( hMainFig );

tsg.file.type = 'ASCII';

% Save the data in the application GUI
% ------------------------------------
setappdata( hMainFig, 'tsg_data', tsg );

% Close the file
% --------------
fclose( fid );

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

% Everything OK
% -------------
error = 1;

end