% AVHRR_png.m
% Trace les images AVHRR du catalogue:
% \\Pcrougier\GOLTS\Osis\CMS_GOLTS\png_gray
% Permet de choisir l'image à tracer.
% Fabrique une palette de couleur centrée sur zmin, zmax :
%   -zmin : valeur min des pixels de l'image # 0.
%   -zmax : valeur max des pixels de l'image # 255.
% Si cette palette ne convient pas, possibilité de réajuster zmin et zmax /
% aux pixels ayant la plus forte occurence : méthode histogramme.
% Permet de superposer un ou plusieurs transects ADCP à un bin choisi.
% NB: la vraie palette (avec nuages en blanc et terre en gris) n'est pas
% affichée en entier (cf pg AVHRR_test.m).

clear
% désarchivage de l'image satellite sélectionnée
if isunix
    addpath '/homes/grougier/golts/matlab';
    path_png='/export/home/GOLTS/Osis/CMS_GOLTS/png_gray';
    [f_png,p_png]=uigetfile([path_png,'/*.png']);
else
    %path_png='E:\Gatti2\golts\AVHRR';
    path_png='\\Pcrougier\GOLTS\Osis\CMS_GOLTS\png_gray';
   %path_png='"C:\Documents and Settings\gatti\Bureau\recup_AVHRR"';
    [f_png,p_png]=uigetfile([path_png,'\*.png']);
end

%(rappel: user_entry =  chemin du r€pertoire
%             d = dir(*.extension) (contient donc les noms des fichiers)
%             suivi du r€pertoire où effectuer la d€compression (sans 
%oublier de laisser un espace))

% extraction de la date de l image
[p_raw,f_raw,ext]=fileparts([p_png,f_png])
[pxx,name,ext,version]=fileparts(f_raw);
titre_image=name;
tan=titre_image(1:4);
tmois=titre_image(5:6);
tjour=titre_image(7:8); 
theure=titre_image(9:10);
tminute=titre_image(11:12);

%lecture pour le canal 4
imc4=imread([p_png,f_png]);
imc4=double(imc4);

% TRACET DE L'IMAGE
figure(1)
hold on
asp=[0.3 0.3 1];
set(gca,'DataAspectRatio',asp);

xim=2.49+[1:500]*0.01;
yim=41.+[260:-1:1]*0.01;
him=image(xim,yim,imc4);
[xc,yc]=meshgrid(xim,yim);
%[C,h]=contour(xc,yc,imc4,[98 98],'k'); % 85~13.5°
% choisir la couleur de l'isocontour
%set(h,'color',[0.1 0.1 0.6])

% colormap centrée sur les min et max pour les images infra rouge
ind=find(imc4~=0 & imc4~=255);
zmax=max(imc4(ind))
zmin=min(imc4(ind))
jet_ir=colormap(jet(zmax-zmin+1));
%construction de la barre de couleur
map_fin(1,:)=[1 1 1];
for i=2:zmin
    map_fin(i,:)=jet_ir(1,:);
end
map_fin(zmin+1:zmax+1,:)=jet_ir;
for i=zmax+2:254
    map_fin(i,:)=jet_ir(end,:);
end
map_fin(255,:)=[0.5 0.5 0.5];
c=colormap(map_fin);

co=colorbar;
pos_col=[0.85 0.245 0.04 0.55];
% test pour avoir une légende de barre de couleur strictement monotone
k=(zmax-zmin)/10;
if mod(k,1)==0   % si k est entier
    eval(['set(co,''ylim'',[',int2str(zmin),' ',int2str(zmax),'],''ytick'',[',int2str(zmin),':10:',int2str(zmax),'],''yticklabel'',[',int2str(zmin),'/10+5:1:',int2str(zmax),'/10+5],''position'',pos_col)'])  
else
    eval(['set(co,''ylim'',[',int2str(zmin),' ',int2str(zmax),'],''ytick'',[',int2str(zmin),':10:',int2str(zmax),' ',int2str(zmax),'],''yticklabel'',[',int2str(zmin),'/10+5:1:',int2str(zmax),'/10+5 ',int2str(zmax),'/10+5],''position'',pos_col)'])
end

ylab=['41.50';'42.00';'42.50';'43.00';'43.50'];
set(gca,'ydir','normal','ylim',[41.5 43.6],'ytick',[41.5:0.5:43.5],'yticklabel',ylab,...
    'xlim',[3 7])
title(['image AVHRR du ',num2str(tjour),'/',num2str(tmois),'/',num2str(tan),' à ',num2str(theure),'h',num2str(tminute),''])


choixg=menu('voulez-vous modifier la colorbar ?','oui','non');
if choixg==1
choix=menu('Que voulez-vous faire ?','ajuster avec l''histogramme ','fixer les limites');

    % HISTOGRAMME
if choix==1
    figure(2)
    range=255;
    [m,n]=size(imc4);
    [cnts,bins]=histc(reshape(imc4,[1 m*n]),[0:range-1]);
    bar([1:range],cnts,'histo');  
    set(gca,'xlim',[0 255],'xtick',[0 50 100 120 150 200 255])
    title('Histogramme');
    
    % Pointage d'un minimum et d'un maximum
    disp(' Pointez le minimum')
    [zmin,rien]=ginput(1);
    zmin=ceil(zmin);
    disp(' Pointez le maximum')
    [zmax,rien]=ginput(1);
    zmax=ceil(zmax);
    close(2)
else % fixe les limites par commande au clavier
    Tmin=input('Quelle Tmin>=5 ? : ');
    Tmax=input('Quelle Tmax ? : ');
    zmin=(Tmin-5)*10;
    zmax=(Tmax-5)*10;
end   
    
    % RETRACE DE L'IMAGE
    figure(3)
    hold on
    asp=[0.3 0.3 1];
    set(gca,'DataAspectRatio',asp);
    
    xim=2.49+[1:500]*0.01;
    yim=41.+[260:-1:1]*0.01;
    him=image(xim,yim,imc4);
    [xc,yc]=meshgrid(xim,yim);
    %[C,h]=contour(xc,yc,imc4,[94 98],'k'); % 85~13.5°
    % choisir la couleur de l'isocontour
    %set(h,'color',[0.1 0.1 0.6])
    
    % colormap pour les images infra rouge
    jet_ir=colormap(jet(zmax-zmin+1));
    %construction de la barre de couleur
    map_fin(1,:)=[1 1 1];
    for i=2:zmin
        map_fin(i,:)=jet_ir(1,:);
    end
    map_fin(zmin+1:zmax+1,:)=jet_ir;
    for i=zmax+2:254
        map_fin(i,:)=jet_ir(end,:);
    end
    map_fin(255,:)=[0.5 0.5 0.5];
    c=colormap(map_fin);
    
    co=colorbar;
    pos_col=[0.85 0.245 0.04 0.55];
    Tmin=zmin/10+5;
    Tmax=zmax/10+5;
    
    % test pour avoir une légende de barre de couleur strictement monotone
    k=(zmax-zmin)/10;
    if mod(k,1)==0   % si k est entier
        eval(['set(co,''ylim'',[',int2str(zmin),' ',int2str(zmax),'],''ytick'',[',int2str(zmin),':10:',int2str(zmax),'],''yticklabel'',[',num2str(Tmin),':1:',num2str(Tmax),'],''position'',pos_col)'])  
    else
        eval(['set(co,''ylim'',[',int2str(zmin),' ',int2str(zmax),'],''ytick'',[',int2str(zmin),':10:',int2str(zmax),' ',int2str(zmax),'],''yticklabel'',[',num2str(Tmin),':1:',num2str(Tmax),' ',num2str(Tmax),'],''position'',pos_col)'])
    end
    
    ylab=['41.50';'42.00';'42.50';'43.00';'43.50'];
    set(gca,'ydir','normal','ylim',[41.5 43.6],'ytick',[41.5:0.5:43.5],'yticklabel',ylab,...
    'xlim',[3 7])
    title(['image AVHRR du ',num2str(tjour),'/',num2str(tmois),'/',num2str(tan),' à ',num2str(theure),'h',num2str(tminute),''])
end   

% ajout du point SOFI
Sofi=[5.13 43.07];
plot(Sofi(1,1),Sofi(1,2),'xr')

% ajout de l'ADCP
path_mat='e:\Gatti2\golts\Survey';
%choix des transects à tracer
choixc=input('combien de transects à représenter? choix= ');
if choixc==0
else
for ii=1:choixc
    eval(['[f_mat',int2str(ii),',p_mat',int2str(ii),']=uigetfile([path_mat,''\*.mat'']);'])
    eval(['path_mat_file',int2str(ii),'=[p_mat',int2str(ii),',f_mat',int2str(ii),'];'])
    eval(['load (path_mat_file',int2str(ii),')'])
    eval(['lon',int2str(ii),'=xyt(:,1);'])
    eval(['lat',int2str(ii),'=xyt(:,2);'])
    eval(['u',int2str(ii),'=uv(1:2:end-1,:);'])
    eval(['v',int2str(ii),'=uv(2:2:end,:);'])
    eval(['transect',int2str(ii),'=f_mat',int2str(ii),'(8:10);'])
end

%choix de la profondeur
bin=input('quel bin ?');
prof=(bin-1)*4+8;

% rajout de l'échelle de courant
[i,j]=size(u1);
u1(bin,j+1)=0.5;
v1(bin,j+1)=0;
lon1(j+1)=5.6;
lat1(j+1)=43.24;
u1(bin,j+2)=0;
v1(bin,j+2)=0.5;
lon1(j+2)=5.6;
lat1(j+2)=43.24;
text(5.65,43.35,'0.5 ms^{-1}')

for ii=1:choixc
    eval(['quiver(lon',int2str(ii),',lat',int2str(ii),',u',int2str(ii),'(bin,:)*asp(1),v',int2str(ii),'(bin,:)*asp(2),0,''.k'')'])
end

% %ajout bathy
% cd E:\Gatti2\Maryse
% plotclaude2

str(1)={['image AVHRR du ',num2str(tjour),'/',num2str(tmois),'/',num2str(tan),' à ',num2str(theure),'h',num2str(tminute),'']};
%str(2)={['trajet ADCP : ',num2str(transect1),' à ',num2str(prof),' m']};
str(2)={['trajet ADCP à ',num2str(prof),' m']};
title(str)

hold off
end
xlabel('Longitude')
ylabel('Latitude')

