제 15 장 날짜와 시간 2/2

29
Computational Astronomy 15 15 제제제 제제 제제제 제제 2/2 2/2 전전전전전 2 2007. 전전

Upload: field

Post on 23-Jan-2016

76 views

Category:

Documents


0 download

DESCRIPTION

제 15 장 날짜와 시간 2/2. 전산천문학 2. 2007. 가을. Mission. Julian Day 는 연월일의 연산에는 필요하지만 , 실제 자료를 가시화하기에는 연월일시분초가 적합하다 . Julian day 를 이용한 연산을 최종적으로 연월일 시분초의 출력값으로 변환하여 그래픽을 완성할 수 있다. 다루어야 할 문제. Julian Day 를 연월일시분초로 표시하기 위해서 , CALDAT 프로시저를 사용 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 제  15  장  날짜와 시간  2/2

Computational Astronomy

제 제 15 15 장 날짜와 시간 장 날짜와 시간 2/22/2

전산천문학 2

2007. 가을

Page 2: 제  15  장  날짜와 시간  2/2

Computational Astronomy

MissionMission

• Julian Day 는 연월일의 연산에는 필요하지만 , 실제 자료를 가시화하기에는 연월일시분초가 적합하다 .

• Julian day 를 이용한 연산을 최종적으로 연월일 시분초의 출력값으로 변환하여 그래픽을 완성할 수 있다 .

Page 3: 제  15  장  날짜와 시간  2/2

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()’

Page 4: 제  15  장  날짜와 시간  2/2

Computational Astronomy

날짜 코드 날짜 코드 ‘‘ (C())’(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 로 표시할지 등의 추가 옵션도 있다 .

Page 5: 제  15  장  날짜와 시간  2/2

Computational Astronomy

날짜 코드 세부옵션날짜 코드 세부옵션단위 코드 의미 출력 예

연 CYI 연도를 숫자로 표시 2007

월 CMOACMoACmoACMOI

월을 문자로 표시 ( 모두 대문자 )월을 문자로 표시 ( 첫문자만 대문자 )

월을 문자로 표시 ( 모두 소문자 )월을 숫자로 표시

AUGAugAug

8

일 CDI 일을 숫자로 표시 31

시 CHIChI

시를 숫자로 표시 (24 시 체계 )시를 숫자로 표시 (12 시 체계 )

2311

오전오후 CAPACApACapA

AM/PM 을 모두 대문자로AmPmampm

AMAmam

분 CMI 분을 숫자로 표시 59

초 CSI CSF

초를 정수형으로 표시초를 실수형으로 표시

2323.5

요일 CDWACDwACdwA

요일을 모두 대문자로 표시요일을 맨 앞자만 대문자로

요일을 모두 소문자로

SUNSunsun

Page 6: 제  15  장  날짜와 시간  2/2

Computational Astronomy

trainingtraining

• Julian day 지정 및 연산 day=julday(11,6,2007,14,20,30)’

• Tue Nov 6 15:40:00 2007 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 분 ?

• 200711061540 ?

Page 7: 제  15  장  날짜와 시간  2/2

Computational Astronomy

연속되는 시간 생성연속되는 시간 생성

TIMEGEN()

Page 8: 제  15  장  날짜와 시간  2/2

Computational Astronomy

TIMEGEN 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

Page 9: 제  15  장  날짜와 시간  2/2

Computational Astronomy

trainingtraining

• 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 년 각 달의 날짜 수를 어떻게 계산할까요 ?

Page 10: 제  15  장  날짜와 시간  2/2

Computational Astronomy

현재 시간현재 시간

SYSTIME()

Page 11: 제  15  장  날짜와 시간  2/2

Computational Astronomy

현재 시간현재 시간

• 현재의 시각을 입력받아 프로그래밍을 수행하는 경우

• 시각으로부터 프로그램 실행 시간을 계산해야 할 경우

• 현재시각으로부터 연월일시분초요일 등을 저장하여 프로그래밍 해야 하는경우

Page 12: 제  15  장  날짜와 시간  2/2

Computational Astronomy

TrainingTraining

• 현재 시각 표시 print, systime() 또는 systime(0)

• 초단위 계산을 위한 현재 시각 표시 print, systime(1) [1970 년 1 월 1 일 이후 경과한 시간을

초단위로 보여 줌 ]

• 쥴리언데이로 현재 시각 표시 print, systime(/julian) 현재 시각으로 2007 년에서 정확히 얼마나 지났을까 ?

• 세계표준시로 현재 시각 표시 print, systime(/utc) print,systime(),”KST “, systime(/utc), “utc”

Page 13: 제  15  장  날짜와 시간  2/2

Computational Astronomy

trainingtraining

• [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)

Page 14: 제  15  장  날짜와 시간  2/2

Computational Astronomy

시간 눈금의 그래프 그리기시간 눈금의 그래프 그리기

LABEL_DATE()

Page 15: 제  15  장  날짜와 시간  2/2

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’

Page 16: 제  15  장  날짜와 시간  2/2

Computational Astronomy

Label_date()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 자리수

% 를 출력할 때

200705

Aug, Sep11,1230,31

Wed, SatAM, PM

11,2330, 59

59%

Months

Days_of_WeekAM_PM

Page 17: 제  15  장  날짜와 시간  2/2

Computational Astronomy

TrainingTraining

• Label date 의 암호 조합 day=timegen(5, start=julday(11,7,2007)) humidity=randomu(seed,5)*50 +40 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’)

Page 18: 제  15  장  날짜와 시간  2/2

Computational Astronomy

BackgroundsBackgrounds

Solar & Geomagnetic indices

( 태양 지수와 지자기 지수 )

Page 19: 제  15  장  날짜와 시간  2/2

Computational Astronomy

태양 활동태양 활동

• 태양 흑점 주기 (Solar Cycles) 태양은 11 년마다 활동

극대기와 극소기를 거친 태양의 흑점 갯수는 이러한

활동의 극대기와 극소기 변화를 반영해주는 지수이며 , 태양 흑점수가 많아질 수록 태양의 활동은 커진다 .

태양 흑점은 격렬한 폭발현상인 태양 플레어를 일으키며 , 이에 따라 태양계에 영항을 미친다 .

플레어에 의한 에너지 방출은 지구에서 가장 큰 지진의 수백만배 규모에 달한다 .

Page 20: 제  15  장  날짜와 시간  2/2

Computational Astronomy

태양에서 지구로태양에서 지구로

Page 21: 제  15  장  날짜와 시간  2/2

Computational Astronomy

태양 흑점 주기태양 흑점 주기

Page 22: 제  15  장  날짜와 시간  2/2

Computational Astronomy

태양 활동 인자들태양 활동 인자들

Page 23: 제  15  장  날짜와 시간  2/2

Computational Astronomy

시계열 자료 다루기시계열 자료 다루기

1991 년부터 현재까지의 월별 흑점 및 태양 전파 관측 자료를 이용한 흑점

주기 살펴보기

Page 24: 제  15  장  날짜와 시간  2/2

Computational Astronomy

MissionMission

• 최근 월별 태양 흑점 지수를 날짜별로 표현하여 , 흑점 지수의 시계열 변화에 대하여 알아본다 .

• 월별 및 일별 관측 자료를 이용하여 , 날짜별로 어떤 주기들이 있는지 알아 본다 .

Page 25: 제  15  장  날짜와 시간  2/2

Computational Astronomy

MissionMission

• Solar_Recentindices.txt 1991 년부터 최근까지의

태양 흑점 및 10.7 cm 전파 플럭스 양을 모아놓은 자료 , 월별로 요약되어 있다 .

• 2006_DSD.txt 2006 년 일별 태양

자료를 모아놓은 자료 일별 10.7 cm

플럭스량과 흑점 면적 등이 정리되어 있다 .

Page 26: 제  15  장  날짜와 시간  2/2

Computational Astronomy

태양 흑점 주기태양 흑점 주기

Page 27: 제  15  장  날짜와 시간  2/2

Computational Astronomy

10.7 cm 10.7 cm 플럭스량플럭스량

Page 28: 제  15  장  날짜와 시간  2/2

Computational Astronomy

Ap Ap 지수지수

Page 29: 제  15  장  날짜와 시간  2/2

Computational Astronomy

trainingtraining

• 실습 자료를 이용하여 , 월별 , 일별 태양 및 지자기 지수의 변화를 살펴보자 .