1 | function [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 | %- |
---|
106 | lat1=10; |
---|
107 | lat2=11; |
---|
108 | lon1=-11; |
---|
109 | lon2=-10; |
---|
110 | cheminamsu='/net/zeus/usr/zeus/incas/mousson/AMSU/'; |
---|
111 | cheminmsg='/net/zeus/usr/zeus/incas/mousson/MSG/'; |
---|
112 | scale_factor=0.01; |
---|
113 | offset=327.68; |
---|
114 | indicedebut=200; |
---|
115 | indicefin=210; |
---|
116 | |
---|
117 | mois1=8; |
---|
118 | mois2=8; |
---|
119 | jour1=5; |
---|
120 | jour2=7; |
---|
121 | heure1=12; |
---|
122 | heure2=12; |
---|
123 | |
---|
124 | %calcul des indices de debut et de fin |
---|
125 | date1=datenum(2006,mois1,jour1,heure1); |
---|
126 | date2=datenum(2006,mois2,jour2,heure2); |
---|
127 | cd(cheminamsu) |
---|
128 | datafilesamsu=dir([cheminamsu 'amsu*']); |
---|
129 | sizeamsu=size(datafilesamsu,1); |
---|
130 | for i=1:sizeamsu |
---|
131 | fich=datafilesamsu(i).name; |
---|
132 | vecteurdatesamsu(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))); |
---|
133 | end |
---|
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 |
---|
143 | sizeamsu=size(datafilesamsu,1); |
---|
144 | vecteurdatesamsu=zeros(1,indicefin-indicedebut+1); |
---|
145 | |
---|
146 | file=netcdf('amsubch5-noaa15_20060730-052728_afratl_Nadir.nc','nowrite'); |
---|
147 | lon=file{'lon'}(:); |
---|
148 | lat=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)); |
---|
153 | close(file) |
---|
154 | imagesamsu=zeros(indicefin-indicedebut+1,indicelat2-indicelat1+1,indicelon2-indicelon1+1); |
---|
155 | |
---|
156 | %lecture des donnees amsu |
---|
157 | for i=1:indicefin-indicedebut+1 |
---|
158 | fich=datafilesamsu(i).name; |
---|
159 | vecteurdatesamsu(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))); |
---|
160 | file=netcdf(datafilesamsu(i).name,'nowrite'); |
---|
161 | tb=file{'tbch5b'}(:); |
---|
162 | tb=squeeze(tb); |
---|
163 | imagesamsu(i,:,:)=tb(indicelat1:indicelat2,indicelon1:indicelon2); |
---|
164 | close(file) |
---|
165 | end |
---|
166 | |
---|
167 | date1=datenum(2006,mois1,jour1,heure1); |
---|
168 | date2=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); |
---|
174 | imagesamsu=imagesamsu(indices,:,:); |
---|
175 | vecteurdatesamsu=s; |
---|
176 | |
---|
177 | |
---|
178 | |
---|
179 | |
---|
180 | %recherche des images MSG les plus proches temporellement des images AMSU |
---|
181 | cd(cheminmsg) |
---|
182 | datafilesmsg=dir([cheminmsg 'msg-tb108*']); |
---|
183 | |
---|
184 | %definition des vecteurs jours et heures amsu, de la matrice imagesmsg, des vecteurs dates msg et jours msg |
---|
185 | vecteurjoursamsu=floor(vecteurdatesamsu); |
---|
186 | vecteurheuresamsu=vecteurdatesamsu-vecteurjoursamsu; |
---|
187 | sizemsg=size(datafilesmsg,1); |
---|
188 | imagesmsg=zeros(indicefin-indicedebut+1,indicelat2-indicelat1+1,indicelon2-indicelon1+1); |
---|
189 | vecteurdatesmsg=zeros(1,indicefin-indicedebut+1); |
---|
190 | |
---|
191 | for i=1:sizemsg |
---|
192 | fich=datafilesmsg(i).name; |
---|
193 | vecteurjoursmsg(i)=datenum(str2num(fich(11:14)),str2num(fich(16:17)),str2num(fich(19:20))); |
---|
194 | end |
---|
195 | |
---|
196 | |
---|
197 | %lecture des donnees msg, remplissage des vecteurs dates msg et heures msg |
---|
198 | for i=1:indicefin-indicedebut+1 |
---|
199 | i |
---|
200 | |
---|
201 | jour=vecteurjoursamsu(i); |
---|
202 | indicejour=find(vecteurjoursmsg == jour) |
---|
203 | |
---|
204 | if (isempty(indicejour) == 0) |
---|
205 | |
---|
206 | file=netcdf(datafilesmsg(indicejour).name,'nowrite'); |
---|
207 | time=file{'TIME'}(:); |
---|
208 | vecteurheuresmsg=(time-time(1))/24; |
---|
209 | heure=vecteurheuresamsu(i); |
---|
210 | [a,indiceheure]=min(abs(vecteurheuresmsg-heure)); |
---|
211 | %indiceheure=find(abs(vecteurheuresmsg-heure)==min(abs(vecteurheuresmsg-heure))) |
---|
212 | |
---|
213 | if ( min(abs(vecteurheuresmsg-heure)) < 0.25) |
---|
214 | imagesmsg(i,:,:)=scale_factor*file{'DATA'}(indiceheure,indicelat1:indicelat2,indicelon1:indicelon2)+offset; |
---|
215 | vecteurdatesmsg(i)=vecteurjoursmsg(indicejour)+vecteurheuresmsg(indiceheure); |
---|
216 | end |
---|
217 | |
---|
218 | close(file) |
---|
219 | |
---|
220 | end |
---|
221 | |
---|
222 | end |
---|
223 | |
---|
224 | |
---|
225 | pos=find(vecteurdatesmsg == 0); |
---|
226 | vecteurdatesmsg(pos)=[]; |
---|
227 | imagesmsg(pos,:,:)=[]; |
---|
228 | |
---|
229 | vecteurdatesamsu(pos)=[]; |
---|
230 | imagesamsu(pos,:,:)=[]; |
---|
231 | |
---|
232 | Tseuil1=280; % on enleve les points chauds (surface) |
---|
233 | Tseuil2=250; % on enleve les points chauds (surface) |
---|
234 | a=find((imagesmsg <Tseuil1) & (imagesamsu <Tseuil2)); |
---|
235 | |
---|
236 | plot(imagesamsu(a),imagesmsg(a),'+', 'markersize', 1) |
---|
237 | xlabel('TbAMSU'); |
---|
238 | ylabel('TbMSG'); |
---|
239 | |
---|
240 | |
---|
241 | cd .. |
---|
242 | save donnees-msg.oct vecteurdatesmsg imagesmsg |
---|
243 | save donnees-amsu.oct vecteurdatesamsu imagesamsu |
---|