我使用以下命令在netcdf文件中转储变量'tas'的内容tas_EUR-44_historical.nc
ncdump -v tas tas_EUR-44_historical.nc
tas是三维的变量,包括时间,纬度和经度(时间,rlat,rlon)
现在我需要转储第一个时间值0,rlat范围从0到5,rlon范围从0到5.
有谁知道如何做到这一点?
谢谢!
答案 0 :(得分:1)
很大程度上取决于您想要使用哪种工具。对于大多数编程语言(" Python / R /..." ),这是一项非常简单的任务,如果您需要一个命令行工具,您可能需要查看{{ 3}},特别是它的ncks
(NetCDF Kitchen Sink)命令。
例如,如果我有一个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
或者,更接近您的问题,选择第一次记录并切片空间维度:
ncks -d time,0,0 -d xh,0,5 -d z,0,5 u.xz.nc test.nc
每次将受操作的NetCDF文件写入新文件。您可以省略最后一个参数test.nc
以将输出转储到屏幕,或者只是使用test.nc
转储ncdump
的输出。
答案 1 :(得分:1)
您可以使用NCO
ncks -d time,0 -d rlat,0,5 -d rlon,0,5 in.nc out.nc