当前位置: 首页 > 知识库问答 >
问题:

提取NetCDF变量并创建新的NetCDF

方博学
2023-03-14

我需要一些处理NetCDF文件的帮助。我总共有10个文件,分别用于10年。每年都有多个(相同的)变量,其中一些还涵盖每日值。在这里,我向您展示了一个结构示例:

(base) thess2ice@local:rhone_smb_modelling $ ncdump -h Rhone_AWS_1990.nc
netcdf Rhone_AWS_1990 {
dimensions:
    x = 402 ;
    y = 852 ;
    time = 1460 ;
variables:
    double x(x) ;
        x:_FillValue = NaN ;
        x:standard_name = "x" ;
        x:long_name = "longitude" ;
        x:units = "degrees_east" ;
    double y(y) ;
        y:_FillValue = NaN ;
        y:standard_name = "y" ;
        y:long_name = "latitude" ;
        y:units = "degrees_north" ;
    float HGT(y, x) ;
        HGT:_FillValue = -9999.f ;
        HGT:units = "m" ;
        HGT:long_name = "Elevation" ;
    float ASPECT(y, x) ;
        ASPECT:_FillValue = -9999.f ;
        ASPECT:units = "degrees" ;
        ASPECT:long_name = "Aspect of slope" ;
    float SLOPE(y, x) ;
        SLOPE:_FillValue = -9999.f ;
        SLOPE:units = "degrees" ;
        SLOPE:long_name = "Terrain slope" ;
    float MASK(y, x) ;
        MASK:_FillValue = -9999.f ;
        MASK:units = "boolean" ;
        MASK:long_name = "Glacier mask" ;
    int64 time(time) ;
        time:units = "hours since 1990-01-01 00:00:00" ;
        time:calendar = "proleptic_gregorian" ;
    double T2(time, y, x) ;
        T2:_FillValue = NaN ;
        T2:units = "K" ;
        T2:long_name = "Temperature at 2 m" ;
    double RRR(time, y, x) ;
        RRR:_FillValue = NaN ;
        RRR:units = "mm" ;
        RRR:long_name = "Total precipitation (liquid+solid)" ;
    double ACC(y, x) ;
        ACC:_FillValue = -9999. ;
        ACC:units = "mm yr^-1" ;
        ACC:long_name = "Accumulation from RRR_solid" ;
    double MELT_I(y, x) ;
        MELT_I:_FillValue = -9999. ;
        MELT_I:units = "mm yr^-1" ;
        MELT_I:long_name = "Melt from PDD" ;
    double MELT_S(y, x) ;
        MELT_S:_FillValue = -9999. ;
        MELT_S:units = "mm yr^-1" ;
        MELT_S:long_name = "Melt from PDD" ;
    double SMB(y, x) ;
        SMB:_FillValue = -9999. ;
        SMB:units = "mm yr^-1" ;
        SMB:long_name = "SMB from PDD" ;

我需要将数据作为模型的输入进行处理。我需要从10个NetCDF文件中提取的变量是SMB变量,它只是每个网格单元的年度值。所以我想构建一个如下形式的NetCDF:

(year, y, x) for the SMB variable

我知道 ncks 命令已经只提取 SMB 变量,但我无法一次将其应用于多个文件(假设当前目录中的所有 nc 文件)并将它们放入一个 NetCDF 文件中,随后跨越所有 10 年。

有人能帮我吗?太好了!

特蕾莎

共有1个答案

颜经艺
2023-03-14

此处记录的 NCO ncecat 命令完全符合您的要求:

ncecat -u time -v SMB Rhone_AWS_199*.nc out.nc
 类似资料:
  • 我希望创建一个netCDF4文件,area_nc,与时间的维度和离散的字母数字区号,例如'A0','A1','A2','B0'等,不适合常规网格(而不是纬度/经度)。 NetCDF气候和预测(CF)元数据公约pdf建议,这可以在第4.5节中完成,但我找不到任何示例。 有办法做到这一点吗? 到目前为止,我已经尝试过: 但是我得到错误: 实现这一点,然后我想使用此代码作为参考将数据添加到文件中,而不是

  • 问题: 我在R中有一个代码,可以从单个Aqua Modis网络CDF文件中提取每月海面温度(SST)值(见下文)。但是,我在一个文件夹中有一批 59 个 Aqua Modis netCDF 文件。 目的: 我的目标是从所有59个netCDF文件的每个netCDF中提取变量的经度、纬度和SST,使用函数stack::raster()将它们转换为光栅文件,然后处理这些文件。 我的数据框有 650 行,

  • 我有一个很大的netCDF(.nc)文件文件夹,每个文件都有相似的名称。数据文件包含时间、经度、纬度和月降水量变量。目标是获得每个月X年的平均月降水量。因此,最终我会得到12个值,代表每个纬度和长纬度的X年平均月降水量。多年来,每个文件都位于同一位置。每个文件以相同的名称开头,以“date.nc”结尾,例如: 结尾是年月。目前为止我所知道的是: 我得到一个KeyError: ('time ','经

  • 我有一个 netcdf 数据文件,其中包含以下变量,显示在下面的 ncdump 代码段中: 我正在尝试从此文件中消除时间坐标变量,以便获得三维 netcdf 数据文件。基本上在netcdf文件中第一次拥有数据数据值,仅此而已。我试图用 ncks 完成此操作,这就是他们在进行谷歌搜索时显示我应该做的事情。我用 ncks 尝试了以下命令: 但我无法删除时间维度。我应该怎么做才能调整此命令以获得仅显示初

  • 本文向大家介绍arduino 创建变量,包括了arduino 创建变量的使用技巧和注意事项,需要的朋友参考一下 示例 要创建变量: 例如: 要创建变量并对其进行初始化: 例如:            

  • 我有一个国家和年份级别的面板数据集,我想根据现有的变量创建两个新变量。 我想做的是创建两个新变量集:(1)每年(跨国家)平均值的变量集和(2)国家/地区值相对于年平均值的变量集。例如,对于 var1(1) 将产生 mean_var1 和 (2) relmean_var1我希望这些变量用于所有其他变量。总的来说,数据集中有超过1000个变量,但我只将此函数应用于大约6个。 我有适用于第一部分的代码,