Computational Astronomy 제 15 장 날짜와 시간 2/2 전산천문학 가을
Computational Astronomy Mission Julian Day 는 연월일의 연산에는 필요하지만, 실제 자료를 가시화하기에는 연월일시분초가 적합하다. Julian day 를 이용한 연산을 최종적으로 연월 일 시분초의 출력값으로 변환하여 그래픽을 완성할 수 있다.
Computational Astronomy 다루어야 할 문제 Julian Day 를 연월일시분초로 표시하기 위해서, CALDAT 프로시저를 사용 CALDAT procedure 를 이용하여, 연, 월, 일, 시, 분, 초 개별적인 변수로 저장 저장된 변수를 활용하여, 필요한 문자열 혹은 숫자로 변환하여 활용 한다. 월을 Jan, Feb, Mar, … 로 표시하려면 ? IDL 에서 CALDAT 프로시저를 사용하지 않고, Julian day 를 연월일 시분초 로 바꿀 수 있는 방법은 ? IDL 의 출력포맷 (FORMAT 키워드 ) 에는 Julian Day 를 연월일시분 초로 표시하는 포맷코드 정의 IDL> print, 31, format=‘(I)’ ; 정수 IDL> print, 31, format=‘(F)’ ; 실수 IDL> print, 31, format=‘(B)’ ; 2 진수 IDL> print, 31, format=‘(A)’ ; 문자열 Julian Day 를 일상생활의 날짜로 변환해서 보여주는 포맷은 ? ‘C()’
Computational Astronomy 날짜 코드 ‘(C())’ IDL> day = julday (11, 6, 2007, 15, 20, 20) IDL> print, day, format=‘(D)’ IDL> print, day, format=‘(C())’ ; 디폴트 출력 C() 에서 괄호안의 세부코드의 규칙은 ? 날짜와 관련있는 옵션이라 C 로 시작 그 다음 Y(year), MO(month), D(day), H(Hour), AP(am/pm), M(Minute), S(Second), DW(Day of week) 그 다음 위에서 정의한 연월시분초 등의 형식 지정 : I ( 정수형 ), F( 실수 형 ), A ( 문자형 ) 이 그 다음에 옴 대소문자의 구별이 있으므로, 다른 IDL 키워드의 규칙과 다른 부분이 있다. 추가로, 08 로 표시할지 8 로 표시할지 등의 추가 옵션도 있다.
Computational Astronomy 날짜 코드 세부옵션 단위코드의미출력 예 연 CYI 연도를 숫자로 표시 2007 월 CMOA CMoA CmoA CMOI 월을 문자로 표시 ( 모두 대문자 ) 월을 문자로 표시 ( 첫문자만 대문자 ) 월을 문자로 표시 ( 모두 소문자 ) 월을 숫자로 표시 AUG Aug 8 일 CDI 일을 숫자로 표시 31 시 CHI ChI 시를 숫자로 표시 (24 시 체계 ) 시를 숫자로 표시 (12 시 체계 ) 오전오후 CAPA CApA CapA AM/PM 을 모두 대문자로 AmPm ampm AM Am am 분 CMI 분을 숫자로 표시 59 초 CSI CSF 초를 정수형으로 표시 초를 실수형으로 표시 요일 CDWA CDwA CdwA 요일을 모두 대문자로 표시 요일을 맨 앞자만 대문자로 요일을 모두 소문자로 SUN Sun sun
Computational Astronomy training Julian day 지정 및 연산 day=julday(11,6,2007,14,20,30)’ Tue Nov 6 15:40: print,day,format=‘(C())’ 2007/11/6 print, day, format=‘(C(CYI,”/”,CMOI,”/”,CDI)) ‘ 2007/11/06 print, day, format=‘(C(CYI,”/”,CMOI02,”/”,CDI02))’ 2007 년 11 월 6 일 15 시 40 분 ? ?
Computational Astronomy 연속되는 시간 생성 TIMEGEN()
Computational Astronomy TIMEGEN 문법 Results=timegen([D1,….D8|,final=value][,start= value][,step_size=value] [,units=string]) 결과는 연속되는 쥴리언데이들의 배열 D1 : 몇 개의 날짜를 생성할지 ? start, final : 시작과 끝날 ( 쥴리언데이 ) 생성되는 날짜 수열의 간격 ( 뒤의 units 에 따라 바 뀜 디폴트는 날짜 ) Units=“years” [“months”, “days”, “hours”, ….] 기타 키워드 : days, months, years, hours, minutes, seconds
Computational Astronomy training 2005 년 8 월 15 일부터 10 일을 생성 days=timegen(10,start=julday(8,15,2005)) Print, days,format=‘(C())’ 2004 년 1 월 1 일부터 한달 간격으로 12 개의 날짜를 생성 days=timegen(12, start=julday(1,1,2004),units=‘months’) print, days, format=‘(C())’ 2004 년 1 월 1 일부터 2005 년 1 월 1 일까지 3 개월 간격으로 날짜 생성 days=timegen(start=julday(1,1,2004),final=julday(1,1,2005), step_size=3, units=‘months’) print, days, format=‘(C())’ 2004 년 1 월 1 일부터 3 월 15 일까지 매 1 일 15 일에 해당하는 날짜 생성 days=timegen(start=julday(1,1,2004),final=julday(3,15,2004), days=[1,15] 2004 년 각 달의 날짜 수를 어떻게 계산할까요 ?
Computational Astronomy 현재 시간 SYSTIME()
Computational Astronomy 현재 시간 현재의 시각을 입력받아 프로그래밍을 수행 하는 경우 시각으로부터 프로그램 실행 시간을 계산해 야 할 경우 현재시각으로부터 연월일시분초요일 등을 저 장하여 프로그래밍 해야 하는경우
Computational Astronomy Training 현재 시각 표시 print, systime() 또는 systime(0) 초단위 계산을 위한 현재 시각 표시 print, systime(1) [1970 년 1 월 1 일 이후 경과한 시간을 초단 위로 보여 줌 ] 쥴리언데이로 현재 시각 표시 print, systime(/julian) 현재 시각으로 2007 년에서 정확히 얼마나 지났을까 ? 세계표준시로 현재 시각 표시 print, systime(/utc) print,systime(),”KST “, systime(/utc), “utc”
Computational Astronomy training [20,10] 이라는 일차원배열을 iplot 으로 그릴 때 와 plot 으로 그릴 때 각각 얼마나 걸리는가 ? start=systime(1) & iplot, [20,10] & print, systime(1)-start start=systime(1) & plot, [20,10] & print, systime(1)-start 현재의 연월일 시분초를 각각 다른 변수에 나 누어 담으려면 ? now=systime(/julian) caldat,now,mon,day,year,hr,min,sec print,year,mon,day,hr,min,sec ymdhms=bin_date(now)
Computational Astronomy 시간 눈금의 그래프 그리기 LABEL_DATE()
Computational Astronomy 시간 눈금의 그래프 시계열 (Time series) 자료를 다룰 때 시간의 연산 및 범위를 지정할 때 줄리언 데이를 쓰면 편하다. 그러나, 그래프 축의 눈금을 시간 눈금으로 그려야 한다. Label_date() 키워드 시간 축의 데이터가 Julian day 일 때, 이 숫자의 출력형태를 우리가 흔 히 쓰는 형식의 시각으로 표현하고자 할 때 쓰는 키워드 day=timegen(5,start=julday(8,15,2005)) humidity=randomu(seed,5)*50+40 Window,0, xs=800, ys=400 plot,day,humidity Window,1,xs=800,ys=400 Plot,day,humidity,xtickformat=‘label_date’
Computational Astronomy Label_date() 함수 우리가 원하는 포맷으로 변경하려면 ? dummy=label_date(date_format= 암호문자열 ) 그 다음 xtickformat=‘label_date’ 암호문자열 Code 의미예관련키워드 %Y %Z %M % N %D %W %A %H %I %S % 연 4 자리수 연 끝 2 자리 월 문자 월 2 자리수 일 2 자리수 요일 AM/PM(12 시간제 ) 시간 2 자리 (24 시간제 ) 분 2 자리수 초 2 자리수 % 를 출력할 때 Aug, Sep 11,12 30,31 Wed, Sat AM, PM 11,23 30, % Months Days_of_Week AM_PM
Computational Astronomy Training Label date 의 암호 조합 day=timegen(5, start=julday(11,7,2007)) humidity=randomu(seed,5)* dummy=label_date(date_format=‘%M %D’) plot, day, humidity, xtickformat=‘label_date’ dummy=label_date(date_format=‘%Y %M %D’) plot, day, humidity, xtickformat=‘label_date’ dummy=label_date(date_format=‘%Y!C%M %D’)
Computational Astronomy Backgrounds Solar & Geomagnetic indices ( 태양 지수와 지자기 지수 )
Computational Astronomy 태양 활동 태양 흑점 주기 (Solar Cycles) 태양은 11 년마다 활동 극대기와 극소기를 거친 태양의 흑점 갯수는 이러한 활동 의 극대기와 극소기 변화를 반영 해주는 지수이며, 태양 흑점수가 많아질 수록 태양의 활동은 커진 다. 태양 흑점은 격렬한 폭발현상인 태양 플레어를 일으키며, 이에 따 라 태양계에 영항을 미친다. 플레어에 의한 에너지 방출은 지 구에서 가장 큰 지진의 수백만배 규모에 달한다.
Computational Astronomy 태양에서 지구로
Computational Astronomy 태양 흑점 주기
Computational Astronomy 태양 활동 인자들
Computational Astronomy 시계열 자료 다루기 1991 년부터 현재까지의 월별 흑점 및 태 양 전파 관측 자료를 이용한 흑점 주기 살펴보기
Computational Astronomy Mission 최근 월별 태양 흑점 지수를 날짜별로 표현하 여, 흑점 지수의 시계열 변화에 대하여 알아본 다. 월별 및 일별 관측 자료를 이용하여, 날짜별 로 어떤 주기들이 있는지 알아 본다.
Computational Astronomy Mission Solar_Recentindices.txt 1991 년부터 최근까지의 태양 흑점 및 10.7 cm 전 파 플럭스 양을 모아놓은 자료, 월별로 요약되어 있다. 2006_DSD.txt 2006 년 일별 태양 자료 를 모아놓은 자료 일별 10.7 cm 플럭스량 과 흑점 면적 등이 정리 되어 있다.
Computational Astronomy 태양 흑점 주기
Computational Astronomy 10.7 cm 플럭스량
Computational Astronomy Ap 지수
Computational Astronomy training 실습 자료를 이용하여, 월별, 일별 태양 및 지 자기 지수의 변화를 살펴보자.