;+
; PROCEDURE overlay_map_coast
;
; :Description:
; Draw the world map on the plot window set up by map_set.
;
;
; :Keywords:
; fill: Set to fill the continents
; col: Set the color index to draw the coast lines with
; (Usually the time should be set by sd_time)
; static: Set to plot on the MLAT-MLON grid, not the MLAT-MLT.
; This keyword does nothing when keyword geo_plot is set.
; time: Set the time (in UNIX time) to calculate the AACGM coords
; of the map for. Do nothing with keyword geo_plot on.
; geo_plot: Set to draw in geographical coordinates
; position: Set to draw the map at the designated position in the plot window
; height: Set a height in [km] for which the AACGM conversion is made.
; Default: 0.01 km. DO NOT set zero or negative otherwise it crashes.
;
; :EXAMPLES:
; overlay_map_coast (to draw the world map in AACGM)
;
; :Author:
; Tomo Hori (E-mail: horit@stelab.nagoya-u.ac.jp)
;
; :HISTORY:
; 2011/11/10: Created
; 2011/06/15: renamed to overlay_map_coast
;
; $LastChangedBy: jwl $
; $LastChangedDate: 2012-03-16 14:46:35 -0700 (Fri, 16 Mar 2012) $
; $LastChangedRevision: 10146 $
; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/projects/erg/ground/radar/superdarn/overlay_map_coast.pro $
;-
PRO overlay_map_coast,fill=fill,col=col, $
static=static,time=time, geo_plot=geo_plot, $
position=position, south=south, height=height
stack = SCOPE_TRACEBACK(/structure)
filename = stack[SCOPE_LEVEL()-1].filename
dir = FILE_DIRNAME(filename)
OPENR,map_unit,dir+'/sd_world_data',/GET_LUN
IF KEYWORD_SET(south) THEN hemisphere=-1 ELSE hemisphere=1
IF NOT KEYWORD_SET(col) THEN col=0
IF NOT KEYWORD_SET(height) then height = 0.01 ; [km]
;Initialize the SD environment
sd_init
IF ~KEYWORD_SET(time) THEN BEGIN
t0 = !sdarn.sd_polar.plot_time
get_timespan, tr
IF t0 GE tr[0] AND t0 LE tr[1] THEN time = t0 ELSE BEGIN
time = (tr[0]+tr[1])/2. ; Take the center of the designated time range
ENDELSE
ENDIF
ts = time_struct(time)
year=ts.year
year_secs= LONG( (ts.doy-1)*86400L + ts.sod )
no_blocks=17
block_len=INTARR(17)
READF,map_unit,no_blocks,block_len
coast=FLTARR(2,10000) & pts=0
FOR read_block=0,no_blocks-1 DO BEGIN
read_coast=FLTARR(2,block_len(read_block))
READF,map_unit,read_coast
coast(*,pts:pts+block_len(read_block)-1)=read_coast(*,*)
pts=pts+block_len(read_block)
ENDFOR
CLOSE,map_unit
FREE_LUN,map_unit
;Set !p.position and preserve the original setting
pre_pos = !p.position
if keyword_set(position) then begin
!p.position = position
endif else position = !p.position
plot_coast=FLTARR(2,5000) & plot_pts=0
FOR i=0,pts-1 DO BEGIN
IF (coast(0,i) NE 0 OR coast(1,i) NE 0) THEN BEGIN
;IF coast(0,i)*hemisphere GT 0 THEN BEGIN
if ~keyword_set(geo_plot) then begin ;For plotting in AACGM
aacgmconvcoord,coast[0,i],coast[1,i],height,mlat,mlon,err,/TO_AACGM
mag_pos = [mlat, mlon]
;mag_pos=cnvcoord(coast(0,i),coast(1,i),1)
;;;;;;For plotting with MAP_SET (stay in polar coordinates)
IF NOT KEYWORD_SET(static) THEN BEGIN
;x0= mlt(year,year_secs,mag_pos[1])*180/12 ;longitude [deg]
x0 = aacgmmlt(year,year_secs,mag_pos[1])*180./12. ; [deg]
x0= (x0 + 360. ) MOD 360.
y0= mag_pos[0] ;latitude [deg]
;x0= ABS(hemisphere*90-mag_pos(0))* $
; SIN(mlt(year,year_secs,mag_pos(1))*!pi/12)
;y0=-ABS(hemisphere*90-mag_pos(0))* $
; COS(mlt(year,year_secs,mag_pos(1))*!pi/12)
ENDIF ELSE BEGIN
x0= mag_pos[1] ;longitude [deg]
x0= (x0 + 360. ) MOD 360.
y0= mag_pos[0] ;latitude [deg]
;x0= ABS(hemisphere*90-mag_pos(0))* $
; SIN(mag_pos(1)*!pi/180)
; y0=-ABS(hemisphere*90-mag_pos(0))* $
; COS(mag_pos(1)*!pi/180)
ENDELSE
endif else begin ;For plotting in GEO
y0 = coast[0,i]
x0 = coast[1,i]
endelse
plot_coast(*,plot_pts)=[x0,y0]
plot_pts=plot_pts+1
;ENDIF
ENDIF ELSE BEGIN
IF plot_pts GT 0 THEN BEGIN
IF KEYWORD_SET(fill) THEN BEGIN
POLYFILL,plot_coast(0,0:plot_pts-1),plot_coast(1,0:plot_pts-1),NOCLIP=0,COL=col
ENDIF ELSE BEGIN
OPLOT,plot_coast(0,[INDGEN(plot_pts),0]),plot_coast(1,[INDGEN(plot_pts),0]),COL=col
ENDELSE
ENDIF
plot_pts=0
ENDELSE
ENDFOR
;Restore the original position
!p.position = pre_pos
END
;-----------------------------------------------------------------------