- Timestamp:
- 12/07/11 15:46:10 (13 years ago)
- Location:
- trunk/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/extract_amsua.pro
r447 r448 209 209 openr, lun_a, list_filea, /get_lun 210 210 filea='' 211 while (not eof(lun_a)) do begin 211 nlist=1 212 ilist=1 213 ; while (not eof(lun_a)) do begin 214 while ilist le nlist do begin 215 ilist=ilist+1 212 216 onefile = '' 213 217 readf, lun_a, filea … … 245 249 ; latitude, et les Tbs des differents canaux (15 pour AMSUA) 246 250 247 amch1=REFORM(ama_scan.btemps[0,*,*]/100.) 248 amch2=REFORM(ama_scan.btemps[1,*,*]/100.) 249 amch3=REFORM(ama_scan.btemps[2,*,*]/100.) 250 amch4=REFORM(ama_scan.btemps[3,*,*]/100.) 251 amch5=REFORM(ama_scan.btemps[4,*,*]/100.) 252 amch6=REFORM(ama_scan.btemps[5,*,*]/100.) 253 amch7=REFORM(ama_scan.btemps[6,*,*]/100.) 254 amch8=REFORM(ama_scan.btemps[7,*,*]/100.) 255 amch9=REFORM(ama_scan.btemps[8,*,*]/100.) 256 amch10=REFORM(ama_scan.btemps[9,*,*]/100.) 257 amch11=REFORM(ama_scan.btemps[10,*,*]/100.) 258 amch12=REFORM(ama_scan.btemps[11,*,*]/100.) 259 amch13=REFORM(ama_scan.btemps[12,*,*]/100.) 260 amch14=REFORM(ama_scan.btemps[13,*,*]/100.) 261 amch15=REFORM(ama_scan.btemps[14,*,*]/100.) 251 ;amch1=REFORM(ama_scan.btemps[0,*,*]/100.) 252 ; amch2=REFORM(ama_scan.btemps[1,*,*]/100.) 253 ;amch3=REFORM(ama_scan.btemps[2,*,*]/100.) 254 ; amch4=REFORM(ama_scan.btemps[3,*,*]/100.) 255 ; amch5=REFORM(ama_scan.btemps[4,*,*]/100.) 256 ; amch6=REFORM(ama_scan.btemps[5,*,*]/100.) 257 ; amch7=REFORM(ama_scan.btemps[6,*,*]/100.) 258 ; amch8=REFORM(ama_scan.btemps[7,*,*]/100.) 259 ; amch9=REFORM(ama_scan.btemps[8,*,*]/100.) 260 ; amch10=REFORM(ama_scan.btemps[9,*,*]/100.) 261 ; amch11=REFORM(ama_scan.btemps[10,*,*]/100.) 262 ; amch12=REFORM(ama_scan.btemps[11,*,*]/100.) 263 ; amch13=REFORM(ama_scan.btemps[12,*,*]/100.) 264 ; amch14=REFORM(ama_scan.btemps[13,*,*]/100.) 265 ; amch15=REFORM(ama_scan.btemps[14,*,*]/100.) 266 ; extraction du canal traite 267 nocanal=5 268 amch=REFORM(ama_scan.btemps[nocanal,*,*]/100.) 262 269 amzen=REFORM(ama_scan.angles[0,*,*]/100.) 263 270 amalat=REFORM(ama_scan.latlon[0,*,*]/1.E4) … … 278 285 ; appel a interpolswatw pour ajuster les pixels amsua sur une grille 279 286 ; reguliere dans la fauchee 287 ; et selection de la zone conservee 280 288 resol=1 281 289 chint=fltarr(100) 290 latint=fltarr(100) 291 lonint=fltarr(100) 292 fovint=fltarr(100) 293 timeint=fltarr(100) 294 time=fltarr(100) 282 295 for i=0L,n_scan-1L do begin 283 tb=amch 5[*,i]296 tb=amch[*,i] 284 297 lon=amalon[*,i] 285 298 lat=amalat[*,i] 286 299 interpolswath,tb,lat,lon,resol,nbgrid,tbgrid,latgrid,longrid 287 300 if i eq 0L then begin 288 achint=fltarr(nbgrid,n_scan) 289 alatint=fltarr(nbgrid,n_scan) 290 alonint=fltarr(nbgrid,n_scan) 291 afovint=intarr(nbgrid,n_scan) 292 atimeint=fltarr(nbgrid,n_scan) 293 plot,lon,tb,psym=1 294 oplot,longrid,tbgrid,psym=4 301 fovgrid=indgen(nbgrid)+1 302 plot,lon,tb,psym=1 303 oplot,longrid,tbgrid,psym=4 295 304 endif 296 achint[*,i]=tbgrid 297 alatint[*,i]=latgrid 298 alonint[*,i]=longrid 299 afovint[*,i]=indgen(nbgrid)+1 300 atimeint[*,i]=tt[i] 301 endfor 302 303 304 ;----------------- 305 ; ici on selectionne la zone definie 306 ;----------------- 307 zone=where((alonint ge lon_min) and (alonint le lon_max) $ 308 and (alatint ge lat_min) and (alatint le lat_max) ) 309 310 nn=n_elements(zone) 311 if (nn GT 10) then begin 312 flagg=1 313 dam=fltarr(25,nn) 314 dam[0,*]=alonint[zone] 315 dam[1,*]=alatint[zone] 316 ; dam[2,*]=amazen[zone] 317 dam[3,*]=afovint[zone] 318 dam[4,*]=atimeint[zone] 319 ; dam[5,*]=amch1[zone] 320 ; dam[6,*]=amch2[zone] 321 ; dam[7,*]=amch3[zone] 322 ; dam[8,*]=amch4[zone] 323 dam[9,*]=achint[zone] 324 ; dam[10,*]=amch6[zone] 325 ; dam[11,*]=amch7[zone] 326 ; dam[12,*]=amch8[zone] 327 ; dam[13,*]=amch9[zone] 328 ; dam[14,*]=amch10[zone] 329 ; dam[15,*]=amch11[zone] 330 ; dam[16,*]=amch12[zone] 331 ; dam[17,*]=amch13[zone] 332 ; dam[18,*]=amch14[zone] 333 ; dam[19,*]=amch15[zone] 334 335 305 zone=where((longrid ge lon_min) and (longrid le lon_max) $ 306 and (latgrid ge lat_min) and (latgrid le lat_max),npt) 307 if npt ne 0 then begin 308 time[zone]=tt[i] 309 chint=[chint,tbgrid[zone]] 310 latint=[latint,latgrid[zone]] 311 lonint=[lonint,longrid[zone]] 312 fovint=[fovint,fovgrid[zone]] 313 timeint=[timeint,time[zone]] 314 endif 315 316 endfor 317 318 ; partie a remplacer par module ecriture standardise FP 319 ; 336 320 ; replace missing values -9999.99 by NaN 337 index_missing = where(dam EQ -9999.99, nb_missing) 338 if (nb_missing NE 0) THEN BEGIN 339 dam[index_missing]=!values.f_nan 340 ENDIF 341 342 ; ecriture des donnees ligne par ligne dans le fichier resultant 343 ; 344 ; mm : mois, a recuperer dans les parametres 345 ; nosat: 15, 16 ou 17 346 ; print,'orbite',desc 347 for i=0L, nn-1L do begin 348 321 index_missing = where(chint EQ -9999.99, nb_missing) 322 if (nb_missing NE 0) THEN BEGIN 323 chint[index_missing]=!values.f_nan 324 endif 325 ; param landseamask mis fictivement pour unification du format 326 landseamask=!values.f_nan 327 nn=max(size(chint)) 328 print,'nb points dans la zone',nn 329 330 for i=0L, nn-1L do begin 349 331 ;format: nosat,mois, day, lon, lat, zen,fov, time, ama_ch1:15,amb_ch1:5 350 351 printf,lun_obs, mm, jour_ama,desc, dam[4,i], nosat, dam[3,i], dam[0,i], dam[1,i],$352 dam[9,i],format='(3(i3,1x),f8.4,2i3,3(1x,f8.3))'332 ; print, 'mois::::', mm,'-----', nab-i 333 printf,lun_obs, mm, jour_ama, desc, nosat, fovint[i], landseamask, lonint[i], latint[i], timeint[i],$ 334 chint[i],format='(6(i3,1x),4(f8.4,1x))' 353 335 endfor 354 336 355 endif else begin356 flagg=0357 print, 'pas de points dans la zone'358 endelse359 337 360 338 -
trunk/src/interpolswath.pro
r447 r448 56 56 57 57 for i=nnadir+1,na-1 do begin 58 dist=rterre*acos(sin(lat(i-1))*sin(lat(i)) + cos(lat(i-1))*cos(lat(i))*cos(lon(i)-lon(i-1)))59 fova[i]=fova[i-1]+dist58 dist=rterre*acos(sin(lat(i-1))*sin(lat(i)) + cos(lat(i-1))*cos(lat(i))*cos(lon(i)-lon(i-1))) 59 fova[i]=fova[i-1]+dist 60 60 endfor 61 61 for i=nnadir-2,0,-1 do begin 62 dist=rterre*acos(sin(lat(i))*sin(lat(i+1)) + cos(lat(i))*cos(lat(i+1))*cos(lon(i)-lon(i+1)))62 dist=rterre*acos(sin(lat(i))*sin(lat(i+1)) + cos(lat(i))*cos(lat(i+1))*cos(lon(i)-lon(i+1))) 63 63 ;print,i,dist 64 fova[i]=fova[i+1]-dist64 fova[i]=fova[i+1]-dist 65 65 endfor 66 66 67 67 print,fova 68 ;if -fova[0] ne fova[na-1] then print, 'pb symetrie fauchee'69 68 70 69 distmax=-min(fova)+max(fova)+max(pixa) … … 79 78 grid2=indgen(ndemigrid)*delta+fova[nnadir] 80 79 grid1=fltarr(ndemigrid) 81 for i=0,ndemigrid-1 do grid1[i]=-grid2[ndemigrid-1-i] 80 for i=0,ndemigrid-1 do begin 81 grid1[i]=-grid2[ndemigrid-1-i] 82 endfor 82 83 ;alternative equivalente) 83 84 ;for i=ndemigrid-1,0,-1 do grid1[i]=-(ndemigrid-i-1)*delta-fova[nnadir] … … 87 88 tbint=fltarr(nbgrid) 88 89 for i=0,na-1 do begin 89 ind=where(abs(grid-fova[i]) le pixatot[i]/2,nii) 90 ;print,i,nii 91 tbint[ind]=tb[i] 90 ind=where(abs(grid-fova[i]) le pixatot[i]/2,nii) 91 print,i,nii 92 if nii ne 0 then begin 93 tbint[ind]=tb[i] 94 endif 92 95 endfor 93 96 latgrid=interpol(latlu,fova,grid)
Note: See TracChangeset
for help on using the changeset viewer.