본문 바로가기
자료분석 및 코딩/기타 해양, 기상 정보 및 분석툴

[기타 - CDO] 2. NetCDF 날짜 및 시간 자르기 seltimestep

by 아다콘다 2023. 8. 18.

 CDO의 옵션 중 첫번째로 소개할 옵션은 특정 기간을 자르는 seltimestep 이다. 옵션명 그대로 select timestep, 전체 파일 중 특정 timestep을 선택하여 새 파일로 만드는 기능이다.

 

1. 활용목적 및 활용처

 서로 다른 NetCDF 파일을 합치거나 데이터 크기 또는 활용처에 따라 기간을 자를 때 사용한다. 예를들어 서로 다른 모델을 합쳐서 하나의 파일로 병합할 때, 두 nc파일은 차원이 같아야한다. 따라서 time dimension의 길이가 같아야하는데 두 데이터의 time 길이가 다를 때, 동일한 길이로 맞추기 위해 사용한다.

 예를 들어, 위와 같은 해양모델(hycom, 좌측 그림)과 파랑모델(cmems, 우측 그림)을 병합한다고 가정해보겠다. 두 모델의 시간간격은 3시간으로 동일하지만 격자가 다르고, 기간이 다르다. 하이컴은 3시간씩 8 timestep 1일 데이터이며, CMEMS는 3시간씩 65 timestep, 8일 데이터다. 이 두 데이터를 합칠 경우 CMEMS의 첫번째부터 8 timestep까지만 병합되기 때문에 시간정보가 꼬이게된다. 따라서 이런 경우 CMEMS에서 하이컴과 동일한 기간을 찾아 잘라낸 다음 합쳐줘야 한다. 

2. seltimestep 사용법

 기본 사용법은 아래 코드블럭과 같이 " cdo seltimestep,시작/끝 input output " 으로 사용한다.

#cdo seltimestep,시작시간/끝시간 원본파일 새파일#
cdo seltimestep,s_timestep/e_timestep input.nc output.nc

 이때, 하이컴과 동일한 시간대의 CMEMS timestep을 찾아줘야하는데, 하이컴은 2014년 6월 15일 0시부터 3시간씩 21시까지의 데이터다. 이와 동일한 기간의 CMEMS 데이터는 아래 그림과 같이 33번째 데이터부터 40번째 데이터이다. 따라서 시작 타임스텝은 33, 끝 타임스텝은 40이 된다. 또한, CMEMS 원본의 파일명 CMEMS_wav_20140615.nc이며, 결과물은 CMEMS_output_20140615.nc로 정하였다. 

 

그럼 전체코드는 아래와 같으며, 이미지처럼 CDO과정이 수행되어 CMEMS_output_20140615.nc가 생성된다.

cdo seltimestep,33/41 CMEMS_wav_20140615.nc CMEMS_output_20140615.nc

 

 그럼 아래 ncview 화면처럼 2014년 6월 15일의 1일치 데이터만 추출된 것을 확인할 수 있다. 이제 하이컴과 데이터를 병합할 때, 시간차원에서는 아무 문제가 발생하지 않는다.

 하지만 nc파일을 병합하기 위해서는 공간 차원(x, y 격자 해상도)도 맞춰줘야하며, 시간 간격(시간해상도)도 다른 경우가 있다. 두 방법다 차차 소개해보겠지만 다음에는 시간 간격을 조절하는 옵션을 먼저 설명해보도록 하겠다.

반응형