Bonjour à tous,

Je possède environ sept an de données journalières en format net CDF me donnant les concentrations en matière en suspension dans la zone de l'estuaire de l'adour. Ces données correspondent à des acquisitions réalisées par un satellite (j'ai une concentration par couple longitude/latitude (par pixel)). Lorsque qu'un nuage est present, le satellite ne peut pas calculer la concentration en MES et le pixel à alors pour valeur : NaN.

Ce que je souhaiterai c'est calculer le pourcentage d'occurence de nuage par pixel (c'est à dire quelle est la probilité d'avoir un nuage au niveau de ce pixel). L'objectif final est de crée une cartographie des zones les plus nuageuses. J'ai deja un petit bout de programme mais je ne sais pas comment faire la boucle qui permette de faire le calcul d'occurence pour chaque pixel, sur une zone que j'aurais définie (fonction select zone default)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
function occurence(file)
 
 
SuspMatt1=nc_varget(file,'suspended_matters');
chlorophyll_a1=nc_varget(file,'chlorophyll_a');
RejFlag1=nc_varget(file,'rejection_flag');
lon1=nc_varget(file,'lon');
lat1=nc_varget(file,'lat');
 
 
% Sélection de la zone d'intérêt
[SuspMatt,lon,lat]=SelectZoneDefaut(SuspMatt1,lon1,lat1);
[chlorophyll_a,lon,lat]=SelectZoneDefaut(chlorophyll_a1,lon1,lat1);
[RejFlag,lon,lat]=SelectZoneDefaut(RejFlag1,lon1,lat1);
 
%Terre représentée par la valeur 1
RejFlag=RejFlag.*(RejFlag==1);
 
 
%boucle permettant de lire tous les pixels de la carte ?????
 
Nlon=length(lon);
Nlat=length(lat);
 
for i=1:Nlon
  for j=1:Nlat
 
pour le premier pixel
 
%Boucle permettant de lire toutes les dates pour un pixel donné
 
d=datenum('01/09/2000',23):datenum('05/23/2007',23); % en mettant les bonnes dates
 
for n=1:numel(d)
 
   file=datestr(d(n),26);
   file=[strrep(file,'/','') '.nc'];
 
   if exist(file,'file')==2
 
k = 0;
v = 0;
 
for i=1:Nlon
  for j=1:Nlat
    if (isnan(SuspMatt(j,i)) ~= 0) && (RejFlag(j,i) ~= 1) 
      k = k + 1;
      v = v + 1; 
    else
      k = k + 0
      v= v + 1
    end
  end
end
 
nuages=k
pixelstot = v 
occ = (k/v) * 100
 
   end

fonction select zone default :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
function [NewVar,NewLon,NewLat]=SelectZoneDefaut(Var,lon,lat)
lonmin = -2.5 ;
lonmax = -1.2 ;
latmin = 43.3 ;
latmax = 44.2 ;
 
[NewVar,NewLon,NewLat]=SelectZone(Var,lon,lat,lonmin,lonmax,latmin,latmax);

Merci d'avance pour votre aide!