Fav*_*avo 7 linux sed netcdf nco
我每天下载600MB netcdf-4文件,它们具有以下结构:
netcdf myfile {
dimensions:
time_counter = 18 ;
depth = 50 ;
latitude = 361 ;
longitude = 601 ;
variables:
salinity
temp, etc
我正在寻找一种更好的方法将time_counter维度从固定大小(18)转换为无限维度.
我找到了一种使用netcdf命令和sed的方法.像这样:
ncdump myfile.nc | sed -e "s#^.time_counter = 18 ;#time_counter = UNLIMITED ; // (currently 18)#" | ncgen -o myfileunlimited.nc
这对我来说对于小文件很有用,但是当转储600 MB的netcdf文件时,需要花费大量的内存和时间.
有人知道另一种方法来完成这个吗?
Fav*_*avo 13
你的答案非常有见地.我真的不想改进这个ncdump-sed-ncgen方法,我知道转储600MB的netcdf文件在文本文件中使用的空间几乎是5倍(CDL表示).然后修改一些标题文本并再次生成netcdf文件,感觉效率不高.
我阅读了最新的NCO命令文档,并找到了一个特定于ncks"--mk_rec_dmn"的选项.Ncks主要提取,写入或将数据附加到新的netcdf文件,然后这似乎是更好的方法,提取myfile.nc的所有数据并使用"--mk_rec_dmn"执行的新记录维度(无限维度)写入,然后替换旧文件.
ncks --mk_rec_dmn time_counter myfile.nc -o myfileunlimited.nc ; mv myfileunlimited.nc myfile.nc
要进行相反的操作(记录尺寸为固定尺寸).
ncks --fix_rec_dmn time_counter myfile.nc -o myfilefixedsize.nc ; mv myfilefixedsize.nc myfile.nc