;+ ; PROCEDURE aacgmconvcoord ; ; :PURPOSE: ; A wrapper procedure to choose AACGM DLM or IDL-native routines ; to convert (lat,lon) between Geographic coordinates and AACGM. ; ; The wrapper procedures/functions check !sdarn.aacgm_dlm_exists ; (if not defined, then define it by sd_init) to select appropriate ; AACGM routines (DLM, or IDL native ones attached to TDAS). ; ; :Params: ; glat, glon: Geographic latitude and longitude. ; mlat, mlon: AACGM latitude and longitude. ; alt: Altitude for conversion. ; err: Error status of coordinate transformation. ; ; :Keywords: ; TO_AACGM: Set to convert from geographic to AACGM coordinates. ; TO_GEO: Set to convert from AACGM to geographic coordinates. ; ; :Examples: ; aacgmconvcoord, glat,glon,alt, mlat,mlon,err, /TO_AACGM ; aacgmconvcoord, mlat,mlon,alt, glat,glon,err, /TO_GEO ; ; :AUTHOR: ; Tomo Hori (E-mail: horit@stelab.nagoya-u.ac.jp) ; ; :HISTORY: ; 2011/10/04: created and got through the initial bug fixes ; ; $LastChangedDate: 2019-03-17 21:51:57 -0700 (Sun, 17 Mar 2019) $ ; $LastChangedRevision: 26838 $ ;- pro aacgmconvcoord, glat,glon,alt,mlat,mlon,err, TO_AACGM=TO_AACGM, TO_GEO=TO_GEO ;Initialize !sdarn if not defined help, name='!sdarn',out=out if out eq '' then sd_init glon = (glon + 360.) mod 360. if !map2d.aacgm_dlm_exists then begin ;print, 'using AACGM_DLM' aacgm_conv_coord, glat,glon,alt,mlat1,mlon1,err1,$ TO_AACGM=TO_AACGM, TO_GEO=TO_GEO mlat = glat & mlon = glat & err = glat if (size(glat[0]))[1] eq 4 then begin ;the arguments are in float mlat[*] = float( mlat1[*] ) & mlon[*] = float( mlon1[*] ) & err[*] = float( err1[*] ) endif else begin mlat[*] = double( mlat1[*] ) & mlon[*] = double( mlon1[*] ) & err[*] = double( err1[*] ) endelse endif else begin mlat=glat & mlon=glon mlat[*]=0. & mlon[*]=0. err = fix(glat) & err[*] = 0 for i=0L, n_elements(glat)-1 do begin cnv_aacgm,glat[i],glon[i],alt[i],tmlat,tmlon,r,terr,geo=TO_GEO mlat[i]=tmlat & mlon[i]=tmlon & err[i] = fix(terr) ;print, 'cnv_aacgm was executed' ;print, glat[i],glon[i],alt[i],' ',mlat[i],mlon[i],r,err endfor endelse mlon = (mlon + 360.) mod 360. return end