tr_sort.m 3.05 KB
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 Mingan:
%   /share/archives/partage_lasso/spot/spots_pos_flag_clean.csv
%
% Enregistrements sous forme de structure sur Mingan:
%   /share/archives/partage_lasso/spot/drifter

rootdir = '/share/archives/partage_lasso/spot';

fid1 = fopen([ rootdir '/spots_pos_flag_clean.csv']);
header = textscan(fid1,'%s;%s;%s;%s;%s;%s',1);
spot_clean = textscan(fid1,'%f %f %f %f %s %s','Delimiter',';');
fclose(fid1);

% temps matlab
nM = spot_clean{1,4}/86400 + datenum(1970,1,1);

% 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 ]; 
        
        K = find(spot_clean{1,1} == num_spot(i) & nM> dat1 & nM < dat2);

        data = struct('spot',{''},'lon',{''},'lat',{''},'timeU',{0},...
                       'timeM',{0},'flag',{''});              
        data.timeM   = nM(K);
        data.lon     = spot_clean{1,2}(K);
        data.lat     = spot_clean{1,3}(K);
        data.timeU   = spot_clean{1,4}(K);
        data.flag    = spot_clean{1,6}(K);
        data.spot    = spot_clean{1,1}(K); 
      
        if(~exist([ rootdir '/drifter/' mission ]));
            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 = struct2table(data);
  
        writetable(CSV,csvname);
end