首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取NetCDF变量并创建新的NetCDF

提取NetCDF变量并创建新的NetCDF
EN

Stack Overflow用户
提问于 2022-02-02 09:13:49
回答 1查看 295关注 0票数 0

我需要一些操作NetCDF文件的帮助。总共我有10个文件,分别为10年。每年都有多个(相同的)变量,其中一些还包括每日值。在这里,我给大家展示一个结构的例子:

代码语言:javascript
复制
(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:

代码语言:javascript
复制
(year, y, x) for the SMB variable

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

有人能帮我吗?会很棒的!

特蕾莎

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-26 15:37:44

NCO ncecat命令,即文档化的这里,完全可以满足您的需要:

代码语言:javascript
复制
ncecat -u time -v SMB Rhone_AWS_199*.nc out.nc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70953036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档