Blame view

tr_sort.m 3.63 KB
e82385a1   Paul Nicot   Ajout des fichier...
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
function tr_sort(num_spot,mission,debut,h1,fin,h2)
% Compilation de données des bouées dérivantes par mission et date
%
%   Attention, heure UTC!! Enregistrements des positions à partir du 20
%   février 2015, certaines positions de spots sont manquantes... (début
%   OHA)
%
%   -» num_spot  = numéro du/des spots à traiter (ex: [1] ou [45 46])
%   -» mission   = diminutif de la mission (3 caractères en capitale)
%   -» debut     = année, mois, jour de début de dérive (ex: 20150315)
%   -» h1        = heure,min de début de dérive (hhmm)
%   -» fin       = année, mois, jour de fin de dérive
%   -» h2        = heure,min de fin de dérive (hhmm)
%   (facultatif, si non précisé -» données compilées jusqu'à maintenant)
%
%   exemple : sort_spot([23 24],'BDC',20150612,1255,20150623,1835)
%
% Le fichier brute de données est situé sur Brandypot:
%   /sas/usagers/share_lasso/data/MEOPAR/spots/spots_pos_clean.csv
%
% Enregistrements sous forme de structure sur Brandypot:
%   sas/usagers/share_lasso/data/MEOPAR/drifter

rootdir = '/sas/usagers/share_lasso/data/MEOPAR';

fid1 = fopen([ rootdir 'spots_pos_clean.csv']);
spot_clean = textscan(fid1,'%f %f %f %f %s', 'delimiter',';');
fclose(fid1);

spot = spot_clean{1,1};
lat  = spot_clean{1,2}; lat(find(lat == -99999)) = NaN;
lon  = spot_clean{1,3}; lon(find(lon == -99999)) = NaN;
nU   = spot_clean{1,4};                 % temps UNIX
nM   = nU/86400 + datenum(1970,1,1);    % temps matlab

% date de début de dérive (en heure UTC)
dat1 = num2str(debut); H1 = num2str(h1,'%04i');
y1 = str2double(dat1(1:4)); m1 = str2double(dat1(5:6)); d1 = str2double(dat1(7:8));
h1 = str2double(H1(1:2)); mm1 = str2double(H1(3:4));
yr = dat1(3:4);

dat1 = datenum(y1,m1,d1,h1,mm1,00);

% date de fin de dérive (en heure UCT)
% si non spécifié, prise de données jusqu'à maintenant
if(~exist('fin','var'))
    % reference à l'heure UTC
    t = utc; dat2 = datenum(t(1),t(2),t(3),t(4),t(5),t(6));
else
    dat2 = num2str(fin); H2 = num2str(h2,'%04i');
    y2 = str2double(dat2(1:4)); m2 = str2double(dat2(5:6)); d2 = str2double(dat2(7:8));
    h2 = str2double(H2(1:2)); mm2 = str2double(H2(3:4));
    
    dat2 = datenum(y2,m2,d2,h2,mm2,00);
end

for i = 1:length(num_spot);
    
        filename = ['s' num2str(num_spot(i),'%03i') '_'  mission yr ]; 
        
        I = find(spot(:) == num_spot(i));       
        tmp = [nM(I) lon(I) lat(I) nU(I)];
               
        K = find(tmp(:,1) > dat1 & tmp(:,1) < dat2);
        
        data = struct('timeM',{0},'lon',{''},'lat',{''},'timeU',{0},...
                        'start',{''},'end',{''},'mission',{''},...
                        'name',{''},'spot',{''});
                    
        data.timeM   = tmp(K,1); data.lon = tmp(K,2); data.lat = tmp(K,3);
        data.timeU   = tmp(K,4);
        
        data.start   = [datestr(data.timeM(1)) ' UTC'];
        if(~exist('fin','var'))
            data.end = [''];
        else
            data.end = [datestr(data.timeM(end)) ' UTC'];
        end
        
        data.spot    = [ num_spot(i) ];
        data.mission = [ mission ];
        data.name    = [ filename ];
        
        if(~exist([ rootdir '/drifter/' mission '/csv' ]));
            mkdir([ rootdir '/drifter/' mission '/csv' ]);
            mkdir([ rootdir '/drifter/' mission '/mat' ]);
        end
        
        pathname = [ rootdir '/drifter/' mission '/mat/'  filename '.mat'];
        save(pathname,'data');
        
        csvname = [ rootdir '/drifter/' mission '/csv/'  filename '.csv'];
        CSV = struct2cell(data);
        CSV = [ CSV(1,1) CSV(2,1) CSV(3,1) CSV(4,1)];
        CSV = cell2mat(CSV);
        dlmwrite(csvname,CSV,'precision', 11);

end