首页 > 解决方案 > 如何读取 LZF 压缩的 HDF5 数据集?

问题描述

我正在尝试读取具有以下属性的数据集:

在此处输入图像描述

我正在为 Visual Studio 2017 使用 HDF5 编译的静态库。我主要使用 C++ API,读取非压缩数据集没有问题。在这种情况下,我应该如何读取 LZF 压缩数据集?

标签: c++hdf5lzf

解决方案


您需要构建 lzf 过滤器并使其可用于 HDF5。
h5py repo有一些关于如何做到这一点的信息。

基本上,您需要克隆 h5py 存储库,将 lzf 过滤器构建为共享库,然后将其放入 /usr/local/hdf5/lib/plugin 并可选择将环境变量指向该位置:

git clone https://github.com/h5py/h5py.git
cd h5py/lzf && gcc -O2 -fPIC -shared lzf/*.c lzf_filter.c -o liblzf_filter.so
mkdir -p /usr/local/hdf5/lib/plugin
cp liblzf_filter.so /usr/local/hdf5/lib/plugin

然后,您可以使用 h5dump dataset.hdf5 对其进行测试。如果 lzf 过滤器被正确检测并加载,它应该转储压缩数据集的内容。如果不是,它将显示错误。


推荐阅读