查看NetCDF元数据,而不会因文件大小/格式太大而绊倒



摘要

我需要得到NCO工具的帮助。我遇到错误

"一个或多个可变大小违反格式约束";

。。。当试图只查看文件中的变量列表时:

ncdump -h isrm_v1.2.1.ncf

当我不要求读取任何大变量时,偶然发现这一点似乎很奇怪。。。只是元数据。是否有任何我应该或可能传递的标志来避免此错误?

Reprex

Zenodo上提供了isrm_v1.2.1.ncf(165 GB)。

详细信息

我刚刚通过brew --install nco --build-from-source在运行OS X 11.6.5的Mac(我知道,我知道)上安装了NCO套件。ncks --version说5.0.6。

小费不胜感激。我已经在ncks文档中搜索了几个小时,但没有太多见解。一个朋友能够在另一个运行实际Linux的系统上对文件进行切片,所以我很确定我的NCO安装是罪魁祸首。

我如何才能更深入地挖掘以找到根本原因?NCO工具似乎不是很冗长。我知道NetCDF有不同的子格式(3,4,…),但我甚至不知道如何验证我试图访问的.nc文件的版本/格式。

我的更大目标是能够像ncks -v pNH4 -d layer,0 isrm_v1.2.1.ncf pNH4L0.nc一样对其进行切片,但如果我甚至不能查看元数据,我想我需要首先解决这个问题。

记录在案的错误消息的详细版本是:

提示:当试图将输入文件复制或聚合到超过输出文件格式的每个文件容量的输出文件中时,以及当试图复制、聚合或定义超过输出文件形式的每个变量约束的单个变量时,会发生NC_EVARSIZE错误。在现代计算机上,所有netCDF格式的每个文件的限制不小于8EiB,因此任何NC_EVARSIZE错误几乎肯定是由于违反了每个变量的限制。相关限制:netCDF3 NETCDF_CLASSIC格式将固定变量的大小限制为小于2^31 B=2 GiB~2.1 GB,并将每个记录的变量记录为该大小。当且仅当单个变量是最后定义的变量时,该变量可能会超过此限制。netCDF3 NETCDF_64BIT_OFFSET格式将固定变量的大小限制为小于2^32 B=4 GiB ~ 4.2 GB,并将每个记录的变量记录为该大小。对于固定变量,任何数量的变量都可能达到但不超过此大小,或者对于记录变量,每个记录都可能达到此大小。netCDF3 NETCDF_64BIT_DATA和netCDF4 netCDF4格式没有实际导入的可变大小限制。如果数据集中的任何变量超过了这些限制,请将输出文件更改为足够大的格式,要么是具有64位偏移量的netCDF3 classic(带-6或-64),要么是带有64位数据的PnetCDF/CDF5(带-5),要么就是netCDF4(带-4或-7)。有关更多详细信息,请参阅http://nco.sf.net/nco.html#fl_fmt

感谢提示!

ncdump不是一个NCO程序,所以我在这方面帮不了你,只是说在这种情况下打印元数据不应该导致错误,所以请尝试ncks -m in.nc而不是ncdump -h in.nc

尽管如此,你遇到的超实验室问题很可能是因为试图将太多数据塞进无法容纳的netCDF格式。一般的解决方案是将数据写入更大容量的netCDF:

尝试以下任一命令:

ncks -5 -v pNH4 -d layer,0 isrm_v1.2.1.ncf pNH4L0.nc
ncks -7 -v pNH4 -d layer,0 isrm_v1.2.1.ncf pNH4L0.nc

此处记录了格式

最新更新