r - 如何在多个 netcdf 中合并/组合时间变量
问题描述
我有很多具有相同纬度和经度维度的海面温度 NetCDF 文件,但时间变量不同。我想尝试通过组合时间变量将其组合成 1 个 NetCDF 文件,因为每个 netcdf 文件中的时间变量都是连续的
有没有更有效的方法?因为在 CDO(气候数据操作员)中我不能循环
以下是我使用的文件名示例
sstdas_19810101.nc
sstdas_19810102.nc
sstdas_19810103.nc
sstdas_19810201.nc
sstdas_19810202.nc
sstdas_19810203.nc
...
sstdas_20171203.nc
带有模式 sstdas_(year)(month)(dekad)
解决方案
您可以将 mergetime 参数与 CDO 一起使用:
cdo mergetime sstdas_*.nc merged_file.nc
请注意,CDO 会为该操作一次性打开所有文件,并且在某些系统上,同时打开文件的数量是有限制的,在这种情况下,CDO 会抛出错误。在这种情况下,您将需要循环,您可以使用 bash 循环对 CDO 执行此操作,我建议一次尝试一年,然后合并这些:
#!/bin/bash
for year in {1981..2007} ; do
cdo mergetime sstdas_${year}??.nc sstdas_${year}.nc
done
cdo mergetime sstdas_????.nc sstdas_wholeseries.nc
注意我使用单字母通配符“?” 更严格,避免将每日和每年的文件与这两个合并混合。
推荐阅读
- excel - jsreport - 车把 - Xlsx 配方:使用模板时添加图像失败
- arduino - Arduino 没有将完整的 NMEA 语句写入 SD 卡文件
- django - ForeignKey 上等效的 ManyToMany `through Model` 是什么?
- python - 无法将 matplotlib 安装到 pycharm
- reactjs - Redux / 从动作调用调度
- c# - 从 C# 中的对象中检索组件类
- python - Heroku - 未能推动一些裁判
- java - How to correctly implement the UserDetailsService without having an username?
- laravel - Laravel Voyager 不显示图像
- reactjs - httpOnly cookie not getting sent with request from getInitialProps [Next.js]