function goes_url_callback, status, progress, data
PRINT, status
RETURN, 1
end
function check_goes_noaa_dir, base_dir, remote_http_dir
CATCH, errorStatus
IF (errorStatus NE 0) THEN BEGIN
CATCH, /CANCEL
PRINT, !ERROR_STATE.msg
oUrl->GetProperty, RESPONSE_CODE=rspCode, $
RESPONSE_HEADER=rspHdr, RESPONSE_FILENAME=rspFn
PRINT, 'rspCode = ', rspCode
PRINT, 'rspHdr= ', rspHdr
PRINT, 'rspFn= ', rspFn
OBJ_DESTROY, oUrl
RETURN, 0
ENDIF
oUrl = OBJ_NEW('IDLnetUrl')
oUrl->SetProperty, VERBOSE = 1
oUrl->SetProperty, url_scheme = 'http'
oUrl->SetProperty, CALLBACK_function ='goes_url_callback'
oUrl->SetProperty, URL_HOST = remote_http_dir
FILE_DELETE, base_dir + 'goestestfile.txt', /ALLOW_NONEXISTENT
fn = oUrl->Get(FILENAME = base_dir + 'goestestfile.txt' )
return, 1
end
function goes_read_lastdate, fname
lastdate = ''
openr, lun, fname, /get_lun
readf, lun, lastdate
free_lun, lun
return, lastdate
end
pro goes_write_lastdate, fname, lastdate
openw, lun, fname, /get_lun
printf, lun, lastdate
free_lun, lun
end
function goes_generate_datearray, date_start, date_end
if date_start eq '' then begin
dprint, dlevel = 1, 'Invalid date_start.'
return, ['0']
endif
year01 = STRMID(date_start, 0, 4)
month01 = STRMID(date_start, 5, 2)
day01 = STRMID(date_start, 8, 2)
if date_end eq '' then begin
CALDAT, systime(/julian), month02, day02, year02
endif else begin
year02 = STRMID(date_end, 0, 4)
month02 = STRMID(date_end, 5, 2)
day02 = STRMID(date_end, 8, 2)
endelse
date_array = TIMEGEN( START=JULDAY(month01,day01,year01), FINAL=JULDAY(month02,day02,year02))
return, date_array
end
pro goes_overview_plot_wrapper, date_start = date_start, date_end = date_end, $
date_mod = date_mod, probes = probes, base_dir = base_dir, $
server_run = server_run, themis_dir = themis_dir, goes_dir = goes_dir
compile_opt idl2
dprint, dlevel = 2, 'START GOES overview plot. Date: ' + SYSTIME()
device = 'z'
thm_init, /reset
goes_init, /reset
if keyword_set(server_run) then begin
if FILE_TEST(themis_dir, /DIRECTORY) then !themis.local_data_dir = themis_dir
if FILE_TEST(goes_dir, /DIRECTORY) then !goes.local_data_dir = goes_dir
endif
if ~keyword_set(base_dir) then base_dir='/disks/themisdata/overplots/'
lastdate_file = base_dir + 'goeslastdate.txt'
if ~keyword_set(probes) then probes=['10','11','12','13','14','15']
if ~keyword_set(date_start) then date_start = ''
if strlen(date_start) ne 10 then date_start = ''
if ~keyword_set(date_end) then date_end = ''
if strlen(date_end) ne 10 then date_end = ''
if date_end eq '' then begin
CALDAT, systime(/julian), Month1, Day1, Year1
date_end=STRTRIM(string(Year1),2)+'-'+STRTRIM(string(Month1, format='(I02)'),2)+'-'+STRTRIM(string(Day1, format='(I02)'),2)
endif
if keyword_set(date_mod) then begin
if STRCMP(date_mod, 'continue', 8, /FOLD_CASE) then begin
date_start = goes_read_lastdate(lastdate_file)
date_array = goes_generate_datearray(date_start, date_end)
endif else if STRCMP(date_mod, 'daysNNN', 4, /FOLD_CASE) then begin
len = STRMID(date_mod, 4, 3)
date_array = TIMEGEN(len, START=SYSTIME(/JULIAN)-len)
endif else if STRCMP(date_mod, 'startdateNNN', 9, /FOLD_CASE) then begin
if strlen(date_mod) ne 12 then begin
dprint, dlevel = 1, 'Invalid date_mod. Please use date_mod=startdateNNN'
return
endif
if date_start ne '' then begin
year0 = STRMID(date_start, 0, 4)
month0 = STRMID(date_start, 5, 2)
day0 = STRMID(date_start, 8, 2)
len = STRMID(date_mod, 9, 3)
date_array = TIMEGEN(len, START=JULDAY(month0,day0,year0))
endif else begin
dprint, dlevel = 1, 'Invalid date_mod. Please use date_mod=daysNNN and a valid date_start'
return
endelse
endif else if STRCMP(date_mod, 'enddateNNN', 7, /FOLD_CASE) then begin
if strlen(date_mod) ne 10 then begin
dprint, dlevel = 1, 'Invalid date_mod. Please use date_mod=enddateNNN'
return
endif
if date_end ne '' then begin
year0 = STRMID(date_end, 0, 4)
month0 = STRMID(date_end, 5, 2)
day0 = STRMID(date_end, 8, 2)
len = STRMID(date_mod, 7, 3)
if len ge 1 then len = len - 1
date_array = TIMEGEN(STEP_SIZE=1, FINAL=JULDAY(month0,day0,year0), START=JULDAY(month0,day0,year0)-len)
endif else begin
dprint, dlevel = 1, 'Invalid date_mod. Please use date_mod=enddateNNN and a valid date_end'
return
endelse
endif else begin
dprint, dlevel = 1, 'Invalid date_mod.'
return
endelse
endif else begin
date_array = goes_generate_datearray(date_start, date_end)
endelse
if date_array[0] eq '0' then return
CALDAT, date_array, Month1, Day1, Year1
daten=STRTRIM(string(Year1),2)+'-'+STRTRIM(string(Month1, format='(I02)'),2)+'-'+STRTRIM(string(Day1, format='(I02)'),2)
for i=0, n_elements(daten)-1 do begin
date = daten[i]
year03 = STRMID(date, 0, 4)
month03 = STRMID(date, 5, 2)
day03 = STRMID(date, 8, 2)
directory = base_dir + year03 + path_sep() + month03 + path_sep() + day03 + path_sep()
remote_dir = 'satdat.ngdc.noaa.gov/sem/goes/data/new_avg/' + year03 + '/' + month03 + '/'
for j=0, n_elements(probes)-1 do begin
probe = probes[j]
remote_http_dir = remote_dir + 'goes' + probe + '/netcdf/'
if check_goes_noaa_dir(base_dir, remote_http_dir) then begin
dprint, dlevel=1, "====================================================="
msgstr = "GOES OVERVIEW PLOT: Probe= " + string(probe) + ", date= " + date
dprint, dlevel = 1, msgstr
heap_gc
goes_overview_plot, date = date, probe = probe, directory = directory, device = device, geopack_lshell = geopack_lshell
goes_write_lastdate, lastdate_file, date
endif
endfor
endfor
dprint, dlevel = 2, 'END GOES overview plot. Date: ' + SYSTIME()
end