作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我每天下载具有以下结构的 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 文件时,会占用大量内存和时间。
有人知道实现此目的的另一种方法吗?
最佳答案
您的回答很有见地。我并不是真的在寻找改进此 ncdump-sed-ncgen 方法的方法,我知道转储 600MB 的 netcdf 文件在文本文件(CDL 表示)中使用的空间几乎是原来的 5 倍。然后再修改一些header文本,再生成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
关于linux - 如何在 netcdf 文件中将固定大小的维度转换为无限大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28598485/
所以如果我在做: setInterval(function(){ console.log("1"); },Infinity); 它一直在记录 1,就好像它是一个 for 循环。为什么会有这种行为
我是一名优秀的程序员,十分优秀!