;+ ; Contains the fill_tab_error procedure ; ; :Author: ; Laurent Lamy ; ; :History: ; 2008/03/01: Created ; ; 2009/11/24: Last Edit ;- ; ;+ ; Routine de remplissage des images radio (df_signal_plot.pro) ; ; :Params: ; tab: out, required, type=sometype ; image radio ; x: in, required, type=sometype ; séries temporelles de coordonnées ; y: in, required, type=sometype ; séries temporelles de coordonnées ; signal: in, required, type=sometype ; A parameter named signal ; reso: in, required, type=float ; a- pour les images dans le plan d'observation: valeur réelle donnant la résolution angulaire en degrés (typiquement 2) ; b- pour les images projetées: séries temporelles de coordonnées pour les points définissant la barre d'erreur associée au signal ; npts: in, required, type=int ; nombre de points de chaque barre d'erreur (typiquement 8) ; lim: in, required, type=sometype ; dimension de la carte (en rayons planétaires) ; ; :Keywords: ; dB: in, optional, type=byte ; change la convention de remplissage en "produit de flux" ; sum: in, optional, type=byte ; change la convention de remplissage en somme simple (occurrence) ;- PRO fill_tab_error,tab,x,y,signal,reso,npts,lim,dB=dB,sum=sum ; Options: remplissage par défaut par "dilution" du signal initial dans sa ; barre d'erreur associée (division par le nombre de pixels correspondant, sz=size(tab) bin=2.*lim/sz(1) n=n_elements(x) for k=0l,n-1l do begin ; Coordonnées des points (x,y) dans l'image finale: xx=long(x(k)/bin+sz(1)/2.) yy=long(y(k)/bin+sz(2)/2.) error=fltarr(2,npts) ; Coordonnées de leur barre d'erreur dans l'image finale: if n_elements(reso) eq 1 then begin ; Cas image dans le plan d'observation: rdeg=tan(reso*!dtor)*lim error(0,*)=round((cos(findgen(npts)/npts*2.*!pi)*rdeg+x(k))/bin+sz(1)/2.)+0.5 error(1,*)=round((sin(findgen(npts)/npts*2.*!pi)*rdeg+y(k))/bin+sz(1)/2.)+0.5 endif else begin ; Cas image projetée: error(0,*)=long(reso(0,*,k)/bin+sz(1)/2.)+0.5 error(1,*)=long(reso(1,*,k)/bin+sz(2)/2.)+0.5 endelse ; Remplissage: if n_elements(error(0,*)) gt 2 then begin result=polyfillv(error(0,*),error(1,*),sz(1),sz(1)) test=where(result eq (yy*sz(1)+xx)) if test(0) ne -1 then begin if result(0) ne -1 and ~keyword_set(dB) and ~keyword_set(sum) then tab(result)+=signal(k)/n_elements(result) if result(0) ne -1 and keyword_set(dB) then tab(result)+=10*alog10(signal(k)/n_elements(result)/1e-23>1) if result(0) ne -1 and keyword_set(sum) then tab(result)+=signal(k) endif endif endfor end