Почему разное программное обеспечение и команды дают разные результаты при вычислении среднесуточного значения на основе почасовых данных ERA5?

По сути, это репост или продолжение от Как рассчитать среднесуточное значение на основе почасовых данных netCDF ERA5? У меня есть четыре атмосферные переменные, а именно. температура точки росы, длинноволновое излучение, коротковолновое излучение и скорость ветра (рассчитанные на основе компонентов ветра u10 и v10). Все они имеют почасовую шкалу, и мне нужно преобразовать их в суточную шкалу (обратите внимание, что здесь я привел только пример температуры точки росы). Чтобы сделать это сначала, я применил следующую команду

cdo daymean -shifttime,-1hour d2m.nc d2m_wb.nc и получил следующий результат.

cdo sinfo d2m_wb.nc
   File format : NetCDF2
    -1 : Institut Source   T Steptype Levels Num    Points Num Dtype : Parameter ID
     1 : unknown  unknown  v instant       1   1       475   1  F64  : -1
   Grid coordinates :
     1 : lonlat                   : points=475 (19x25)
                              lon : 85.5 to 90 by 0.25 degrees_east
                              lat : 21.5 to 27.5 by 0.25 degrees_north
   Vertical coordinates :
     1 : surface                  : levels=1
   Time coordinate :  25904 steps
     RefTime =  1900-01-01 00:00:00  Units = hours  Calendar = gregorian  Bounds = true
  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss  YYYY-MM-DD hh:mm:ss
  1949-12-31 23:00:00  1950-01-01 11:00:00  1950-01-02 11:00:00  1950-01-03 11:00:00
  1950-01-04 11:00:00  1950-01-05 11:00:00  1950-01-06 11:00:00  1950-01-07 11:00:00
  1950-01-08 11:00:00  1950-01-09 11:00:00  1950-01-10 11:00:00  1950-01-11 11:00:00
  1950-01-12 11:00:00  1950-01-13 11:00:00  1950-01-14 11:00:00  1950-01-15 11:00:00
  1950-01-16 11:00:00  1950-01-17 11:00:00  1950-01-18 11:00:00  1950-01-19 11:00:00
  1950-01-20 11:00:00  1950-01-21 11:00:00  1950-01-22 11:00:00  1950-01-23 11:00:00
  1950-01-24 11:00:00  1950-01-25 11:00:00  1950-01-26 11:00:00  1950-01-27 11:00:00
  1950-01-28 11:00:00  1950-01-29 11:00:00  1950-01-30 11:00:00  1950-01-31 11:00:00
  ..................................................................................
   ................................................................................
   ................................................................................
   .................
  2020-10-31 11:00:00  2020-11-01 11:00:00  2020-11-02 11:00:00  2020-11-03 11:00:00
  2020-11-04 11:00:00  2020-11-05 11:00:00  2020-11-06 11:00:00  2020-11-07 11:00:00
  2020-11-08 11:00:00  2020-11-09 11:00:00  2020-11-10 11:00:00  2020-11-11 11:00:00
  2020-11-12 11:00:00  2020-11-13 11:00:00  2020-11-14 11:00:00  2020-11-15 11:00:00
  2020-11-16 11:00:00  2020-11-17 11:00:00  2020-11-18 11:00:00  2020-11-19 11:00:00
  2020-11-20 11:00:00  2020-11-21 11:00:00  2020-11-22 11:00:00  2020-11-23 11:00:00
  2020-11-24 11:00:00  2020-11-25 11:00:00  2020-11-26 11:00:00  2020-11-27 11:00:00
  2020-11-28 11:00:00  2020-11-29 11:00:00  2020-11-30 11:00:00  2020-12-31 23:00:00
cdo    sinfo: Processed 1 variable over 25904 timesteps [6.03s 37MB

Результат (среднесуточное значение) показался мне очень сомнительным (поскольку в метке времени указано 11:00:00). Поэтому я спросил то же самое на форуме CDO, и они предложили вернуться на 1 минуту вместо 1 часа.

cdo daymean -shifttime,-1min d2m.nc d2m_wb.nc

Здесь метка времени (d2m_wb.nc) показывает 12:00:00 вместо 11:00:00. Я не был уверен, верен результат или нет. Итак, я попытался перепроверить это, используя следующий скрипт на python (3.8.5).

import xarray as xr
hourly_d2m = xr.open_dataset(r'E:\Data\Rda\d2m\d2m.nc')
d2m = hourly_d2m['d2m']
d2m= hourly_d2m.shift(time=-1).dropna(dim='time',how='all') 
sds = d2m.resample(time='D').mean(dim='time')
sds.to_netcdf('E:\Data\Rda\d2m\daily\d2m_wb.nc')

Там я получил отметку времени 00:00:00 после вычисления среднего дневного значения d2m_wb.nc. Теперь вопрос в другом программном обеспечении, и команды дают разные результаты для общей цели (то есть среднесуточное значение). Совершенно запуталась и ищу подходящее решение или разъяснение. Спасибо.


person Soumik Das    schedule 06.04.2021    source источник
comment
Совершенно верно, я понял, как рассчитать среднесуточное значение на основе почасовых данных ERA5. Однако я получаю разные результаты при использовании разного программного обеспечения и команд. Это очень сбивает с толку и требует подходящего разъяснения. Спасибо.   -  person Soumik Das    schedule 07.04.2021


Ответы (1)


Вы можете перечитать ответ, который я дал на ваш предыдущий вопрос. Как я уже сказал, выбор программного обеспечения временного шага в совокупном выводе является в некоторой степени произвольным. Вот почему CDO дает пользователям возможность изменить его. Например, вы можете установить его на первый или последний временной шаг, по которому выполняется усреднение, если хотите. xarray использует несколько иное предположение о том, какой временной интервал выбрать. Ни один из них не является правильным или неправильным с точки зрения выбора временного шага. Оба они достигают одной и той же цели - дать вам среднее время с правильным днем.

person Robert Wilson    schedule 06.04.2021
comment
то же самое. Эта проблема уже рассматривалась в предыдущем посте. - person Adrian Tompkins; 07.04.2021
comment
Спасибо @Robert за развенчание моих сомнений. - person Soumik Das; 07.04.2021