Commit e82385a1 authored by Paul Nicot's avatar Paul Nicot

Ajout des fichiers matlab tr_sort.m (compilation des positions par bouées et par mission) et utc.m

Ajout du script tr_postition.py (script python pour récupérer les positions spots en continue)
script à faire tourner sur Brandypot
parent 0cd511e2
This diff is collapsed.
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
function [gmt,clk,dt] = utc;
% UTC returns actual UTC-Time on a UNIX-System
%
% UTC_Time = UTC
%
% UTC_Time = [ YYYY MM DD hh mm ss ]
%
% use UNIX: date --utc +"%Y %m %d %H %M %S"
%
% A second Output returns the Vector of Matlab's CLOCK
%
% A third Output returns the Deviation: Local - UTC
%
% see also: CLOCK
%
w = [];
if isunix
[s,w] = unix('date --utc +"%Y %m %d %H %M %S"');
clk = clock;
else
warning('UNIX required.')
clk = clock;
end
ok = ~isempty(w);
if ok
w = eval(['[' w ']'],'NaN');
ok = ( isnumeric(w) & isequal(size(w),[1 6]) );
end
if ok
gmt = w;
else
gmt = NaN * ones(1,6);
end
clk = floor(clk);
if ( nargout == 0 ) & ~isnan(gmt(1))
fprintf(1,'%s\n',datestr(gmt,0))
clear gmt
elseif nargout == 3
dt = cat( 1 , clk([3 4 5 6]) , gmt([3 4 5 6]) );
dt = dt(1,:) - dt(2,:); % CLK - GMT
if abs(dt(1)) > 1
dt(1) = -sign(dt(1));
end
dt(4) = dt(4) .* ( abs(dt(4)) > 1 ); % Seconds
dt = sum( dt .* [ 1 1/24 1/24/60 1/24/3600 ] );
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment