【发布时间】:2020-09-21 20:59:53
【问题描述】:
如何使用存储在 netcdf 文件中的数据从时间序列中删除季节性数据?我想找到一个使用 Linux 的解决方案,而我使用 Grads 和 Ferret 进行可视化。
非常感谢!
【问题讨论】:
标签: netcdf weather nco cdo-climate
如何使用存储在 netcdf 文件中的数据从时间序列中删除季节性数据?我想找到一个使用 Linux 的解决方案,而我使用 Grads 和 Ferret 进行可视化。
非常感谢!
【问题讨论】:
标签: netcdf weather nco cdo-climate
您可以使用 CDO 计算一年中每一天/每个月的平均值并从原始文件中减去:
如果文件包含每日数据:
cdo sub in.nc -ydaymean in.nc deseasonalized.nc
如果数据是月度数据,同样如此:
cdo sub in.nc -ymonmean in.nc deseasonalized.nc
ydaymean 和 ymonmean 命令计算数据集 in.nc 的年周期,即 ymonmean 返回 12 个时间片,即所有 1 月、2 月等的平均值,然后使用 sub 从原始文件中减去。我用过管道,但分两条线可能更容易理解:
cdo ymonmean in.nc annual_cycle.nc
cdo sub in.nc annual_cycle.nc deseasonalized.nc
这完全一样,deseasonalized.nc 将是相同的(几乎,由于 netcdf 全局元数据标头中的“历史”日志不同,会有一些字节差异),但是您还将有一个新文件,其中包含 annual_cycle.nc(可能也有用?)。
在进行减法时,CDO 检测到要减去的第二个文件中的时间片数较小,因此循环/循环通过它。 注意 因为季节性周期是从与原始数据相同的文件中计算出来的,所以如果数据以例如四月,ymonmean的结果也将从四月开始。但是,如果您想删除从不同来源计算得出的季节性周期,则开始日期/月份可能会有所不同,您最终会减去例如四月意味着从一月开始!为避免这种情况,您可以改用 ymonsub 命令:
cdo ymonsub full_timeseries.nc seasonal_file.nc deseasonalised.nc
Edit 2021:我现在有一个关于这个主题的视频,你可以在这里观看https://youtu.be/jKlA1ouoQIs
【讨论】: