在一个范围内转储 netcdf 变量

dump netcdf variable within a range

我正在使用以下命令将变量 'tas' 的内容转储到 netcdf 文件 tas_EUR-44_historical.nc

ncdump -v tas tas_EUR-44_historical.nc

tas是由时间、纬度和经度组成的三个维度的变量tas(time, rlat, rlon)

现在我需要转储第一个时间值 0,rlat 范围从 0 到 5,rlon 范围从 0 到 5。

有谁知道如何做到这一点?

谢谢!

很大程度上取决于您要使用哪种工具。对于大多数编程语言 ("Python/R/...") 来说,这是一项非常微不足道的任务,如果您想要一个命令行工具,您可能需要查看 NCO,尤其是它的 ncks(NetCDF 厨房水槽)命令。

例如,如果我有一个 NetCDF 文件(输出 ncdump -h

netcdf u.xz {
dimensions:
    xh = 256 ;
    y = 1 ;
    z = 160 ;
    time = UNLIMITED ; // (481 currently)
variables:
    float time(time) ;
        string time:units = "Seconds since start of experiment" ;
    float xh(xh) ;
    float y(y) ;
    float z(z) ;
    float u(time, z, xh, y) ;
}

我可以提取例如第一次记录使用:

ncks -d time,0,0 u.xz.nc test.nc

或者,更接近你的问题,select第一次记录和切片空间维度:

ncks -d time,0,0 -d xh,0,5 -d z,0,5 u.xz.nc test.nc

每次将被操纵的NetCDF文件写入一个新文件。您可以省略最后一个参数 test.nc 以将输出转储到屏幕,或者简单地将 test.nc 的输出转储为 ncdump.

您可以使用ncks

ncks -d time,0 -d rlat,0,5 -d rlon,0,5 in.nc out.nc