으앙망!

으앙 망했어!

공부/ECMWF

[ECMWF] Seasonal forecasts - Subdaily and daily (CFSv2): 기본 내용

euangmang 2025. 3. 3. 15:17

ECMWF에서는 계절예측 모델 데이터도 제공하고 있다.

데이터 다운로드는 상당히 쉬운 편이다.

기본적으로 GRIB 형식으로 제공하며, NetCDF 형식은 아직 완전치 않은 듯하다.

따라서 나는 항상 GRIB 형식으로 다운로드 받고 있으며,

Python의 pygrib과 xarray 라이브러리를 통해 NetCDF 형식으로 직접 변환하여 사용한다.

 

제공하고 있는 계절예측 모델 데이터는 각 국가/기관에서 생산하는 모델 적분 결과를 취합한 것이다.

내가 받고자 하는 데이터는 미국의 NCEP에서 운용하고 있는 CFSv2이다.

CFSv2는 NCEI 서버에서 직접 내려받을 수 있긴 하지만 요즘 서버 상태가 오락가락 해서 분통이 터진다.

그래서 ECMWF에서 좀 더 안정적으로 받을 수 있을 것이라 판단하여 다운로드 시도중이다.

본 글은 ECMWF에서 CFSv2 데이터를 다운로드 받는 데 있어 특이사항 혹은 주의점을 기록하기 위하는 데 의의가 있다.


1. 데이터셋 다운로드

 

ECMWF는 다운로드 받을 수 있는 코드를 제공한다.

나는 보통 이 코드를 내가 원하는 형태로 편집한 뒤 실행해 다운로드 받는다.

...
vlist = [ "10m_u_component_of_wind",
          "10m_v_component_of_wind",
          "2m_dewpoint_temperature",
          "2m_temperature",
          "total_precipitation" ]

dataset = "seasonal-original-single-levels"
request = { 
            "originating_centre": "ncep",
                        "system": "2",
                      "variable": vlist,
                          "year": [ "2025" ],
                         "month": [ "01" ],
                           "day": [ "21" ],
                 "leadtime_hour": [ "6", "12"],
                   "data_format": "grib"
          }
...

 

위 코드는 10m 동서/남북 바람, 2m 이슬점 온도, 2m 기온, 강수량, 총 5개의 변수를 받는 코드의 일부이다.

year, month, day에는 Initialization 시각을 적어준다.

leadtie_hour에는 내가 원하는 예측 시간을 적어준다.

위의 코드를 해석하면 다음과 같다.

- 2025-01-21 Initialization

- forecast time 6, 12 hour

 

참고로, 내가 받고자 하는 CFSv2 데이터는 매일 00, 06, 12, 18 UTC에 Initialization이 된다.

그리고 daily time scale의 경우 6시간 간격으로 제공된다.

즉, 매 Initial condition마다 6-hourly 데이터인 것이다.

출처: 나

 

이를 간단히 그림으로 그리면 위와 같다.

2025-01-21에 대해서 00, 06, 12, 18 UTC, 총 네 개의 앙상블 멤버를 갖는 형태다.

알아두면 좋을 점은, NCEI 서버에서 직접 받을 경우 앙상블 멤버를 선택해서 다운로드 받을 수 있지만,

ECMWF에서 받을 경우 모든 앙상블 멤버를 다운로드 받게 된다는 것이다.


2. 다운로드 받은 데이터셋 확인

출처: 나

 

나는 leadtime_hour를 [ "06", "12" ]로 설정하여 다운로드 받았다.

Python의 pygrib으로 다운로드 받은 파일을 열어서 확인한 결과 위와 같이 데이터가 들어 있다.

각 줄의 마지막 부분을 보면 from 뒤에 날짜가 작성되어 있는데, 이것이 각각의 Initialization 시각을 의미한다.

그리고 바로 그 앞의 fcst time이 Initial condition으로부터의 예측 시간을 의미한다.

 

결국, 나는 다운로드 설정 코드에서 year, month, day, leadtime_hour만을 작성해주었음에도

00, 06, 12, 18 UTC의 Initialization 모두에 대해 다운로드 받은 것이다.

 

그래서, 만약 00 UTC 에 Initialization 된 데이터만을 사용하고자 한다면

후처리를 통해서 걸러낸 뒤 사용하는 것이 좋다.

 

- 끝 -