Changeset 448 for trunk


Ignore:
Timestamp:
12/07/11 15:46:10 (13 years ago)
Author:
lelod
Message:

modifs extractamsua OK

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/extract_amsua.pro

    r447 r448  
    209209    openr, lun_a, list_filea, /get_lun 
    210210    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 
    212216        onefile = '' 
    213217        readf, lun_a, filea 
     
    245249; latitude, et les Tbs des differents canaux (15 pour AMSUA) 
    246250 
    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.) 
    262269    amzen=REFORM(ama_scan.angles[0,*,*]/100.) 
    263270    amalat=REFORM(ama_scan.latlon[0,*,*]/1.E4) 
     
    278285; appel a interpolswatw pour ajuster les pixels amsua sur une grille 
    279286; reguliere dans la fauchee 
     287; et selection de la zone conservee 
    280288resol=1 
    281  
     289chint=fltarr(100) 
     290latint=fltarr(100) 
     291lonint=fltarr(100) 
     292fovint=fltarr(100) 
     293timeint=fltarr(100) 
     294time=fltarr(100) 
    282295for i=0L,n_scan-1L do begin 
    283    tb=amch5[*,i] 
     296   tb=amch[*,i] 
    284297   lon=amalon[*,i] 
    285298   lat=amalat[*,i] 
    286299   interpolswath,tb,lat,lon,resol,nbgrid,tbgrid,latgrid,longrid 
    287300   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 
    295304  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; 
    336320      ; 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 
     327nn=max(size(chint)) 
     328print,'nb points dans la zone',nn 
     329 
     330      for i=0L, nn-1L do begin      
    349331;format: nosat,mois, day, lon, lat, zen,fov, time, ama_ch1:15,amb_ch1:5 
    350  ; print, 'mois::::', mm,'-----', nab-i 
    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))' 
    353335     endfor 
    354336       
    355   endif else begin 
    356       flagg=0 
    357       print, 'pas de points dans la zone' 
    358   endelse 
    359337 
    360338 
  • trunk/src/interpolswath.pro

    r447 r448  
    5656 
    5757for 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]+dist 
     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]+dist 
    6060endfor 
    6161for 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))) 
    6363;print,i,dist 
    64 fova[i]=fova[i+1]-dist 
     64   fova[i]=fova[i+1]-dist 
    6565endfor 
    6666 
    6767print,fova 
    68 ;if -fova[0] ne fova[na-1] then print, 'pb symetrie fauchee' 
    6968 
    7069distmax=-min(fova)+max(fova)+max(pixa) 
     
    7978grid2=indgen(ndemigrid)*delta+fova[nnadir] 
    8079grid1=fltarr(ndemigrid) 
    81 for i=0,ndemigrid-1 do grid1[i]=-grid2[ndemigrid-1-i] 
     80for i=0,ndemigrid-1 do begin 
     81   grid1[i]=-grid2[ndemigrid-1-i] 
     82endfor 
    8283;alternative equivalente) 
    8384;for i=ndemigrid-1,0,-1 do grid1[i]=-(ndemigrid-i-1)*delta-fova[nnadir] 
     
    8788tbint=fltarr(nbgrid) 
    8889for 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 
    9295endfor 
    9396latgrid=interpol(latlu,fova,grid) 
Note: See TracChangeset for help on using the changeset viewer.