Эту задачу можно выполнить с помощью функции маскирования CDO.
Первый шаг - создать эквивалентный файл с 1, если P> порогового значения (1 мм / день в вашем случае), и 0 в противном случае. Для этого мы используем функцию gec "больше или равно" (или ge = "больше", если хотите):
cdo gec,1 input.nc mask.nc
(при условии, что во входном файле единицы измерения - мм / день).
Затем вы можете просто суммировать эту маску за период (месяцы, годы и т. Д.), Который вы хотите, чтобы ваша статистика
cdo monsum mask.nc nwetdays_mon.nc
cdo yearsum mask.nc nwetdays_year.nc
Конечно, вы можете передать это по конвейеру, если хотите сделать это в одной строке: например,
cdo monsum -gec,1 input.nc nwetdays_mon.nc
Мы можем пойти еще дальше, если вы хотите разработать климатологию для конкретного месяца. Если у вас есть многолетний набор данных, вы можете использовать замечательные команды «ymonstat». Так, например, после того, как вы рассчитали месячный ряд дождливых дней выше, вы можете рассчитать среднее значение за каждый месяц с помощью
cdo ymonmean nwetdays_mon.nc nwetdays_mon_clim.nc
Затем вы можете отличить ряд от этой ежемесячной климатологии, чтобы получить аномалию дождливых дней в каждом месяце на протяжении ряда.
cdo ymonsub nwetdays_mon.nc nwetdays_mon_clim.nc nwetdays_mon_anom.nc
Надеюсь, это поможет!
(ps: я обычно всегда нахожу, что таким способом проще вычислять эти виды статистики напрямую с CDO, я редко обнаруживаю, что встроенные климатические функции вычисляют точно статистику как / как я хочу).
person
Adrian Tompkins
schedule
13.05.2020