【问题标题】:Aggregate different netcdf variables and write output聚合不同的 netcdf 变量并写入输出
【发布时间】:2020-11-24 17:05:21
【问题描述】:

我有一个包含 3 个变量的 netcdf 文件,分别命名为 v1v2v3。 我想把这些变量聚合起来,新建一个变量v4,如下:

v4 = (v1*0.1)+(v2*0.2)+(v3*0.2)

我知道如何使用 cdo 聚合 2 个变量:

cdo expr,’sum=var1+var2;’ ifile ofile

但我如何处理更具体的 netcdf 计算,如所需的计算?

【问题讨论】:

    标签: netcdf nco cdo-climate


    【解决方案1】:

    CDO 将能够处理您需要的公式:

    cdo expr,’v4=(v1*0.1)+(v2*0.2)+(v3*0.2)’ ifile ofile
    

    如果您想将变量添加到文件中,只需执行以下操作:

    cdo aexpr,’sum=var1+var2;v4=(v1*0.1)+(v2*0.2)+(v3*0.2)’ ifile ofile
    

    【讨论】:

      【解决方案2】:

      默认情况下,NCO 将元数据从 RHS 上的第一个变量传播到 LHS,因此 v4 获得与 Adrian 示例中的 v1 相同的属性。您可以在同一 ncap2 命令中更改或扩充这些属性,使用 at-sign @ 来命名属性,例如,

      ncap2 -O -s 'v4=(v1*0.1)+(v2*0.2)+(v3*0.2);v4@long_name="Fourth variable";v4@units="meters"' in.nc out.nc
      

      【讨论】:

      • 好点子,如果您不介意,我会更新我的答案以指向该信息以进行澄清。
      【解决方案3】:

      您也可以使用 ncap2 作为替代方案

      ncap2 -O -s "v4=(v1*0.1)+(v2*0.2)+(v3*0.2)" ifile.nc ofile.nc
      

      虽然我通常会按照 Robert Wilson 的建议使用 cdo 解决方案,但 nco 的好处是也能够定义所有元数据:

      ncatted -O -a units,v4,c,c,"units goes here" ofile.nc
      ncatted -O -a long_name,v4,c,c,"long_name goes here" ofile.nc
      

      编辑:正如查理在他对这个问题的回答中正确指出的那样,我应该强调 ncap2 从源变量中移植元数据这一事实,因此如果单元等元数据已经存在,您需要在根据他的回答使用 ncap 命令,或者在“修改”模式下对这些属性使用 ncatted。

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 2021-12-06
        • 2013-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        相关资源
        最近更新 更多