tr_sort.m 4.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 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

<<<<<<< HEAD
%rootdir = '/sas/usagers/share_lasso/data/MEOPAR';
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',';');
=======
rootdir = '/sas/usagers/share_lasso/data/MEOPAR';
rootdir = '/share/archives/partage_lasso/spot';

datafile = 'spots_pos_flag_clean.csv';

fid1 = fopen([rootdir,'/',datafile]);
spot_clean = textscan(fid1,'%f %f %f %f %s', 'delimiter',';');
>>>>>>> 34a1af0f18cd70ac52566c710fb2c8abde1cb78e
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