1 | function [PluieTRMM, Temps, Longitudes, Latitudes, Annee, Mois, Jour] = TRMMread(Annee, mois, jour)
|
---|
2 |
|
---|
3 | %TRMMread lit le fichier NetCDF TRMM
|
---|
4 | %du jour souhaité pour en sortir les
|
---|
5 | %variables (temps, longitudes et latitudes) ainsi que les données de
|
---|
6 | %l'estimation des précipitations
|
---|
7 |
|
---|
8 | %
|
---|
9 | %+
|
---|
10 | %
|
---|
11 | % ==========
|
---|
12 | % TRMMread.m
|
---|
13 | % ==========
|
---|
14 | %
|
---|
15 | % .. function:: TRMMread(Annee, Mois, Jour)
|
---|
16 | %
|
---|
17 | % DESCRIPTION
|
---|
18 | % ===========
|
---|
19 | %
|
---|
20 | % - Données d'entrées :
|
---|
21 | %
|
---|
22 | % * Annee (en caractères) : Année (AAAA) du jour d'étude.
|
---|
23 | % * Mois (en caractères) : Numéro du mois (MM) du jour d'étude.
|
---|
24 | % * Jour (en caractères) : Numéro du Jour d'étude (JJ).
|
---|
25 | %
|
---|
26 | % - Données de sorties :
|
---|
27 | %
|
---|
28 | % * Annee (en caractères) : Année (AAAA) du jour d'étude.
|
---|
29 | % * Mois (en caractères) : Numéro du mois (MM) du jour d'étude.
|
---|
30 | % * Jour (en caractères) : Numéro du Jour d'étude (JJ).
|
---|
31 | % * Temps : Variable de temps du fichier NetCDF.
|
---|
32 | % * Longitudes : Variable de longitudes dans le domaine [20°W 10°W].
|
---|
33 | % * Latitudes : Variable de latitudes dans le domaine [10°N 20°N].
|
---|
34 | % * PluieTRMM : Données brutes de l'estimation des précipitations dans
|
---|
35 | % notre domaine.
|
---|
36 | % type double
|
---|
37 | % dimension 1 : temps, dimension 2 : lat, dimension 3 : lon
|
---|
38 | %
|
---|
39 | % lecture du fichiers NetCDF TRMM du jour souhaité pour en sortir les
|
---|
40 | % variables (temps, longitudes et latitudes) ainsi que les données de
|
---|
41 | % l'estimation des précipitations dans notre domaine d'étude (20°W-10°W et
|
---|
42 | % 10°N-20°N)
|
---|
43 | %
|
---|
44 | % EXAMPLES
|
---|
45 | % ========
|
---|
46 | %
|
---|
47 | % Voir "demo".
|
---|
48 | %
|
---|
49 | % SEE ALSO
|
---|
50 | % ========
|
---|
51 | %
|
---|
52 | %
|
---|
53 | % :ref:`data_precipitation_microwave`
|
---|
54 | %
|
---|
55 | % :ref:`varamma_startup.m`
|
---|
56 | %
|
---|
57 | % :ref:`extract_netcdf_TRMM.sh`
|
---|
58 | %
|
---|
59 | % TODO
|
---|
60 | % ====
|
---|
61 | %
|
---|
62 | % domaine restriction on mac and linux
|
---|
63 | %
|
---|
64 | % test if existing input file
|
---|
65 | %
|
---|
66 | % scale_factor and add_offset !!
|
---|
67 | %
|
---|
68 | % handling of missing values
|
---|
69 | %
|
---|
70 | % version in filename is not always 5
|
---|
71 | %
|
---|
72 | % test with netcdf_open_available true
|
---|
73 | %
|
---|
74 | % EVOLUTIONS
|
---|
75 | % ==========
|
---|
76 | %
|
---|
77 | % $Id$
|
---|
78 | %
|
---|
79 | % $URL$
|
---|
80 | %
|
---|
81 | % - fplod 20110606T103853Z aedon.locean-ipsl.upmc.fr (Darwin)
|
---|
82 | %
|
---|
83 | % * try to understand
|
---|
84 | % * rename because 3B40read.m is not an authorised filename
|
---|
85 | %
|
---|
86 | % - lelod 20110605
|
---|
87 | %
|
---|
88 | % * Création from EPSATread.m wich was not validate
|
---|
89 | % hard coded input file extracted-3B40RT.2006.5.nc
|
---|
90 | %
|
---|
91 | %-
|
---|
92 | global PROJECT_ID
|
---|
93 | global netcdf_open_available
|
---|
94 | %
|
---|
95 | %%%%%%%%%%%%%
|
---|
96 | % Paramètres
|
---|
97 | %%%%%%%%%%%%%
|
---|
98 |
|
---|
99 | latmin = 0;
|
---|
100 | latmax = 20;
|
---|
101 | lonmin = -20;
|
---|
102 | lonmax = 0;
|
---|
103 |
|
---|
104 | %%%%%%%%%%%%%
|
---|
105 |
|
---|
106 | % Si les informations sur la date n'ont pas été données ( par exemple si
|
---|
107 | % [ ... ] = TRMMread a été lancé), on les demande.
|
---|
108 | if exist('Annee','var')~=1;
|
---|
109 | Annee = input('Année (AAAA) : ', 's');
|
---|
110 | end
|
---|
111 |
|
---|
112 | % définition du repertoire du fichier à lire
|
---|
113 | %if ispc()
|
---|
114 | repertoire = [ PROJECT_ID 'TRMM/3B40/' '/tmp/'];
|
---|
115 | %else
|
---|
116 | % repertoire = [ PROJECT_ID 'TRMM/' Annee '/' Mois '/' ];
|
---|
117 | %end
|
---|
118 |
|
---|
119 | % build filename to be read
|
---|
120 | %Date = ([Annee Mois Jour]);
|
---|
121 | fullfilename=[repertoire 'extracted-3B40RT.2006.5.nc'];
|
---|
122 | disp(['iii : opening for reading ', fullfilename]);
|
---|
123 | clear repertoire
|
---|
124 |
|
---|
125 | % Ouverture du fichier
|
---|
126 | if netcdf_open_available
|
---|
127 | ncid = netcdf.open(fullfilename, 'NC_NOWRITE');
|
---|
128 | else
|
---|
129 | ncid = netcdf(fullfilename, 'nowrite');
|
---|
130 | end
|
---|
131 | clear fullfilename
|
---|
132 |
|
---|
133 | % Récupération des variables.
|
---|
134 | if netcdf_open_available
|
---|
135 | Temps = netcdf.getVar(ncid,0);
|
---|
136 | Latitudes = netcdf.getVar(ncid,1);
|
---|
137 | Longitudes = netcdf.getVar(ncid,2);
|
---|
138 | else
|
---|
139 | Temps = ncid{'time'}(:);
|
---|
140 | Latitudes = ncid{'latitude'}(:);
|
---|
141 | Longitudes = ncid{'longitude'}(:);
|
---|
142 | end
|
---|
143 | %
|
---|
144 | % Récupération des données de précipitation et restriction dans notre domaine d'étude
|
---|
145 | if netcdf_open_available
|
---|
146 | startlat = find(Latitudes >= latmin, 1 );
|
---|
147 | countlat = find(Latitudes <= latmax, 1, 'last' ) - startlat + 1;
|
---|
148 | startlon = find(Longitudes >= lonmin, 1 );
|
---|
149 | countlon = find(Longitudes <= lonmax, 1, 'last' ) - startlon + 1;
|
---|
150 | Latitudes = Latitudes(Latitudes >= latmin & Latitudes <= latmax);
|
---|
151 | Longitudes = Longitudes(Longitudes >= lonmin & Longitudes <= lonmax);
|
---|
152 | clear lonmin
|
---|
153 | clear lonmax
|
---|
154 | clear latmin
|
---|
155 | clear latmax
|
---|
156 | %
|
---|
157 | % Récupération des données de précipitation dans ce domaine.
|
---|
158 | PluieTRMM = netcdf.getVar(ncid,11,[startlon-1 startlat-1 0],...
|
---|
159 | [countlon countlat size(Temps,1)]);
|
---|
160 | clear countlat
|
---|
161 | clear countlon
|
---|
162 | clear startlat
|
---|
163 | clear startlon
|
---|
164 |
|
---|
165 | % apply scale_factor and add_offset +todo+
|
---|
166 | PluieTRMM = double(PluieTRMM);
|
---|
167 | %
|
---|
168 | % permute to output array with
|
---|
169 | % dimension 1 : temps, dimension 2 : lat, dimension 3 : lon
|
---|
170 | PluieTRMM = permute(PluieTRMM,[3 1 2]);
|
---|
171 |
|
---|
172 | else
|
---|
173 | PPT = ncid{'precipitation'}(:,:,:);
|
---|
174 | disp(['www : no domaine restrition yet on mac and linux']);
|
---|
175 |
|
---|
176 | end
|
---|
177 |
|
---|
178 | if netcdf_open_available
|
---|
179 | netcdf.close(ncid);
|
---|
180 | end
|
---|
181 | clear ncid
|
---|
182 | indDate=find(Temps>=datenum(2006,mois,jour) & Temps<datenum(2006,mois,jour+1));
|
---|
183 | ppt3B(:,:,:)=PPT(indDate,:,:);
|
---|
184 | tps(:)=Temps(indDate);
|
---|
185 |
|
---|
186 |
|
---|
187 | %++whos
|
---|
188 |
|
---|
189 | end
|
---|
190 |
|
---|
191 | %!demo
|
---|
192 | %! varamma_startup;
|
---|
193 | %! more off
|
---|
194 | %! Annee = '2006';
|
---|
195 | %! Mois = '08';
|
---|
196 | %! Jour = '01';
|
---|
197 | %! [PluieTRMM, Temps, Longitudes, Latitudes, Annee, Mois, Jour] = TRMMread(Annee, Mois, Jour);
|
---|