gpt4 book ai didi

linux - 如何在 netcdf 文件中将固定大小的维度转换为无限大小

转载 作者:IT王子 更新时间:2023-10-29 00:41:19 24 4
gpt4 key购买 nike

我每天下载具有以下结构的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com