なぜ NC を HDF5 に変換するのですか?
一部の科学的パイプラインやツールは HDF5 を受け入れますが、専用の netCDF ドライバを欠いている場合があります。変換することで、netCDF ライブラリを必要とせずに、h5py や HDFView などの HDF5 対応リーダーで開くことができるプレーンな HDF5 ファイルが作成されます。
NC から HDF5 への変換方法
nccopy FREE
nccopy -k netCDF-4 input.nc output.nc を実行して、クラシックな netCDF ファイルを netCDF-4/HDF5 形式に変換します。ダウンストリームのツールがその拡張子を必要とする場合は、出力を .hdf5 にリネームしてください。
Python (netCDF4 + h5py) OPEN-SOURCE
pip install netCDF4 h5py でインストールし、netCDF4.Dataset() で .nc ファイルを読み込み、h5py.File() と create_dataset() を使用して各変数を HDF5 ファイルに書き込みます。
これらの形式について
品質と注意点
- netCDF-4 は HDF5 上に直接構築されています。
ncdump -k yourfile.ncがnetCDF-4と報告する場合、変換なしでファイルを.hdf5にリネームして h5py や HDFView で開くことができます。 - クラシックな netCDF ファイルは先頭バイトが
CDF(16進数43 44 46) で始まり、HDF5 ではありません。これらを変換するにはnccopyまたは Python による書き換えが必要です。 - 逆は真ではありません。プレーンな HDF5 ファイルは有効な netCDF ではないため、内部レイアウトを netCDF の規約に合わせて再構築せずに
.hdf5を.ncにリネームしても機能しません。
よくある質問
NC ファイルがすでに HDF5 かどうかを確認するにはどうすればよいですか?
ncdump -k yourfile.nc を実行します。netCDF-4 が返されれば、そのファイルは内部的に HDF5 です。また、最初の2バイトが 89 48 (HDF5 シグネチャ) かどうかを確認することでも判断できます。h5py は変換されたファイルを直接読み取ることができますか?
はい。
nccopy で変換した後、ファイルは有効な HDF5 コンテナになります。内部構造は netCDF の命名規則に従いますが、変数名とデータはそのまま保持されます。変換中にメタデータは保持されますか?
nccopy によって変数のデータと次元は保持されます。h5py を直接使用する場合、h5py は netCDF のメタデータを自動的に転送しないため、属性を手動でコピーする必要があります。