source: trunk/src/interpolswath.pro @ 583

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

adaptation chaine aux autres canaux

  • Property svn:keywords set to URL Id
File size: 3.4 KB
Line 
1;
2;+
3;
4; .. _interpolswath.pro:
5;
6; =================
7; interpolswath.pro
8; =================
9;
10; DESCRIPTION
11; ===========
12;
13; methode d'affectation des tb amsu sur grille de resolution
14; fine pour eviter les pbs de trous entre les pixels
15;
16; tb du canal - dimension fova (30 points pour amsua)
17; latlu
18; lonlu memes dimensions que tb
19;
20; principe: on lit la fauchee, puis on calcule fova, distances de puis
21; le centre de chaque pixel (en principe symetrique)
22; on cree grid, de dimension ngrid pixels, depuis le centre
23; jusqu'au bout du dernier pixel de chaque cote, avec une
24; resolution fixee au diametre du pixel central ou la moitie (resol
25; vaut 1 ou 2)
26;
27; on interpole les longitudes et latitudes en correspondance
28; on affecte a chaque pixel nouveau la Tb originelle la plus proche
29; en sortie on a une fauchee synthetique amsua reguliere
30; TODO
31; =====
32;
33; lelod 20120530
34; faire evoluer le prgm pour l'inetrpolation des donnees AMSUB
35;
36; regler le pb des longitudes autour de 180 degres
37; l'interpolation ne les gere pas et cree des points dans la zone AMMA...
38;
39; EVOLUTIONS
40; ==========
41;
42; $Id$
43;
44; $URL$
45;
46; - fplod 20120417
47;
48;   * usage of key_performance
49;
50; - fplod 20111130T120358Z cratos (Linux)
51;
52;   * minimal rest header
53;
54;-
55pro interpolswath, tb, latlu, lonlu, masklu, resol, nbgrid, tbint, latgrid, longrid, mask
56
57@common
58s = size(SCOPE_TRACEBACK(/STRUCTURE),/DIMENSION)
59routine = (SCOPE_TRACEBACK(/STRUCTURE))[s-1].Routine
60;
61if key_performance EQ 1 THEN BEGIN
62    time1 = SYSTIME(1)
63ENDIF
64;
65pixelsize,pixatot,pixbtot,alongatot,alongbtot
66na=max(size(pixatot))
67nnadir=na/2
68pixa=pixatot[nnadir:(na-1)]
69fova=fltarr(na)
70fova[nnadir]=pixa[0]/2.
71fova[nnadir-1]=-pixa[0]/2.
72rterre=6400.
73deg=!pi/180.
74lat=latlu*deg
75lon=lonlu*deg
76mnadir=nnadir-1
77ifov=indgen(na)
78for i=nnadir+1,na-1 do begin
79   dist=rterre*acos(sin(lat(i-1))*sin(lat(i)) + cos(lat(i-1))*cos(lat(i))*cos(lon(i)-lon(i-1)))
80   fova[i]=fova[i-1]+dist
81endfor
82for i=nnadir-2,0,-1 do begin
83   dist=rterre*acos(sin(lat(i))*sin(lat(i+1)) + cos(lat(i))*cos(lat(i+1))*cos(lon(i)-lon(i+1)))
84;print,i,dist
85   fova[i]=fova[i+1]-dist
86endfor
87;print,'fova'
88;print,fova
89;print,'pixatot'
90;print,pixatot
91;window,1
92 ;ploterr,ifov,fova,pixatot
93
94distmax=-min(fova)+max(fova)+max(pixa)
95dmax=distmax/2.
96delta= fix(pixa[0]/resol)
97;print,'pas swath',delta
98ndemigrid=fix(dmax/delta)+1
99if (dmax/delta-fix(dmax/delta) le 0.5) then ndemigrid=ndemigrid-1
100nbgrid=ndemigrid*2
101;print,'nb pts',nbgrid, ' dmax',dmax
102
103grid2=indgen(ndemigrid)*delta+fova[nnadir]
104grid1=fltarr(ndemigrid)
105for i=0,ndemigrid-1 do begin
106   grid1[i]=-grid2[ndemigrid-1-i]
107endfor
108;alternative equivalente)
109;for i=ndemigrid-1,0,-1 do grid1[i]=-(ndemigrid-i-1)*delta-fova[nnadir]
110grid=[grid1,grid2]
111;print,grid
112;print,tb
113tbint=fltarr(nbgrid)
114mask=intarr(nbgrid)
115for i=0,nbgrid-1 do begin
116   ind=where(abs(grid[i]-fova) eq min(abs(grid[i]-fova)),nii)
117      if nii eq 1 then begin
118         tbint[i]=tb[ind]
119         mask[i]=masklu[ind]
120      endif else begin
121         print,'pas de minimum?',nii
122      endelse
123   endfor
124
125;for i=0,na-1 do begin
126 ;  ind=where(abs(grid-fova[i]) le pixatot[i]/2,nii)
127  ; print,i,nii
128  ; if nii ne 0 then begin
129   ;   tbint[ind]=tb[i]
130  ;    mask[ind]=masklu[i]
131  ; endif
132  ; if nii eq 0 then begin
133  ;     
134;endfor
135
136
137latgrid=interpol(latlu,fova,grid)
138longrid=interpol(lonlu,fova,grid)
139
140;print,tbint
141IF key_performance EQ 1 THEN BEGIN
142   msg = report(['ppp : ' + routine + ' : durée totale ' $
143               + string(SYSTIME(1)-time1,format='(F12.6)')])
144ENDIF
145;
146end
Note: See TracBrowser for help on using the repository browser.