Next, for each sensor, I created an IDL SAVE-format file containing all the frames with the gray-scaled image data along with the continental overlay. They’re stored in an ordered hash with the key set to the image’s time stamp, derived from the file’s name. (Note that the NOAA and METEOSAT file-naming conventions use slightly different formats with respect to the time stamps.)
I made two datasets, one with the absolute radiance difference value clamped at 10.0, and another data set with the value clamped at 1.0. As you will see in the animation, the value at 10.0 produces “smoother” images with less noise than the 1.0 delta data, but it does not show the pressure wave as prominently or for as long.
pro generate_meteosat_frames
compile_opt strictarr
on_error, 2
dir = dialog_pickfile($
Title = 'Select directory of Meteosat difference images', $
/dir, /must_exist)
if (dir eq '') then return
files = file_search(filepath(root = dir, 'MSG1-*Band-6_diff.dat'), count = c)
if (c eq 0) then return
window, /free, /pixmap, xsize = 1024, ysize = 1024
map_set, sat_p=[35786023.0,0,0], /satellite, 0., 41.5, /noborder ; East
map_continents, /hi
mask = tvrd(channel = 0)
wdelete, !d.window
xy = array_indices(mask, where(mask ne 0))
deltas = ['10.', '1.']
window, /free, xsize = 1024, ysize = 1024, /pixmap
e = envi(/current)
if (e eq !null) then e = envi(/headless)
foreach delta, deltas do begin
frames = orderedhash()
for i = 0, c - 1 do begin
print, (i + 1).tostring() + '/' + c.tostring(), ' ', files[i]
r1 = e.openraster(files[i])
d1 = r1[0].getdata()
t = ((file_basename(files[i], '.dat')).split('-'))[5]
tvscl, congrid($
reverse((d1 < float(delta)) > (-float(delta)), 2), 1024, 1024)
plots, xy[0, *], xy[1, *], psym = 3, color = 'ff0000'x, /device
frames['c' + (t.split('\.'))[0]] = tvrd(/true)
foreach r, r1 do r.close
endfor
save, frames, /compress, file = filepath(root=file_dirname(files[0]), $
'Meteosat-8 SEVIRI Band 6_Delta_' + delta + '_Tonga.sav')
endforeach
wdelete, !d.window
end