关于NetCDF与HDF5存储科学数据的意见?

Jas*_*n S 67 hdf5 netcdf

有没有足够的经验w/NetCDF和HDF5给出一些关于它们的优缺点作为存储科学数据的方式?

我已经使用过HDF5并希望通过Java进行读/写,但是接口本质上是C库的包装器,我发现这让人感到困惑,所以NetCDF看起来很吸引人,但我几乎一无所知.

编辑:我的应用程序"仅"用于数据记录,因此我得到一个具有自描述格式的文件.对我来说,重要的功能是能够添加任意元数据,具有快速写入访问权限以附加到字节数组,以及具有单写入器/多读取器并发(强烈首选但不是必须的.​​NetCDF文档说他们有SWMR但是没有不能说它们是否支持任何机制来确保两个作者不能同时打开同一个文件并带来灾难性后果.我喜欢HDF5的层次结构(特别是我喜欢有向无环图层次结构,比"常规"文件系统类层次结构更灵活),现在正在阅读NetCDF文档...如果它只允许一个数据集文件然后它可能不适合我.:(

更新 - 看起来像NetCDF-Java从netCDF-4文件读取,但只从不支持分层组的netCDF-3文件写入.织补.

更新2009年7月14日:我开始对Java中的HDF5感到非常不满.可用的库不是很好,它有一些主要的绊脚石,与Java的抽象层(复合数据类型)有关.C的一个很好的文件格式,但看起来我只是输了.> :(

Ste*_*ini 30

我强烈建议您使用HDF5而不是NetCDF.NetCDF是平的,如果你不能对东西进行分类,它会在一段时间后变得非常脏.当然分类也是一个争论的问题,但至少你有这种灵活性.

当我写Q5Cost时,我们对HDF5与NetCDF进行了准确的评估,最终的结果是HDF5.

  • 答案已经过时 - netCDF现在建立在HDF5上 (40认同)

Mik*_*ike 22

从长远来看,我不得不承认使用HDF5非常容易.将简单的数据结构转换为NetCDF格式并不难,但是在未来操纵它们是一种痛苦.

该"H"在HDF5代表"heirarchical",这翻译(我反正)到非常简单的方法来操作数据,仅通过中移动节点和从其他地方引用节点.

我可以问这是一个什么样的项目?我将它们用于许多HPC科学建模任务.我可以假设你也这样做吗?如果是这样,我看到的趋势是人们转向HDF5,但在您的特定领域可能会有所不同.

然而,你最终会去,祝你好运!

  • afaik,NetCDF4是一种愚蠢的HDF5,因此对于以前版本的NetCDF来说,它是熟悉的.http://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2010/msg00170.html (2认同)

Edw*_*ett 16

从版本4.0(2008)开始,NetCDF可以读取和写入大多数HDF5文件,并通过增强型数据模型提供对HDF5的分层功能的访问.

HDF5功能非常丰富,并具有一些出色的性能.

NetCDF具有更简单的API和更广泛的工具库.有许多工具可以处理netCDF数据.


小智 9

我知道这是一篇较旧的帖子,原始海报已经表明他们已经开始了,但对于那些最终在这里的人来说...... netCDF-Java库(截至4.3.13)通过以下方式提供netCDF-4写入支持netCDF C库.它仍处于测试阶段,但确实有效,反馈肯定会受到赞赏!

有关更多详细信息,请参阅netCDF-Java 参考文档.


Phi*_*ler 8

尝试在每个中编写一些小样本应用程序,并比较经验.如果你的代码未来可扩展到并行执行(通过MPI等)对你很重要,我知道HDF有一个并行实现,人们不断努力改进.我不确定NetCDF.

延迟编辑:对于NetCDF,现在有来自Argonne的Parallel NetCDF.它运作良好,开发团队非常积极地进一步改进它.


Joh*_*ron 6

1)Netcdf-4 C库是HDF-5 C库之上的一层.该API被认为比HDF5库更简单,但最终您具有几乎相同的功能.Netcdf不支持图形,但HDF5支持图形.事实上,我认为HDF并不能阻止图表中的周期.

2)HDF组在HDF-5 C库之上有一个Java API.

3)Unidata有Netcdf-Java库,它是纯Java,但只能读取HDF-5.