如何交换 netCDF 文件的维度?
How can I swap the dimensions of a netCDF file?
我有一个
dimensions:
time = 1000 ;
xr = 100 ;
variables:
int time(time) ;
time:long_name = "time since time reference (instant)" ;
time:units = "hours since 2010-05-01" ;
double v1(xr, time) ;
v1:long_name = "V1" ;
averageInstantRunoff:units = "m s-1" ;
double v1(time, xr) ;
v1:long_name = "V1" ;
averageInstantRunoff:units = "m s-1" ;
int xr(xr) ;
xr:long_name = "xr index" ;
xr:units = "-" ;
在这里,我想让变量 v1
的维度为 (time, xr) 而不是 (xr,time)。
我这样做使用:
ncpdq -v v1 -a time,xr test.nc test2.nc
当然,它不会复制 v2。我对包含大量变量的大文件执行此操作,我只想对单个变量执行此操作。
我该怎么做?
您也可以使用 ncap2 permute() 方法:
ncap2 -s 'v1_prm=v1.permute($time,$xr)' in.nc out.nc
但是你的输出将有一个 v1 和一个 v1_prm。无论哪种方式,它都是一个带有 NCO 的双线过程,因为您需要第二步来附加(ncpdq 方法)或删除额外变量(ncap2 方法)。
我有一个
dimensions:
time = 1000 ;
xr = 100 ;
variables:
int time(time) ;
time:long_name = "time since time reference (instant)" ;
time:units = "hours since 2010-05-01" ;
double v1(xr, time) ;
v1:long_name = "V1" ;
averageInstantRunoff:units = "m s-1" ;
double v1(time, xr) ;
v1:long_name = "V1" ;
averageInstantRunoff:units = "m s-1" ;
int xr(xr) ;
xr:long_name = "xr index" ;
xr:units = "-" ;
在这里,我想让变量 v1
的维度为 (time, xr) 而不是 (xr,time)。
我这样做使用:
ncpdq -v v1 -a time,xr test.nc test2.nc
当然,它不会复制 v2。我对包含大量变量的大文件执行此操作,我只想对单个变量执行此操作。
我该怎么做?
您也可以使用 ncap2 permute() 方法:
ncap2 -s 'v1_prm=v1.permute($time,$xr)' in.nc out.nc
但是你的输出将有一个 v1 和一个 v1_prm。无论哪种方式,它都是一个带有 NCO 的双线过程,因为您需要第二步来附加(ncpdq 方法)或删除额外变量(ncap2 方法)。