source: trunk/src/selectionimages.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: 6.0 KB
Line 
1function [vecteurdatesamsu,imagesamsu,vecteurdatesmsg,imagesmsg]=selectionimages(cheminmsg,cheminamsu,lon1,lon2,lat1,lat2,mois1,jour1,heure1,mois2,jour2,heure2)
2
3%SELECTIONIMAGES +todo+
4%+
5%
6% =================
7% selectionimages.m
8% =================
9%
10% .. function:: selectionimages(cheminmsg,cheminamsu,lon1,lon2,lat1,lat2,mois1,jour1,heure1,mois2,jour2,heure2)
11%
12% DESCRIPTION
13% ===========
14%
15%   :param lon1: longitude min, W < 0
16%   :units lon1: deg
17%   :type lon1: double
18%   :raise lon1: required
19%
20%   :param lon2: longitude max, W < 0
21%   :units lon2: deg
22%   :type lon2: double
23%   :raise lon2: required
24%
25%   :param lat1: latitude min, N > 0
26%   :units lat1: deg
27%   :type lat1: double
28%   :raise lat1: required
29%
30%   :param lat2: latitude max, N > 0
31%   :units lat2: deg
32%   :type lat2: double
33%   :raise lat2: required
34%
35%   :param mois1: mois debut
36%   :type mois1: int8
37%   :raise mois1: required
38%
39%   :param jour1: jour debut
40%   :type jour1: int8
41%   :raise jour1: required
42%
43%   :param heure1: heure debut
44%   :type heure1: int8
45%   :raise heure1: required
46%
47%   :param mois2: mois fin
48%   :type mois2: int8
49%   :raise mois2: required
50%
51%   :param jour2: jour fin
52%   :type jour2: int8
53%   :raise jour2: required
54%
55%   :param heure2: heure fin
56%   :type heure2: int8
57%   :raise heure2: required
58%
59% EXAMPLES
60% ========
61%
62% +todo+
63% ::
64%
65%  octave> clear all
66%  octave> varamma_startup
67%  octave> more off
68%  octave> lon1=-15;
69%  octave> lon2=-10;
70%  octave> lat1=15;
71%  octave> lat2=20;
72%  +todo+
73%  octave> [vecteurdatesamsu,imagesamsu,vecteurdatesmsg,imagesmsg]=selectionimages(cheminmsg,cheminamsu,lon1,lon2,lat1,lat2,mois1,jour1,heure1,mois2,jour2,heure2)
74%
75% SEE ALSO
76% ========
77%
78% :ref:`guide data MSG <data_msg>`
79% :ref:`guide data AMSU <data_amsu>`
80%
81% :ref:`varamma_startup.m`
82%
83% TODO
84% ====
85%
86% status de retour
87%
88% split reading and calculate and plot
89%
90% check argument
91%
92% usage of PROJECT_ID
93%
94% EVOLUTIONS
95% ==========
96%
97% $Id: selectionimages.m 326 2011-08-05 14:24:46Z pinsard $
98%
99% $URL$
100%
101% - fplod 20110121T135800Z aedon.locean-ipsl.upmc.fr (Darwin)
102%
103%   * minimal rst header
104%
105%-
106lat1=10;
107lat2=11;
108lon1=-11;
109lon2=-10;
110cheminamsu='/net/zeus/usr/zeus/incas/mousson/AMSU/';
111cheminmsg='/net/zeus/usr/zeus/incas/mousson/MSG/';
112scale_factor=0.01;
113offset=327.68;
114indicedebut=200;
115indicefin=210;
116
117mois1=8;
118mois2=8;
119jour1=5;
120jour2=7;
121heure1=12;
122heure2=12;
123
124%calcul des indices de debut et de fin
125date1=datenum(2006,mois1,jour1,heure1);
126date2=datenum(2006,mois2,jour2,heure2);
127cd(cheminamsu)
128datafilesamsu=dir([cheminamsu 'amsu*']);
129sizeamsu=size(datafilesamsu,1);
130for i=1:sizeamsu
131fich=datafilesamsu(i).name;
132vecteurdatesamsu(i)=datenum(str2num(fich(17:20)),str2num(fich(21:22)),str2num(fich(23:24)),str2num(fich(26:27)),str2num(fich(28:29)),str2num(fich(30:31)));
133end
134[a,indicedebut]=min(abs(vecteurdatesamsu-date1));
135[a,indicefin]=min(abs(vecteurdatesamsu-date2));
136
137
138
139%lecture et enregistrement des dates et images AMSU
140
141
142%definition du vecteur vecteurdatesamsu et de la matrice imagesamsu
143sizeamsu=size(datafilesamsu,1);
144vecteurdatesamsu=zeros(1,indicefin-indicedebut+1);
145
146file=netcdf('amsubch5-noaa15_20060730-052728_afratl_Nadir.nc','nowrite');
147lon=file{'lon'}(:);
148lat=file{'lat'}(:);
149[a,indicelat1]=min(abs(lat-lat1));
150[a,indicelat2]=min(abs(lat-lat2));
151[a,indicelon1]=min(abs(lon-lon1));
152[a,indicelon2]=min(abs(lon-lon2));
153close(file)
154imagesamsu=zeros(indicefin-indicedebut+1,indicelat2-indicelat1+1,indicelon2-indicelon1+1);
155
156%lecture des donnees amsu
157for i=1:indicefin-indicedebut+1
158fich=datafilesamsu(i).name;
159vecteurdatesamsu(i)=datenum(str2num(fich(17:20)),str2num(fich(21:22)),str2num(fich(23:24)),str2num(fich(26:27)),str2num(fich(28:29)),str2num(fich(30:31)));
160file=netcdf(datafilesamsu(i).name,'nowrite');
161tb=file{'tbch5b'}(:);
162tb=squeeze(tb);
163imagesamsu(i,:,:)=tb(indicelat1:indicelat2,indicelon1:indicelon2);
164close(file)
165end
166
167date1=datenum(2006,mois1,jour1,heure1);
168date2=datenum(2006,mois2,jour2,heure2);
169[a,indicedate1]=min(abs(vecteurdatesamsu-date1));
170[a,indicedate2]=min(abs(vecteurdatesamsu-date2));
171
172%classement des donnees amsu dans l ordre chronologique
173[s,indices]=sort(vecteurdatesamsu);
174imagesamsu=imagesamsu(indices,:,:);
175vecteurdatesamsu=s;
176
177
178
179
180%recherche des images MSG les plus proches temporellement des images AMSU
181cd(cheminmsg)
182datafilesmsg=dir([cheminmsg 'msg-tb108*']);
183
184%definition des vecteurs jours et heures amsu, de la matrice imagesmsg, des vecteurs dates msg et jours msg
185vecteurjoursamsu=floor(vecteurdatesamsu);
186vecteurheuresamsu=vecteurdatesamsu-vecteurjoursamsu;
187sizemsg=size(datafilesmsg,1);
188imagesmsg=zeros(indicefin-indicedebut+1,indicelat2-indicelat1+1,indicelon2-indicelon1+1);
189vecteurdatesmsg=zeros(1,indicefin-indicedebut+1);
190
191for i=1:sizemsg
192fich=datafilesmsg(i).name;
193vecteurjoursmsg(i)=datenum(str2num(fich(11:14)),str2num(fich(16:17)),str2num(fich(19:20)));
194end
195
196
197%lecture des donnees msg, remplissage des vecteurs dates msg et heures msg
198for i=1:indicefin-indicedebut+1
199i
200
201jour=vecteurjoursamsu(i);
202indicejour=find(vecteurjoursmsg == jour)
203
204if (isempty(indicejour) == 0)
205
206file=netcdf(datafilesmsg(indicejour).name,'nowrite');
207time=file{'TIME'}(:);
208vecteurheuresmsg=(time-time(1))/24;
209heure=vecteurheuresamsu(i);
210[a,indiceheure]=min(abs(vecteurheuresmsg-heure));
211%indiceheure=find(abs(vecteurheuresmsg-heure)==min(abs(vecteurheuresmsg-heure)))
212
213if ( min(abs(vecteurheuresmsg-heure)) < 0.25)
214imagesmsg(i,:,:)=scale_factor*file{'DATA'}(indiceheure,indicelat1:indicelat2,indicelon1:indicelon2)+offset;
215vecteurdatesmsg(i)=vecteurjoursmsg(indicejour)+vecteurheuresmsg(indiceheure);
216end
217
218close(file)
219
220end
221
222end
223
224
225pos=find(vecteurdatesmsg == 0);
226vecteurdatesmsg(pos)=[];
227imagesmsg(pos,:,:)=[];
228
229vecteurdatesamsu(pos)=[];
230imagesamsu(pos,:,:)=[];
231
232Tseuil1=280;   % on enleve les points chauds (surface)
233Tseuil2=250;   % on enleve les points chauds (surface)
234a=find((imagesmsg <Tseuil1) & (imagesamsu <Tseuil2));
235
236plot(imagesamsu(a),imagesmsg(a),'+', 'markersize', 1)
237xlabel('TbAMSU');
238ylabel('TbMSG');
239
240
241cd ..
242save donnees-msg.oct vecteurdatesmsg imagesmsg
243save donnees-amsu.oct vecteurdatesamsu imagesamsu
Note: See TracBrowser for help on using the repository browser.