Почему разные программы и команды дают разные результаты при вычислении среднесуточного значения на основе почасовых данных 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
Результат (среднесуточное значение) показался мне очень сомнительным (поскольку в метке времени он есть). Поэтому я спросил то же самое на форуме CDO, и они предложили вернуться на 1 минуту вместо 1 часа.
cdo daymean -shifttime,-1min d2m.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')
wind = 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
. Теперь вопрос в другом программном обеспечении, и команды дают разные результаты для общей цели (то есть среднесуточное значение). Совершенно запуталась и ищу подходящее решение или разъяснение. Спасибо.
1 ответ
Вы можете перечитать ответ, который я дал на ваш предыдущий вопрос. Как я уже сказал, выбор программного обеспечения временного шага в совокупном выводе является в некоторой степени произвольным. Вот почему CDO дает пользователям возможность изменить его. Например, вы можете установить его на первый или последний временной шаг, по которому будет усредняться, если хотите. xarray использует несколько иное предположение о том, какой временной интервал выбрать. С точки зрения выбора временного шага нет ни правильного, ни неправильного. Оба они достигают одной и той же цели - дать вам среднее значение по времени для правильного дня.