;- IDL routine to plot AMSU-A Channel 8 (55.5 GHz) data ;- Copied from plotamsu_ch7.pro to be executed by manual8.pro ;- for quick QC of data only!!!! bwk July, 2001 PRO plotamsu_ch8_man,data,num_scans,lat,lon,center_lat,center_lon,name,date,map,smooth,c_size ;- Max temp arrays--storm centered... output_rev = fltarr(30,num_scans) output_max = fltarr(30,num_scans) output_lat = fltarr(30,num_scans) output_lon = fltarr(30,num_scans) data_c=data-273.15 sz=size(data_c) nx=sz[1] ny=sz[2] mag=20 ; Set domain... if ( map eq 0 ) then begin lat_sw = 0 lon_sw = -90. lat_ne = 50. lon_ne = -20. endif else begin lat_sw = center_lat - map lon_sw = center_lon - map lat_ne = center_lat + map lon_ne = center_lon + map endelse ;- Fix geographical plot size, remove drift... centerlat = (lat_sw + lat_ne)*0.5 centerlon = (lon_sw + lon_ne)*0.5 ;- Deal with missing data values (i.e., 999.90)... for fov =0,29 do begin for scan = 0,num_scans-1 do begin if ( data_c(fov,scan) gt 700. ) then begin data_c(fov,scan) = min( data_c ) endif endfor endfor ;- Extract warm anomaly within +/-1 deg radius of center... nout = 0 for scan = 0,num_scans-1 do begin good = where((lat(*,scan) ge center_lat-1) and (lat(*,scan) le center_lat+1) and $ (lon(*,scan) ge center_lon-1) and (lon(*,scan) le center_lon+1), count) if (count ge 1) then begin output_max[*,nout] = data_c[*,scan] nout = nout + 1 endif endfor output_max = output_max[*,0:nout-1] ;- Extract storm data within +/-10 deg radius of center... nout = 0 for scan = 0,num_scans-1 do begin good = where((lat(*,scan) ge center_lat-10) and (lat(*,scan) le center_lat+10) and $ (lon(*,scan) ge center_lon-10) and (lon(*,scan) le center_lon+10), count) if (count ge 1) then begin output_rev[*,nout] = data_c[*,scan] output_lat[*,nout] = lat[*,scan] output_lon[*,nout] = lon[*,scan] nout = nout + 1 endif endfor output_rev = output_rev[*,0:nout-1] output_lat = output_lat[*,0:nout-1] output_lon = output_lon[*,0:nout-1] ; CONGRID data... if (smooth eq 0) then begin ;- Then don't smooth data! output_rev = congrid(output_rev,nx*mag,ny*mag) output_lat = congrid(output_lat,nx*mag,ny*mag,/interp) output_lon = congrid(output_lon,nx*mag,ny*mag,/interp) endif else begin ;- Then smooth data! output_rev = congrid(output_rev,nx*mag,ny*mag,/interp) output_lat = congrid(output_lat,nx*mag,ny*mag,/interp) output_lon = congrid(output_lon,nx*mag,ny*mag,/interp) endelse maxtb=max(output_max) maxtemp=-45. mintemp=-60. ;- Set values for contours... min=min(output_rev) max=max(output_rev) vals=[-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45] ;- Prepare irregularly spaced data for gridding... latmax=center_lat+10. latmin=center_lat-10. lonmax=center_lon+10. lonmin=center_lon-10. mapbounds=[lonmin,latmin,lonmax,latmax] mapspacing=[.5,.5] triangulate,lon,lat,angles,hull griddata=trigrid(lon,lat,data_c,angles,mapspacing,mapbounds,missing=min(data_c),extrapolate=hull) s=size(griddata) gridlon=findgen(s[1])*((lonmax-lonmin)/(s[1]-1))+lonmin gridlat=findgen(s[2])*((latmax-latmin)/(s[2]-1))+latmin ;- Set plot position... !p.position=[0.07,0.15,0.9,0.85] map_set,centerlat,centerlon,/isotropic,limit=[lat_sw,lon_sw,lat_ne,lon_ne] imagemap,output_rev,output_lat,output_lon,$ /isotropic,range=[mintemp,maxtemp],limit=[lat_sw,lon_sw,lat_ne,lon_ne] contour,griddata,gridlon,gridlat,levels=vals,/overplot,c_color=0,c_labels=vals,c_charsize=c_size map_continents,/hires,/coast map_grid,/box colorbar,pos=[0.84,0.14,0.85,0.86],min=mintemp,max=maxtemp,divisions=10,format='(f10.1)',/vertical,/right ;- Title, max temperature, and date... XYOuts,0.28,0.96,name,/Normal,size=.5 XYOuts,0.28,0.94,'AMSU-A Channel 8 (55.5GHz) Brightness Temperature (C)',/Normal,size=.5 XYOuts,0.28,0.92,date,/Normal,size=.5 XYOuts,0.28,0.07,'Max Tb:', /Normal,size=.5 XYOuts,0.33,0.07, maxtb, /Normal,size=.5 XYOuts,0.45,0.07,'C',/Normal,size=.5 XYOuts,0.55,0.07,' Contour Interval = 1C', /Normal,size=.5 END