从 netCDF 中的组中提取变量
Extracting variable from group in netCDF
我有一个包含以下内容的 netCDF 文件。 nc转储:
netcdf test_nc {
dimensions:
time = UNLIMITED ; // (20 currently)
latitude = 360 ;
longitude = 720 ;
N = 3 ;
strlen = 1 ;
variables:
float data_array(time, latitude, longitude, N) ;
data_array:_FillValue = -9999.f ;
data_array:units = "1" ;
data_array:long_name = "data_array" ;
char N(N, strlen) ;
double latitude(latitude) ;
latitude:standard_name = "latitude" ;
latitude:units = "degrees_north" ;
double longitude(longitude) ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "days since 2000-01-01 00:00:00.0" ;
time:calendar = "gregorian" ;
}
如何提取 data_array
组中的最后一个变量?如果我使用 ncks
,我可以像这样提取所有 data_array
:
ncks -v data_array test_nc.nc output_nc.nc
但是我只想提取data_array
中N=3对应的变量。任何使用 python netCDF4 或 nco 工具的解决方案都适用于我(但不使用 cdo),也需要在 windows.
上工作
如果我理解正确的话,你使用了古怪的术语,并分别称呼 "group" 和 "variable",而其他人称其为 "variable" 和 "hyperslab"。 NCO 解决方案是将 hyperslab 选项 (-d) 与大多数运算符一起使用,例如 ncks :
ncks -d N,2 -v data_array in.nc out.nc
索引默认从 0 开始,因此 N=2 为您提供 N 中的最后一个切片。
我有一个包含以下内容的 netCDF 文件。 nc转储:
netcdf test_nc {
dimensions:
time = UNLIMITED ; // (20 currently)
latitude = 360 ;
longitude = 720 ;
N = 3 ;
strlen = 1 ;
variables:
float data_array(time, latitude, longitude, N) ;
data_array:_FillValue = -9999.f ;
data_array:units = "1" ;
data_array:long_name = "data_array" ;
char N(N, strlen) ;
double latitude(latitude) ;
latitude:standard_name = "latitude" ;
latitude:units = "degrees_north" ;
double longitude(longitude) ;
longitude:standard_name = "longitude" ;
longitude:units = "degrees_east" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "days since 2000-01-01 00:00:00.0" ;
time:calendar = "gregorian" ;
}
如何提取 data_array
组中的最后一个变量?如果我使用 ncks
,我可以像这样提取所有 data_array
:
ncks -v data_array test_nc.nc output_nc.nc
但是我只想提取data_array
中N=3对应的变量。任何使用 python netCDF4 或 nco 工具的解决方案都适用于我(但不使用 cdo),也需要在 windows.
如果我理解正确的话,你使用了古怪的术语,并分别称呼 "group" 和 "variable",而其他人称其为 "variable" 和 "hyperslab"。 NCO 解决方案是将 hyperslab 选项 (-d) 与大多数运算符一起使用,例如 ncks :
ncks -d N,2 -v data_array in.nc out.nc
索引默认从 0 开始,因此 N=2 为您提供 N 中的最后一个切片。