source: trunk/src/correc_amsu.pro @ 550

Last change on this file since 550 was 550, checked in by lelod, 12 years ago

modif correc_amsu

File size: 4.1 KB
Line 
1; docformat = 'rst'
2;+
3;
4; ============
5; correc_amsu.pro
6; ============
7;
8; .. function: correc_amsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax)
9; DESCRIPTION
10; ===========
11;
12; programme d'interpolation avec algorithme de Cressmann'ajustement
13;des donnees nadir (en complément de la correction de FK)
14;
15;; grille de sortie en long / lat
16; recoit en entree les jours de l'annee jdeb et jfin
17;correspondant au debut et la fin du mois
18;
19
20; EXAMPLES
21; ========
22;
23; ::
24;
25;    numch='a5'
26;    yyyyb=2006L
27;    yyyye=2006L
28;    mmb=8
29;    mme=8
30;    ddb=1
31;    dde=3
32;    lonmin=-25.
33;    lonmax=25.
34;    latmin=-5.
35;    latmax=20.
36
37;    result = cresamsu(numch, yyyyb, mmb, ddb $
38;            , yyyye, mme, dde $
39;            , lonmin, lonmax, latmin, latmax)
40;
41;
42; SEE ALSO
43; ========
44;
45;  Previous step :ref:`extract_amsu.pro` (:ref:`traite_amsuab.sh`)
46; :ref:`traite_amsuab.sh`
47;
48; Use :func:`file_amsu_t2_to_mem
49; :func:`idl_amsu_netcdf`
50;
51; TODO
52; ====
53;
54;
55;; EVOLUTIONS
56; ==========
57;
58
59function correc_amsu $
60   , numch $
61   , yyyyb $
62   , mmb $
63   , ddb $
64   , yyyye $
65   , mme $
66   , dde $
67   , lonmin $
68   , lonmax $
69   , latmin $
70   , latmax
71
72compile_opt idl2, strictarrsubs
73@cm_project
74;
75s = size(SCOPE_TRACEBACK(/STRUCTURE),/DIMENSION)
76routine = (SCOPE_TRACEBACK(/STRUCTURE))[s-1].Routine
77;
78key_performance=0
79if key_performance EQ 1 THEN BEGIN
80    time1 = SYSTIME(1)
81ENDIF
82;
83;
84; Return to caller if errors
85ON_ERROR, 2
86result = -1
87;
88usage = 'result = correc_amsu(numch, yyyyb, mmb, ddb, yyyye, mme, dde, lonmin, lonmax, latmin, latmax)'
89;
90nparam = N_PARAMS()
91IF (nparam NE 11) THEN BEGIN
92    ras = report(['Incorrect number of arguments.' $
93          + '!C' $
94          + 'Usage : ' + usage])
95    return, result
96ENDIF
97;
98tbmin=100
99tbmax=350
100
101prefix=numch
102look = 'filename'
103geomin = geolocation_to_string_idl(lonmin, latmin, look,1)
104geomax = geolocation_to_string_idl(lonmax, latmax, look,1)
105
106testfilename=''
107nbfile = 0L
108; lecture des fichiers
109ddmb=ddb
110ddme=dde
111mmyb=mmb
112mmye=mme
113indic=0
114for yyyy=yyyyb,yyyye do begin
115   if (yyyye ne yyyyb) then begin
116      mmyb=1
117      mmye=12
118      if yyyy eq yyyyb then mmyb=mmb
119      if yyyy eq yyyye then mmye=mme
120   endif
121   print,"traitement annee ",yyyy,'mois ',mmyb,'a ',mmye
122   for mm=mmyb,mmye do begin
123      if (mme ne mmb) then begin
124         ddmb=1
125         ddme=31
126         if mm eq mmb then ddmb=ddb
127         if mm eq mme then ddme=dde
128     endif
129      print,"mois ",mm,"jours ",ddmb,"a ",ddme
130      for dd=ddmb,ddme do begin
131         print, 'iii : traitement du jour ',yyyy,mm,dd
132         ; lecture du fichier journalier
133         result=file_amsu_t2_to_mem( yyyy, mm, dd, numch $
134                                     , lonmin, lonmax, latmin, latmax $
135                                     , testfilename)
136         if (size(result,/TYPE) EQ 3) THEN BEGIN
137            goto, nofile
138         ENDIF
139         desc=result.data.desc
140         hour=result.data.hour
141         fov=result.data.fov
142         lon=result.data.lon
143         lat=result.data.lat
144         mask=result.data.landseamask
145         tb1=result.data.tb
146            ; decodage du nb de points (nn)
147         nn=n_elements(tb1)
148
149         if indic eq 0 then begin
150            nfov=max(fov)
151            fovv=indgen(nfov)+1
152            sumtb=fltarr(nfov)
153            vartb=fltarr(nfov)
154            kont=intarr(nfov)*0L
155         endif
156         nfovday=max(fov)
157         if nfovday gt nfov then goto, nextday
158         for ifov=0,nfov-1 do begin
159            ind=where(fov eq ifov+1 and mask eq 1 ,nifov)
160            if (nifov ne 0) then begin
161               sumtb[ifov]=sumtb[ifov]+tb1[ind]
162               vartb[ifov]=vartb[ifov]+tb1[ind]*tb1[ind]
163               kont[ifov]=kont[ifov]+1L
164            endif
165         endfor
166
167nofile:
168         print, 'www : no data to read for this day'
169         goto, nextday
170nextday:
171         indic=indic+1
172      endfor
173   endfor
174; fin boucle sur le temps
175endfor
176
177moytb=sumtb/kont
178sigtb=sqrt((vartb-moytb*moytb)/kont)
179window,0
180plot,fovv,moytb,psym=7,xstyle=1,ystyle=1,yrange=[min(moytb)-max(sigtb),max(moytb)+max(sigtb)]
181errplot,moytb-sigtb,moytb+sigtb
182
183
184print,moytb
185
186realend:
187       
188result = 0
189return, result 
190end
Note: See TracBrowser for help on using the repository browser.