gpt4 book ai didi

netcdf - 使用 CDO 从 netcdf 计算降水量的月平均值和年总和

转载 作者:行者123 更新时间:2023-12-02 02:30:45 31 4
gpt4 key购买 nike

我正在使用 CRU ts_4.04 数据学习 netCDF 和 CDO。我想计算伦敦降水量的月平均值和年总和。我写道:

#!/usr/bin/bash
lon=-0.11
lat=51.49
PREFNAME="/myHD/CRU4.04/pre/cru_ts4.04.1901.2019.pre.dat.nc"
OUTFNAME="outfile-"
echo "1970-2000 monthly average and annual sum of precipitations in London"
cdo remapnn,lon=$lon/lat=$lat $PREFNAME $OUTFNAME"place.nc"
cdo selvar,pre $OUTFNAME"place.nc" $OUTFNAME"var.nc"
cdo selyear,1970/2000 $OUTFNAME"var.nc" $OUTFNAME"years.nc"
cdo ymonmean $OUTFNAME"years.nc" $OUTFNAME"yearsmean.nc"
cdo timcumsum $OUTFNAME"yearsmean.nc" $OUTFNAME"yearsum.nc"
cdo info $OUTFNAME"yearsum.nc"
cdo info $OUTFNAME"yearsmean.nc"
exit

我得到:

MyPC:~/workbench01$ ./gotit2.sh 
1970-2000 monthly average and annual sum of precipitations in London
cdo remapnn: Nearest neighbor weights from lonlat (720x360) to lonlat (1x1) grid, with source mask (67420)
cdo remapnn: Processed 2 variables over 1428 timesteps [2.64s 60MB].
cdo selname: Processed 2 variables over 1428 timesteps [0.01s 52MB].
cdo selyear: Processed 1 variable over 1428 timesteps [0.00s 51MB].
cdo ymonmean: Processed 1 variable over 372 timesteps [0.00s 51MB].
cdo timcumsum: Processed 1 variable over 12 timesteps [0.00s 51MB].
-1 : Date Time Level Gridsize Miss : Minimum Mean Maximum : Parameter ID
1 : 2000-01-16 00:00:00 0 1 0 : 81.229 : -1
2 : 2000-02-15 00:00:00 0 1 0 : 132.26 : -1
3 : 2000-03-16 00:00:00 0 1 0 : 189.70 : -1
4 : 2000-04-16 00:00:00 0 1 0 : 244.82 : -1
5 : 2000-05-16 00:00:00 0 1 0 : 298.52 : -1
6 : 2000-06-16 00:00:00 0 1 0 : 356.92 : -1
7 : 2000-07-16 00:00:00 0 1 0 : 402.39 : -1
8 : 2000-08-16 00:00:00 0 1 0 : 456.03 : -1
9 : 2000-09-16 00:00:00 0 1 0 : 527.19 : -1
10 : 2000-10-16 00:00:00 0 1 0 : 605.04 : -1
11 : 2000-11-16 00:00:00 0 1 0 : 682.58 : -1
12 : 2000-12-16 00:00:00 0 1 0 : 762.59 : -1
cdo info: Processed 1 variable over 12 timesteps [0.00s 50MB].
-1 : Date Time Level Gridsize Miss : Minimum Mean Maximum : Parameter ID
1 : 2000-01-16 00:00:00 0 1 0 : 81.229 : -1
2 : 2000-02-15 00:00:00 0 1 0 : 51.032 : -1
3 : 2000-03-16 00:00:00 0 1 0 : 57.439 : -1
4 : 2000-04-16 00:00:00 0 1 0 : 55.116 : -1
5 : 2000-05-16 00:00:00 0 1 0 : 53.700 : -1
6 : 2000-06-16 00:00:00 0 1 0 : 58.400 : -1
7 : 2000-07-16 00:00:00 0 1 0 : 45.471 : -1
8 : 2000-08-16 00:00:00 0 1 0 : 53.642 : -1
9 : 2000-09-16 00:00:00 0 1 0 : 71.161 : -1
10 : 2000-10-16 00:00:00 0 1 0 : 77.845 : -1
11 : 2000-11-16 00:00:00 0 1 0 : 77.545 : -1
12 : 2000-12-16 00:00:00 0 1 0 : 80.006 : -1
cdo info: Processed 1 variable over 12 timesteps [0.00s 51MB].

它看起来非常好,但它们与使用 CRU ts4.04 在 1970-2000 年间伦敦的 https://climatecharts.net/ 中显示的结果不同。

我的问题是:我计算的是降水量的月平均值和年总和吗?

感谢您的帮助。

最佳答案

cdo函数:

ymonmean 

计算每个日历月的平均值,即所有一月的平均值、所有二月的平均值等...生成的文件将有 12 个时间步长。

timcumsum

然后生成这 12 个步骤的累积和。所以第 1 步仍然是您的 1 月平均值,然后第 2 步是 1 月和 2 月平均值的总和,依此类推,结果文件仍然有 12 个时间步长,您需要的结果应该是最后一步。

但是,如果你只是想知道平均年降雨量是多少,那么你可以直接用

cdo yearsum in.nc out.nc  # calculate total for each year
cdo timmean out.nc year_average.nc # average over the totals

或使用一行管道:

cdo timmean -yearsum in.nc year_average.nc

以上警告,请确保您的系列有完整的日历年。如果第一年开始于例如7 月,那一年的总和显然只有 6 个月的降雨量,这会影响您的统计数据,最后一年的最后一个月也是如此。

最后,我在 climatecharts 的数据页面上看到它直接使用观测值而不是网格化的 cru,因此无论如何您都不能期望结果完全相同。

Edit 2021:我现在制作了关于这些主题的视频指南:

Calculating temporal statistics

Calculating diurnal and seasonal cycles

关于netcdf - 使用 CDO 从 netcdf 计算降水量的月平均值和年总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65072907/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com