You are on page 1of 6

PRO VPOTEKA_initial_test, PS=ps

;================================================
=======
if keyword_set(ps) then begin
set_plot,'ps' & device, /color,bits_per_pixel=8,/landscape, xsize=24, xoffset=1
endif else begin
device, retain=2, decomposed=0
window,0,xsize=1200,ysize=800
endelse

;================================================
=======

;SYSTEM PARAMATERS
smpf = 100000.
time = double(findgen(100000,START=1))/100000.
vprp = 300000.
freq = findgen(100000,START=1)

main_folder = '/Users/ulat/IDLWorkspace/VPOTEKA/'

;================================================
=======

;MAIN

;MAKE TOA GRIDS (DATABASE)


;**test_run.pro**

;LOCATION OF STATIONS
pos_gum = [144.7945,13.4780]
pos_mnl = [121.0444,14.6450]
pos_pal = [134.4658,7.3382]

dR_g2m =
map_2points(pos_gum[0],pos_gum[1],pos_mnl[0],pos_mnl[1],/meters)*1000 ;km
dT_g2m = ceil(dR_g2m/(vprp)*smpf)
dR_m2p =
map_2points(pos_mnl[0],pos_mnl[1],pos_pal[0],pos_pal[1],/meters)*1000 ;km
dT_m2p = ceil(dR_m2p/(vprp)*smpf)
dR_p2g =
map_2points(pos_pal[0],pos_pal[1],pos_gum[0],pos_gum[1],/meters)*1000 ;km
dT_p2g = ceil(dR_p2g/(vprp)*smpf)

;LOADING FILES
;TOA GRIDS ** DATABASE
toa_fname = 'toa_grids002deg.txt'
toa_fpath = main_folder + toa_fname
toalines_dats = read_table(toa_fpath)
print, toalines_dats[0,0]
toa_lns = toalines_dats[0,*]
toa_lts = toalines_dats[1,*]
toa_g2m = toalines_dats[2,*]
toa_m2p = toalines_dats[3,*]
toa_p2g = toalines_dats[4,*]

;10min sample
;FILE PARSING
;FOLDER FOR LOADING FILES
data_folder = '/Volumes/ULAT/V-POTEKA/'
date_str = '2018-07-26/'
file_str = 'event*.csv'
site_g = 'event_00064921'
site_m = 'event_00064919'
site_p = 'event_00064920'

;CHECKING FILES
stab_g = v000vlf_site_tab(1)
sname_g = v010vlf_site_name(1)
lfolder_g = data_folder + sname_g + '/'; + date_str
;SARABURI
stab_m = v000vlf_site_tab(2)
sname_m = v010vlf_site_name(2)
lfolder_m = data_folder + sname_m + '/'; + date_str
;PONTIANAK
stab_p = v000vlf_site_tab(3)
sname_p = v010vlf_site_name(3)
lfolder_p = data_folder + sname_p + '/'; + date_str

gum_flists = file_search(lfolder_g + date_str, file_str)


n_lists = n_elements(gum_flists)
print,n_lists

stop

FOR i_file=1, n_lists-1 DO BEGIN ; 11 DO BEGIN ;

gum_fpath = gum_flists[i_file]
hms_string = strmid(gum_fpath,54,12)
mnl_file = site_m + '_' + hms_string + '.csv'
mnl_fpath = lfolder_m + date_str + mnl_file
pal_file = site_p + '_' + hms_string + '.csv'
pal_fpath = lfolder_p + date_str + pal_file

;EXISTENCE OF FILES
chk_path_gum = file_test(gum_fpath)
chk_path_mnl = file_test(mnl_fpath)
chk_path_pal = file_test(pal_fpath)
print, hms_string
IF (chk_path_gum EQ 1 AND chk_path_mnl EQ 1 AND chk_path_pal EQ 1)
THEN BEGIN
print, 'There are 3 files.'

;LOADING OF FILES ;NOISE-FILTERED ;;;;change to easier function


;GUAM
vlf_idx_gum = v020vlf_open_file(gum_fpath)
gum_maxtime = abs(double(strmid(vlf_idx_gum.field07,5,5)))/1000.
;millisecond
gum_mintime = abs(double(strmid(vlf_idx_gum.field09,5,5)))/1000.
;millisecond
dif_gum = abs(gum_mintime - gum_maxtime)
gum_time = gum_maxtime[where(dif_gum GE 0.2)]

;MANILA
vlf_idx_mnl = v020vlf_open_file(mnl_fpath)
mnl_maxtime = abs(double(strmid(vlf_idx_mnl.field07,5,5)))/1000.
;millisecond
mnl_mintime = abs(double(strmid(vlf_idx_mnl.field09,5,5)))/1000.
;millisecond
dif_mnl = abs(mnl_mintime - mnl_maxtime)
mnl_time = mnl_maxtime[where(dif_mnl GE 0.2)]
;PALAU
vlf_idx_pal = v020vlf_open_file(pal_fpath)
pal_maxtime = abs(double(strmid(vlf_idx_pal.field07,5,5)))/1000. ;millisecond
pal_mintime = abs(double(strmid(vlf_idx_pal.field09,5,5)))/1000. ;millisecond
dif_pal = abs(pal_mintime - pal_maxtime)
pal_time = pal_maxtime[where(dif_pal GE 0.2)]

ntime_gum = n_elements(gum_time)

stop

FOR i_pulse=0, ntime_gum-1 DO BEGIN

;TARGET INDEX
tgt_idx_gum = gum_time[[i_pulse]]
dif_idx_g2m = abs(mnl_time-tgt_idx_gum)
tgt_idx_mnl = mnl_time[(where(dif_idx_g2m EQ min(dif_idx_g2m)))]
dif_idx_g2p = abs(pal_time-tgt_idx_gum)
tgt_idx_pal = pal_time[(where(dif_idx_g2p EQ min(dif_idx_g2p)))]
print, tgt_idx_gum
print, tgt_idx_mnl
print, tgt_idx_pal

di_g2m = tgt_idx_gum[0] - tgt_idx_mnl[0]


di_m2p = tgt_idx_mnl[0] - tgt_idx_pal[0]
di_p2g = tgt_idx_pal[0] - tgt_idx_gum[0]
print, di_g2m
print, di_m2p
print, di_p2g

chk_dif_gmp = (abs(di_g2m) LT dT_g2m) * (abs(di_m2p) LT dT_m2p) *


(abs(di_p2g) LT dT_p2g)
print, chk_dif_gmp

IF (chk_dif_gmp) THEN BEGIN

;TOA LINES
idx_toa_g2m = where( abs(toa_g2m-di_g2m) LE 5 )
toa_lns_g2m = toa_lns[idx_toa_g2m]
toa_lts_g2m = toa_lts[idx_toa_g2m]

idx_toa_m2p = where( abs(toa_m2p-di_m2p) LE 5 )


toa_lns_m2p = toa_lns[idx_toa_m2p]
toa_lts_m2p = toa_lts[idx_toa_m2p]

idx_toa_p2g = where( abs(toa_p2g-di_p2g) LE 5 )


toa_lns_p2g = toa_lns[idx_toa_p2g]
toa_lts_p2g = toa_lts[idx_toa_p2g]

;ESTIMATION OF LIGHTNING POSITION


idx_g2m2p = where(abs(toa_g2m-di_g2m) LE 10. AND abs(toa_m2p-di_m2p)
LE 10. AND abs(toa_p2g-di_p2g) LE 10.)
loc_sfc_lon = median(toa_lns[idx_g2m2p])
loc_sfc_lat = median(toa_lts[idx_g2m2p])

IF (n_elements(idx_g2m2p)) THEN BEGIN

print, "GEOLOC"
hms_string2 = strmid(hms_string,0,15)
hh_string = strmid(hms_string,9,2)
mm_string = strmid(hms_string,11,2)
ss_string = strmid(hms_string,13,2)

;LIGHTNING TIMING
pos_lig = [loc_sfc_lon,loc_sfc_lat]
dR_l2g =
map_2points(pos_lig[0],pos_lig[1],pos_gum[0],pos_gum[1],/meters)*1000 ;km
;km
dT_l2g = ceil(dR_l2g/vprp*smpf)
dR_l2m =
map_2points(pos_lig[0],pos_lig[1],pos_mnl[0],pos_mnl[1],/meters)*1000 ;km
dT_l2m = ceil(dR_l2m/vprp*smpf)
dR_l2p =
map_2points(pos_lig[0],pos_lig[1],pos_pal[0],pos_pal[1],/meters)*1000 ;km
dT_l2p = ceil(dR_l2p/vprp*smpf)
lig_time = tgt_idx_gum[0]-(dT_l2g-1)
;STACK OF DATA
vlf_mat_v = dblarr(11,1)
vlf_sav_v = dblarr(11,1)
vlf_sav_v[0,0] = hh_string
vlf_sav_v[1,0] = mm_string
vlf_sav_v[2,0] = ss_string
vlf_sav_v[3,0] = tgt_idx_gum[0]
vlf_sav_v[4,0] = tgt_idx_mnl[0]
vlf_sav_v[5,0] = tgt_idx_pal[0]
vlf_sav_v[6,0] = tgt_idx_gum[0]-dT_l2g
vlf_sav_v[7,0] = tgt_idx_mnl[0]-dT_l2m
vlf_sav_v[8,0] = tgt_idx_pal[0]-dT_l2p
vlf_sav_v[9,0] = loc_sfc_lon
vlf_sav_v[10,0] = loc_sfc_lat
vlf_mat_v = [[vlf_mat_v],[vlf_sav_v]]

;PLOTTING GEOLOCATION

;================================================
=======
if keyword_set(ps) then begin
set_plot,'ps' & device, /color,bits_per_pixel=8,/landscape, xsize=24,
xoffset=1
endif else begin
device, retain=2, decomposed=0
window,0,xsize=1200,ysize=800
endelse

;================================================
=======
loadct,0 & !p.background=-1 & !p.color=0 & !p.font=-1 & !p.multi=[0,0,1] &
!x.style=1 & !y.style=1 & !p.charsize=1.5

toa_name = "GEOLOC_" + hms_string2 + "." + strtrim(lig_time,2) + ".png"


print, toa_name
figs_folder = main_folder + 'figs_folder/'
toa_path = figs_folder + toa_name

;window, 0
loadct,0 & background=-1
map_set,/cylindrical, londel=10,latdel=10, limit = [-20,90,40,170];Latmin,
Lonmin, Latmax, Lonma
!p.charsize=0.
map_grid, latdel=1., latlab=10,londel=1.,lonlab=60,/label
map_continents,/continents,/hires

loadct,5
plots, toa_lns_g2m,toa_lts_g2m, color = 100
plots, toa_lns_m2p,toa_lts_m2p, color = 200
plots, toa_lns_p2g,toa_lts_p2g, color = 300
plots, pos_gum[0],pos_gum[1],psym=4,symsize=2,thick=2
plots, pos_mnl[0],pos_mnl[1],psym=4,symsize=2,thick=2
plots, pos_pal[0],pos_pal[1],psym=4,symsize=2,thick=2
plots, pos_lig[0],pos_lig[1],psym=7,symsize=2,thick=2, color=100

write_png, toa_path, tvrd (/true)

;================================================
=======
if keyword_set(ps) then begin
device, /close
set_plot,'win'
endif

;================================================
=======
ENDIF
ENDIF
ENDFOR
stop
ENDFOR
stop

window,1
loadct,0 & background=-1
map_set,/cylindrical, londel=10,latdel=10, limit = [-20,90,40,170];Latmin,
Lonmin, Latmax, Lonma
!p.charsize=0.
map_grid, latdel=1., latlab=10,londel=1.,lonlab=60,/label
map_continents,/continents,/hires
loadct, 5
A = FINDGEN(16) * (!PI*2/16.)
UserSym, cos(A), sin(A)
plots, vlf_mat_v[9,*],vlf_mat_v[10,*],psym=8,symsize=1, thick=6, color=100

; if files < 3 (file missing in a station) continue to next file


; plot all lightning position on one map

END

You might also like