以源文件的全精度将 HDF4 数组转储到 ascii

Posted

技术标签:

【中文标题】以源文件的全精度将 HDF4 数组转储到 ascii【英文标题】:Dump HDF4 arrays to ascii with full precision of the source file 【发布时间】:2013-12-28 16:39:57 【问题描述】:

我有许多带有 3D 数组的 HDF4 文件,我想将它们转储到 ascii 中,其中浮点值反映了源文件的完整精度。我使用过 HDP:HDP dumpsds,但它只打印 6 位精度并四舍五入。我的首选是用于读取 HDF4 的开源实用程序; python还是java?谢谢。 (我使用标签 HDF5,没有 HDF4。我意识到这些格式不兼容,但开发社区经常并行工作)。

【问题讨论】:

【参考方案1】:

如果您已经安装或确实安装了pyhdf,那么您可以轻松地在 python 中获得全精度访问:

from numpy import *
from pyhdf.SD import SD
sd = SD('data.hdf', SDC.READ)
sd.datasets()

假设它们在 HDF4 文件中存储为 32 位浮点数,那么您可以根据需要以尽可能高的精度打印这些值:

image = sd.datasets.select('3d_image_name')
print "%.23f" % (image[2][2][2],)

这会将 (x,y,z) = (2,2,2) 处的浮点数打印到小数点后 23 位。

【讨论】:

以上是关于以源文件的全精度将 HDF4 数组转储到 ascii的主要内容,如果未能解决你的问题,请参考以下文章

将文件转储到字符串数组中

PHP 将数组转储到文件中

在不损失精度的情况下将双精度从 C++ 转移到 python

无法将双精度的 NSArray 保存到文件 ios

gdal3.0编译集成hdf4库和hdf5库的方法

在java中,如何清除每个方法中的字节[]数组以保护值免受内存转储?