Newer
Older
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
function [error] = readArgoLocean( hMainFig, filename)
% Format :
% 1,6 Date du profil ARGO : YYYY-MM-DD HH:MI:SS
% 7 Longitude du profil ARGO
% 8 Latitude du profil ARGO
% 9 Numero du profileur
% 10 Numero du cycle
% 11 Pression de la mesure ARGO (*)
% 12 Qualit de la pression
% 13 Salinit ARGO
% 14 Qualit de la salinit
% 15 Temprature ARGO
% 16 Qualit de la temprature
% 17 Diffrence temporelle moyenne entre la mesure ARGO et les mesures TSG (**) (***)
% 18 Distance moyenne entre les mesures TSG et le profil ARGO (***)
% 19 Nombre de salinits TSG
% 20 Moyenne des salinits TSG
% 21 Ecart-type des salinits TSG
% 22 Nombre de tempratures TSG
% 23 Moyenne des tempratures TSG
% 24 Ecart-type des tempratures TSG
% (*) : par defaut la pression la plus proche de 5m comprise entre 0 et 10m et ayant une qualit de mesure de '1' ou '2'
% (**) : moins de R km et +/-J jours (par defaut R=50km et J=5jours)
% (***) : interviennent toutes les mesures o au moins la SSS ou la SST ont une qualit de '1' ou '2'
% Get the tsg structure from application GUI
% ------------------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% Get NO_CONTROL code value
% -------------------------
NO_CONTROL = get(tsg.qc.hash, 'NO_CONTROL', 'code');
% Display read file info on console
% ---------------------------------
fprintf('\nREAD ARGO_LOCEAN FILE\n'); tic;
% Open the file
% -------------
fid = fopen( filename, 'r' );
% Check file
% -----------
if fid == -1
msg_error = ['readArgoLocean file_lecture : Open file error : ' filename];
warndlg( msg_error, 'ASCII error dialog');
sprintf('...cannot locate %s\n', filename);
error = -1;
return;
end
% Read the file
% -------------
data = fscanf(fid,...
'%d-%d-%d %d:%d:%d %f %f %d %d %f %d %f %d %f %d %f %f %d %f %f %d %f %f',...
[24 Inf])';
% close the file
% --------------
fclose(fid)
% Every variable are put in a 'argo' structure
% --------------------------------------------
argo.DAYD_EXT = datenum(data(:,1), data(:,2), data(:,3), data(:,4), ...
data(:,5), data(:,6));
argo.DAYD_EXT = argo.DAYD_EXT + data(:,17);
% save original date
% ------------------
argo.DATE_EXT = datestr( argo.DAYD_EXT, 'yyyymmddHHMMSS' );
argo.LONX_EXT = data(:, 7);
argo.LATX_EXT = data(:, 8);
argo.SSPS_EXT = data(:, 13);
argo.SSTP_EXT = data(:, 15);
% pre-allocate and fill SSPS_WS_QC with 'NO_CONTROL' code value
% -------------------------------------------------------------
argo.SSPS_EXT_QC = castByteQC( NO_CONTROL, argo.SSPS_EXT );
argo.SSTP_EXT_QC = castByteQC( NO_CONTROL, argo.SSTP_EXT );
% Create a string matrix for the type of data
% --------------------------------------------
[m, n] = size(data);
label = 'ARGO';
argo.SSPS_EXT_TYPE = label( ones(m,1), :);
argo.SSTP_EXT_TYPE = label( ones(m,1), :);
% No analysis date for ARGO floats
% ---------------------------------
label = '19500101000000';
argo.SSPS_EXT_ANALDATE = label( ones(length(argo.SSPS_EXT),1), :);
% keep data only within TSG data time-limit
% -----------------------------------------
ind = find( argo.DAYD_EXT < tsg.DAYD(1) | argo.DAYD_EXT > tsg.DAYD(end));
argo.DAYD_EXT(ind) = [];
argo.DATE_EXT(ind,:) = [];
argo.LATX_EXT(ind) = [];
argo.LONX_EXT(ind) = [];
argo.SSPS_EXT(ind) = [];
argo.SSPS_EXT_QC(ind) = [];
argo.SSPS_EXT_TYPE(ind,:) = [];
argo.SSPS_EXT_ANALDATE(ind,:) = [];
argo.SSTP_EXT(ind) = [];
argo.SSTP_EXT_QC(ind) = [];
argo.SSTP_EXT_TYPE(ind,:) = [];
% Transfer the 's' structure to the 'tsg' structure
% -------------------------------------------------
error = concatSample( hMainFig, argo );
if error
tsg.report.extfile = filename;
end
% Display time to read file on console
% ------------------------------------
t = toc; fprintf('...done (%6.2f sec).\n\n',t);
end