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!
Partager