1 / 29

제 15 장 날짜와 시간 2/2

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

field
Download Presentation

제 15 장 날짜와 시간 2/2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 제 15 장 날짜와 시간 2/2 전산천문학 2 2007. 가을

  2. Mission • Julian Day는 연월일의 연산에는 필요하지만, 실제 자료를 가시화하기에는 연월일시분초가 적합하다. • Julian day를 이용한 연산을 최종적으로 연월일 시분초의 출력값으로 변환하여 그래픽을 완성할 수 있다.

  3. 다루어야 할 문제 • 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()’

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

  5. 날짜 코드 세부옵션

  6. training • 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 ?

  7. 연속되는 시간 생성 TIMEGEN()

  8. 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

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

  10. 현재 시간 SYSTIME()

  11. 현재 시간 • 현재의 시각을 입력받아 프로그래밍을 수행하는 경우 • 시각으로부터 프로그램 실행 시간을 계산해야 할 경우 • 현재시각으로부터 연월일시분초요일 등을 저장하여 프로그래밍 해야 하는경우

  12. Training • 현재 시각 표시 • print, systime() 또는 systime(0) • 초단위 계산을 위한 현재 시각 표시 • print, systime(1) [1970년 1월 1일 이후 경과한 시간을 초단위로 보여 줌] • 쥴리언데이로 현재 시각 표시 • print, systime(/julian) • 현재 시각으로 2007년에서 정확히 얼마나 지났을까? • 세계표준시로 현재 시각 표시 • print, systime(/utc) • print,systime(),”KST “, systime(/utc), “utc”

  13. 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)

  14. 시간 눈금의 그래프 그리기 LABEL_DATE()

  15. 시간 눈금의 그래프 • 시계열 (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’

  16. Label_date()함수 • 우리가 원하는 포맷으로 변경하려면? • dummy=label_date(date_format=암호문자열) • 그 다음 xtickformat=‘label_date’ • 암호문자열

  17. Training • 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’)

  18. Backgrounds Solar & Geomagnetic indices (태양 지수와 지자기 지수)

  19. 태양 활동 • 태양 흑점 주기 (Solar Cycles) • 태양은 11년마다 활동 극대기와 극소기를 거친 • 태양의 흑점 갯수는 이러한 활동의 극대기와 극소기 변화를 반영해주는 지수이며, 태양 흑점수가 많아질 수록 태양의 활동은 커진다. • 태양 흑점은 격렬한 폭발현상인 태양 플레어를 일으키며, 이에 따라 태양계에 영항을 미친다. • 플레어에 의한 에너지 방출은 지구에서 가장 큰 지진의 수백만배 규모에 달한다.

  20. 태양에서 지구로

  21. 태양 흑점 주기

  22. 태양 활동 인자들

  23. 시계열 자료 다루기 1991년부터 현재까지의 월별 흑점 및 태양 전파 관측 자료를 이용한 흑점 주기 살펴보기

  24. Mission • 최근 월별 태양 흑점 지수를 날짜별로 표현하여, 흑점 지수의 시계열 변화에 대하여 알아본다. • 월별 및 일별 관측 자료를 이용하여, 날짜별로 어떤 주기들이 있는지 알아 본다.

  25. Mission • Solar_Recentindices.txt • 1991년부터 최근까지의 태양 흑점 및 10.7 cm 전파 플럭스 양을 모아놓은 자료, 월별로 요약되어 있다. • 2006_DSD.txt • 2006년 일별 태양 자료를 모아놓은 자료 • 일별 10.7 cm 플럭스량과 흑점 면적 등이 정리되어 있다.

  26. 태양 흑점 주기

  27. 10.7 cm 플럭스량

  28. Ap 지수

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

More Related