; docformat = 'rst' ; ; NAME: ; ASTNAMEFORMAT ; PURPOSE: ; Format an asteroid designation from its name or number ; ;+ ; :Description: ; Format an asteroid designation from its name or number ; ; Each database of asteroid properties use a different naming ; convention. This routine offers a general portal to format the designation/number. ; ; :Categories: ; Database, Asteroid ; ; :Params: ; DESIGN: in, required, type=integer/string ; Target identifyer (Name, Provisional designation, Number) ; ; :Returns: A string with the designation formated for specific databases ; ; :Keywords: ; TYPE: out, optional, type=integer ; A flag for number (1) or designation (2) ; ; ASTORB: in, optional, type=boolean, default=1 ; Use AstOrb (Lowell Obs) format ; ; ASTDYS: in, optional, type=boolean, default=0 ; Use AstDyS (Pisa Univ.) format ; ; EPROC: in, optional, type=boolean, default=0 ; Use Eproc command-line format ; ; :Examples: ; Format Ceres & Eros for ASTORB and Haumea for Eproc ; IDL> print, astnameformat('Ceres') ; IDL> print, astnameformat(433) ; IDL> print, astnameformat(Haumea, /EPROC) ; ; :Uses: ; VALID_NUM, DESIGNATION ; ; :Author: ; B.Carry (IMCCE) ; ; :History: ; Change History:: ; Written in October 2013, B. Carry (IMCCE) ;- function astNameFormat, design, type=type, astorb=astorb, astdys=astdys, wise=wise, eproc=eproc COMPILE_OPT hidden ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- I -- Initialization And Input Verification -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--I.1-- Type of Input ---------------------------------------------------------------- ; dims= size( design ) ; n = n_elements(dims) ; type = dims( n_elements(dims)-2 ) ; type = size( design, /Type ) ;--I.2-- Requested Format ------------------------------------------------------------- if keyword_set(ASTORB) then DB = 1 if keyword_set(ASTDYS) then DB = 2 if keyword_set(WISE) then DB = 3 if not keyword_set(DB) then DB = 1 ;--I.3-- Database Configuration ------------------------------------------------------- case DB of ;--I.3.1-- AstOrb 1: begin numFormat = '(I6)' desLength = 18 end ;--I.3.2-- AstDyS 2: begin numFormat = '(I-10)' desLength = 9 end ;--I.3.3-- WISE 3: begin numFormat = '(I6)' desLength = 11 end endcase case DB of ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- II -- Format for AstOrb (from Lowell Obs.) -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; 1: begin ;--II.1-- Input Designation is a Number if valid_num(design) then begin type = 1 return, string(design,format=numFormat) ;--II.2-- Input Designation is a Name or a Provisional Designation endif else begin type = 2 design = strtrim(design,2) digit = strmid(design,0,1) connect= strmid(design,4,1) ;--II.2.1-- Provisional Designation --------------------------------------------------- if isnumeric(digit) then begin ;--II.2.1/A-- Asteroid Provisional Designation Formatting if float(digit) le 2 then begin CASE connect OF ' ': name = strmid(design,0,4)+' '+$ strupcase( strmid(design,5,2) )+$ strmid( design,7, strlen(design)-7 )+$ string(replicate(32b,(desLength+1)-strlen(design))) '_': name = strmid(design,0,4)+' '+$ strupcase( strmid(design,5,2) )+$ strmid( design,7, strlen(design)-7 )+$ string(replicate(32b,(desLength+1)-strlen(design))) ELSE: name = strmid(design,0,4)+' '+$ strupcase( strmid(design,4,2) )+$ strmid( design,6, strlen(design)-6 )+$ string(replicate(32b,desLength-strlen(design))) ENDCASE ;--II.2.1/B-- Asteroid Survey Designation Formatting endif else begin name = strmid(design,0,4)+' '+$ strupcase( strmid(design,5,1) )+'-'+$ strupcase( strmid(design,7,1) )+$ string(replicate(32b,(desLength+1)-strlen(design))) endelse ;--II.2.2-- IAU Official Name --------------------------------------------------------- endif else begin name = strupcase( strmid(design,0,1))+$ strlowcase( strmid(design,1, strlen(design)) )+ $ string(replicate(32b,(desLength+1)-strlen(design))) symbol=[" ","-","'"] nbSymbol = n_elements(symbol) for kSym=0, nbSymbol-1 do begin split = strsplit( name, symbol(kSym), /EXTRACT, count=nbSplit ) if nbSplit ge 2 then $ name = strupcase( strmid(split(0),0,1))+$ strlowcase( strmid(split(0),1, strlen(split(0))) )+ symbol(kSym) +$ strupcase( strmid(split(1),0,1))+$ strlowcase( strmid(split(1),1, strlen(split(1)))) endfor endelse return, name endelse end ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- III -- Format for AstDyS (Pisa Univ.) -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; 2: begin ;--II.1-- Input Designation is a Number if valid_num(design) then begin type = 1 return, string(design,format=numFormat) ;--II.2-- Input Designation is a Name or a Provisional Designation endif else begin type = 2 design = strtrim(design,2) digit = strmid(design,0,1) connect= strmid(design,4,1) ;--II.2.1-- Provisional Designation --------------------------------------------------- if isnumeric(digit) then begin ;--II.2.1/A-- Asteroid Provisional Designation Formatting if float(digit) le 2 then begin CASE connect OF ' ': name = strmid(design,0,4)+$ strupcase( strmid(design,5,2) )+$ strmid( design,7, strlen(design)-7 ) '_': name = strmid(design,0,4)+$ strupcase( strmid(design,5,2) )+$ strmid( design,7, strlen(design)-7 ) ELSE: name = strmid(design,0,4)+$ strupcase( strmid(design,4,2) )+$ strmid( design,6, strlen(design)-6 ) ENDCASE ;--II.2.1/B-- Asteroid Survey Designation Formatting endif else begin name = strmid(design,0,4)+$ strupcase( strmid(design,5,1) )+'-'+$ strupcase( strmid(design,7,1) ) endelse if strlen(name) lt desLength then name+=replicate(32b,desLength-strlen(name)) ;--II.2.2-- IAU Official Name --------------------------------------------------------- endif else begin type = 1 return, string(designation(design),format=numFormat) endelse return, name endelse end ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- IV -- Format for WISE -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; 3: begin ;--II.1-- Input Designation is a Number if valid_num(design) then begin type = 1 return, string(design,format=numFormat) ;--II.2-- Input Designation is a Name or a Provisional Designation endif else begin type = 2 name = strTrim(design,2) if strlen(name) lt desLength then $ for k=0, desLength-strlen(name)-1 do name+=' ' return, name endelse end ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; ;--- TAG --- V -- Else -----------------------; ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; else: endcase end