[Fortran] 포트란 Himawari-8/AHI (2 km)을 CERES (20 km)로 공간 해상도 일치

 정보

  • 업무명    : Himawari-8/AHI (2 km)을 CERES (20 km)로 공간 해상도 일치

  • 작성자    : 이상호

  • 작성일    : 2019-08-28

  • 설   명    :

  • 수정이력 :

 

 

 내용

[특징]

  • 정지궤도와 극 궤도 위성에서의 공간 일치를 위한 소프트웨어가 필요하며 이 프로그램은 이러한 목적을 이러한 목적을 달성하기 위해 고안된 소프트웨어

 

[기능]

  • 아스키 형태인 정지궤도 기상위성인 Himawari-8/AHI 자료 읽기

  • 아스키 형태인 극궤도 기상위성인 Terra/CERES 자료 읽기

  • Terra/CERES의 위경도를 기준으로 10 km 반경 내의 Himawari-8/AHI 자료에 대한 평균 수행

 

[사용법]

  • 입력 자료 (Himawari-8/AHI와 Terra/CERES)를 동일 디렉터리에 저장

  • 소스코드를 컴파일 (pgf90 Matching_Spatial_Resolution_AHI_And_CERES_Satellite_Data.f90)

  • 소스코드를 실행 (./a.out)

 

[사용 OS]

  • Linux

 

[사용 언어]

  • Fortran

 

 소스 코드

[전체]

      real, parameter :: ceres_dim =  500000  !  CERES 20km x 20km
      real, parameter :: hima_dim  =  30250000  ! HAMAWARI-8/AHI 2km x 2km
      integer, parameter :: cols   =  6
   
      real, dimension(5) :: time
      real, dimension(ceres_dim, 8) :: ceres
      real, dimension(hima_dim, 11) :: hima
      integer :: i, j, k
      real :: dist, dist_min, w, wz, idw, near
      real :: lat, lon
      real, dimension(12) :: mean, wa, cc

      open(10, file='0125~0134.dat')
!      open(11, file='201508180130_interp.RSR')
      open(11, file='201508180130.dat')
      open(12, file='hima_ceres_25-34.dat')
      open(13, file='../TOTAL/hima_ceres_25-34.dat')

      do i=1, hima_dim               
         read(11, *) hima(i, 1:cols)
      enddo
   
      do i=1, ceres_dim                 
         read(10,*) time(1:5), lon, lat, ceres(i, 1:5)
         if( ceres(i,1) == -999.0 .or. ceres(i,2) == -999.0 .or.  &
             ceres(i,3) == -999.0 .or. ceres(i,4) == -999.0 .or.  &
             ceres(i,5) == -999.0 ) cycle

         do k=3, cols
            wa(k)=0  
            cc(k)=0
         enddo

         do j=1, hima_dim
            if( hima(j,1) == -999.0 .or. hima(j,2) == -999.0 ) cycle
            dist = sqrt( ((hima(j,1)-lat)**2) + ((hima(j,2)-lon)**2) )

            do k=3, cols
               if( hima(j,k) > 0.0 .and. hima(j,k) /= -999.0 .and. dist <= 0.1 )  then
                  wa(k) = wa(k) + hima(j,k)
                  cc(k) = cc(k) + 1
               endif
            enddo  ! k
         enddo  !  j

         do k=3, cols
            mean(k) = wa(k)/real(cc(k))
         enddo

         if(cc(3)/=0 .and. cc(4)/=0 ) then
            write(12,'(6f15.5, 4f15.5, 2f15.5)')  &
                  lon, lat, ceres(i,1:3), ceres(i,2)/ceres(i,3), &
                  mean(3:cols), ceres(i,4:5)
            write(13,'(6f15.5, 4f15.5, 2f15.5)')  &
                  lon, lat, ceres(i,1:3), ceres(i,2)/ceres(i,3), &
                  mean(3:cols), ceres(i,4:5)
         endif

      enddo  ! i
      
      end

 

[GitHub GIST]

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com