source: trunk/src/TRMMread.m @ 327

Last change on this file since 327 was 327, checked in by pinsard, 13 years ago

change svn properties

  • Property svn:keywords set to URL
File size: 5.0 KB
Line 
1function [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%-
92global PROJECT_ID
93global netcdf_open_available
94%
95%%%%%%%%%%%%%
96% Paramètres
97%%%%%%%%%%%%%
98
99latmin = 0;
100latmax = 20;
101lonmin = -20;
102lonmax = 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.
108if exist('Annee','var')~=1;
109    Annee = input('Année (AAAA) : ', 's');
110end
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]);
121fullfilename=[repertoire 'extracted-3B40RT.2006.5.nc'];
122disp(['iii : opening for reading ', fullfilename]);
123clear repertoire
124
125% Ouverture du fichier
126if netcdf_open_available
127   ncid = netcdf.open(fullfilename, 'NC_NOWRITE');
128else
129   ncid = netcdf(fullfilename, 'nowrite');
130end
131clear fullfilename
132
133% Récupération des variables.
134if netcdf_open_available
135   Temps = netcdf.getVar(ncid,0);
136   Latitudes = netcdf.getVar(ncid,1);
137   Longitudes = netcdf.getVar(ncid,2);
138else
139   Temps = ncid{'time'}(:);
140   Latitudes = ncid{'latitude'}(:);
141   Longitudes = ncid{'longitude'}(:);
142end
143%
144% Récupération des données de précipitation et restriction dans  notre domaine d'étude
145if 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
172else
173   PPT = ncid{'precipitation'}(:,:,:);
174   disp(['www : no domaine restrition yet on mac and linux']);
175
176end
177
178if netcdf_open_available
179   netcdf.close(ncid);
180end
181clear ncid
182indDate=find(Temps>=datenum(2006,mois,jour) & Temps<datenum(2006,mois,jour+1));
183ppt3B(:,:,:)=PPT(indDate,:,:);
184tps(:)=Temps(indDate);
185
186
187%++whos
188
189end
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);
Note: See TracBrowser for help on using the repository browser.