unsigned - 确定 NetCDF 中 HDF5 变量的签名状态

标签 unsigned hdf5 netcdf

我的团队已获得 HDF5 文件可供读取。它们包含带有无符号变量的结构化数据。我和我的团队欣喜若狂地找到了 NetCDF 库,尽管使用的是 NetCDF 数据模型,但它允许纯 Java 读取 HDF5 文件。

没问题——我们认为只需将 NetCDF 数据模型转换为我们想要的任何模型即可。只要我们把数据拿出来。然后我们尝试从 HDF5 文件中读取一个无符号的 32 位整数。我们可以加载HDFView 2.9并看到该变量是一个无符号的32位整数。但是...事实证明NetCDF-3 doesn't support unsigned values !

雪上加霜的是,NetCDF-3 建议您“扩大数据类型”或使用 _Unsigned = "true"属性(我不是编造的)来指示 32 位应该被视为无符号值。

好吧,如果我从头开始创建 NetCDF 数据,也许这些拼凑会有效,但是如何使用 NetCDF 检测现有 HDF5 文件中的 32 位值应解释为无符号?

更新:显然NetCDF-4 does support unsigned data types 。因此这就引出了一个问题:如何确定 NetCDF Java 库中的值是否有符号?”我在 ucar.ma2.DataType 中没有看到任何无符号类型。

最佳答案

是的,您可以查找 _Unsigned = "true"属性,或者您可以调用 Variable.isUnsigned()。

因为 Java 不支持无符号类型,所以这是一个困难的设计决策。最终,为了提高效率,我们决定不自动扩展类型。因此应用程序必须检查并做正确的事情。查看 ucar.nc2.DataType.unsignedXXX() 辅助方法。

当你读取数据时,你会得到一个Array对象。你可以调用Array.isUnsigned()。此外,像 Array.getDouble() 这样的提取器也会正确转换。

netCDF-Java 库支持称为“通用数据模型”的扩展数据模型,以抽象出文件格式的差异。因此,我们不会受到 netCDF-3 文件格式或数据模型的限制。但我们在Java中

约翰

关于unsigned - 确定 NetCDF 中 HDF5 变量的签名状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309991/

相关文章:

python - 快速读取变量的非连续子集

c - 如何在 C 中将无符号定义变量转换为有符号定义变量

java - 了解 Java 无符号数

php - 如何在 MySQL 或 PHP 中将 32 位整数从无符号转换为有符号?

c++ - 错误导入 hdf5 文件以在 caffe 中训练 hdf5_classification

bash - 在服务器上调用 R 以从主机上的 R session 中提取数据?

python - 从 netcdf 到栅格 (tif) 的转换会改变分辨率和范围吗?

python - 将 NetCDF 转换为 GRIB2

c - 汇编中无符号 32 位整数的左移

python - h5py create_dataset循环慢