在一个范围内转储 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
我正在使用以下命令将变量 '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