정보
-
업무명 : 그라즈 HDF 형식인 Terra/MODIS 및 Aqua/MODIS 자료를 이용한 에어로졸 광학두께 가시화
-
작성자 : 이상호
-
작성일 : 2019-09-22
-
설 명 :
-
수정이력 :
내용
[특징]
-
HDF 결과를 이해하기 위해 가시화 도구가 필요하며 이 프로그램은 이러한 목적을 달성하기 위해 고안된 소프트웨어
[기능]
-
파일명의 날짜 (UTC)를 KST 변환
-
지상 관측소를 기준으로 시공간 일치
-
HDF 형식으로 가시화
[활용 자료]
-
자료 : Terra/MODIS 및 Aqua/MODIS의 에어로졸 광학두께
-
시간 해상도 : 하루 2회
-
공간 해상도 : 3 km
-
기간 : 2015년 01월 01일 - 2015년 12월 31일
[자료 처리 방안 및 활용 분석 기법]
-
[1 단계] 입력 자료에 대한 파일 읽기
-
[2 단계] 파일명 (MOD04_3K.A2013334.0255.006.2015071034636.hdf)에서 날짜 정보 추출 및 KST 변환
-
[3 단계] 배치 파일 (eos2dump, hdp dusmpsds)을 통해 위도, 경도, 에어로졸 광학두께 저장
-
[4 단계] 각 지상 관측소 (이어도/가거초/소청초 종합해양과학기지)를 기준으로 시공간 일치 및 자료 저장
-
[5 단계] 에어로졸 광학두께 및 지상 관측소 매핑
[사용법]
-
필요한 입력 자료를 동일 디렉터리 위치
-
소스 코드를 실행(csh Visualization_Using_HDF_Form_of_Terra_Aqua_MODIS_AOD.csh)
-
가시화 결과를 확인
[사용 OS]
-
Linux
[사용 언어]
-
GrADS
-
Fortran
-
ShellScript (csh)
소스 코드
[명세]
#!/bin/csh
#rm -f 21.dat 22.dat 23.dat
#rm -f FIG/*
#set fn = `ls DATA/MOD04_3K/MOD04_3K*`
set fn = `ls DATA/MYD04_3K/MYD04_3K*`
foreach fn1 ($fn)
#======================================================================
# Data handling
#
# "year", "month", "day", "hour", "min", "sec", "Julian_Day"
#=======================================================================
set name = `echo $fn1:t | awk -F'[.]' '{print $1}' `
set year = `echo $fn1:t | awk -F'[.]' '{print $2}' | cut -c 2-5`
set jd = `echo $fn1:t | awk -F'[.]' '{print $2}' | cut -c 6-8`
set hour = `echo $fn1:t | awk -F'[.]' '{print $3}' | cut -c 1-2`
set min = `echo $fn1:t | awk -F'[.]' '{print $3}' | cut -c 3-4`
set month2 = ( 01 02 03 04 05 06 07 08 09 10 11 12 )
set day2 = ( 31 28 31 30 31 30 31 31 30 31 30 31 )
set day3 = ( 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 )
if (( ($year % 4 == 0) && ($year % 100 != 0) ) || $year % 400 == 0 ) set day2[2] = 29
set jd2 = 1
foreach month ($month2)
foreach day ( $day3[1-$day2[$month]] )
set JD2 = `printf "%03d" $jd2`
if( $jd == $JD2 ) goto 10
@ jd2 ++
end
end
10:
@ hour = $hour + 9 # UTC --> KST
if ($hour > 24) then
@ day = $day + 1
@ hour = $hour - 24
endif
echo $fn1
printf "%s %04d %03d %02d %02d %02d %02d \n" $name $year $jd $month $day $hour $min
hdp dumpsds -h $fn1 > HEAD
./eos2dump -c1 $fn1 > read_lat2.dat
./eos2dump -c2 $fn1 > read_lon2.dat
sed 's/,/ /g' read_lat2.dat > read_lat.dat
sed 's/,/ /g' read_lon2.dat > read_lon.dat
hdp dumpsds -d -i 12 -o var.dat -x $fn1
#==================================
# Mean by 1, 4, 9
#===================================
pgf90 Average_Over_Terra_Aqua_MODIS_Pixels_Relative_To_Ground_Station.f90 ; a.out
#==================================
# plot
#===================================
set fn3 = `printf "%04d.%02d.%02d %02d:%02d" $year $month $day $hour $min`
cat >! 2.exec << EOF
reinit
open INPUT_GrADS/Map.ctl
enable print 2.gx
set font 5
set vpage 0 8.5 0 11
set parea 0 8.5 2.0 10.0
set mpdraw off
set xlopts 1 6 0.18
set ylopts 1 6 0.18
set lat 31. 45.
set lon 121. 135.
set cmin 9999
set cint 2
set xlint 2
set xlab %3.0f\`3.\`n\`5E\`n
set ylint 2
set ylab %2.0f\`3.\`n\`5N
set grid on
set grads off
set display color white
d t
draw title Aerosol 3km [$fn3 KST]
*set strsiz 0.15 0.15
*draw string 3.5 1.4 Surface Solar Radiation [Wm\`a-2\`n]
run INPUT_GrADS/color.gs data.dat 1 2 3 3
run INPUT_GrADS/gbar.gs 0 4.25 1.0 0.28 1.4 8.0 1.0 17 116 0 5 0 5 0.5
*run GrADS/gbar.gs 1 8.0 6.0 0.25 1.0 1.0 8.0 16 116 0 900 0 900 50
run INPUT_GrADS/point_color.gs INPUT_GrADS/point.dat 1 2 3 3
set rgb 16 0 0 0
* draw shp INPUT_GrADS/Map/NOAA/gshhg-shp-2.3.4/GSHHS_shp/f/GSHHS_f_L1.shp
draw shp INPUT_GrADS/Map/Global_Administrative_Areas/V2.8_map/gadm28_adm0.shp
* draw shp INPUT_GrADS/Map/Global_Administrative_Areas/V2.8_map/gadm28_adm1.shp
* draw shp INPUT_GrADS/Map/Global_Administrative_Areas/V2.8_map/gadm28_adm2.shp
print
disable print
!gxps -c -i 2.gx -o 2.ps
quit
EOF
grads -bpc 'exec 2.exec'
convert 2.ps 2.gif
#display 2.gif
#==================================
# OUTPUT
#===================================
set fn4 = `printf "%s_%04d_%02d%02d_%02d%02d" $name $year $month $day $hour $min`
echo $fn4
mv -f 2.gif FIG/${fn4}.gif
set num = 21
while ($num <= 23)
echo $fn4 >> ${num}.dat
cat fort.${num} >> ${num}.dat
echo >> ${num}.dat
@ num ++
end
# printf "%s %04d %03d %02d %02d %02d %02d \n" $name $year $jd $month $day $hour $min
end # fn1
mv -f 21.dat ${name}_Ieodo.dat
mv -f 22.dat ${name}_Gageocho.dat
mv -f 23.dat ${name}_Socheongcho.dat
rm -f 2.exec 2.gx 2.ps data.dat fort.* read_* var.dat HEAD
[GitHub Gist]
결과
-
2015년 10월 04일 Terra/MODIS 자료를 이용한 에어로졸광학두께 가시화
-
2015년 07월 14일 Terra/MODIS 자료를 이용한 에어로졸광학두께 가시화
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > GrADS' 카테고리의 다른 글
[GrADS] 오프라인 리눅스 (Linux) 환경에서 그라즈 (GrADS) 설치 및 공용 라이브러리 (Library) 설정 (0) | 2020.07.05 |
---|---|
[GrADS] 그라즈 컬러 테이블 및 팔레트 소개 (0) | 2020.04.07 |
[GrADS, ShellScript] 그라즈 NetCDF 형식인 NOAA 월평균 해수면 온도 자료를 이용한 가시화 (0) | 2019.09.07 |
[GrADS, ShellScript] 그라즈 Grib 형식인 ECMWF 모델 결과를 이용한 가시화 (0) | 2019.09.07 |
[GrADS, ShellScript] 그라즈 아스키 (ASCII) 형식인 복사전달모델 (RTM) 결과를 이용한 가시화 (0) | 2019.09.03 |
최근댓글