为HDF5文件添加结构 - HDF5中类似于NetCDF“约定”的等价物

6
NetCDF4有约定公约,用于向NetCDF添加结构。我正在寻找类似的东西,但是针对的是HDF5。

我的总体目标是以标准方式向我的HDF5文件添加结构。我想做类似于HDF5用图像定义类型的事情,使用组和数据集上的属性~像:

CLASS: IMAGE
IMAGE_VERSION: 1.2
IMAGE_SUBCLASS: IMAGE_TRUECOLOR
...

但据我所知,图像规范是独立的。也许我应该重用NetCDF的“约定”?
更新:
我知道NetCDF4是建立在HDF5之上的。在这种情况下,我们有来自湍流模拟和实验的数据,而不是地理数据。这些数据通常限于<= 4D。我们已经使用HDF5存储了这些数据,但我们没有制定标准。伪标准格式只是在组织内部自然形成的。
2个回答

3

NetCDF4文件实际上是使用HDF5格式存储的(http://www.unidata.ucar.edu/publications/factsheets/current/factsheet_netcdf.pdf),但它们使用netCDF4约定来定义属性、维度等。文件是自描述的,这是一个重要的优点。没有netCDF4的HDF5允许在定义数据时更加自由。您是否有特定的原因想要使用HDF5而不是netCDF4?

如果您没有特定的约束条件(比如一个在netCDF4文件上出现错误的模型或可视化软件),我会建议使用netCDF。NCO/CDO操作符、ncl(ncl也接受HDF5)、idl、netCDF4 Python模块、ferret等都可以使用netCDF4。个人认为,对于存储气候或气象数据,netCDF4非常方便。它已经有很多操作符,并且您不必费力开发自己的数据标准——这已经为您完成了。CMOR(http://cmip-pcmdi.llnl.gov/cmip5/output_req.html)可用于编写符合CF规范的气候数据。它被用于最近的气候模型比较项目。
另一方面,如果您有其他类型的数据,并且正在寻找一些非常特定的功能,需要更定制化的文件格式,那么可能值得使用HDF5。请在评论中更好地说明您的需求,谢谢!
更新:
很不幸,与netCDF相比,HDF5文件的变量和字段名称标准不太清晰和有组织,因为这是像CMIP或CORDEX这样的大型气候建模项目选择的格式。问题本质上归结于使用EOSDIS或CF约定,但是找到当前维护的库以实现这些标准并具有清晰文档并不容易(如果是这样,您可能不会提出问题)。
如果您真的只想要一个标准,NASA在此痛苦地详细解释了所有可能的元数据标准:http://gcmd.nasa.gov/add/standards/index.html

关于信息,HDF-EOS和HDF5并不完全相同的格式(HDF-EOS已包含地图数据,并且是地球科学数据的标准格式),因此我不知道这种格式是否会对您过于限制。使用此格式的工具在这里描述:http://hdfeos.net/software/tool.php 并在这里概述:http://hdfeos.org/help/reference/HTIC_Brochure_Examples.pdf

如果您仍然更喜欢使用HDF5,则最好从NASA下载一个以HDF5格式为基础的文件,用作创建自己选择的语言工具的基础。以下是使用Python、MATLAB、IDL和NCL进行数据处理和可视化的HDF5、HDF4和HDF-EOS格式的综合示例列表:http://hdfeos.net/zoo/index_openLAADS_Examples.php#MODIS

基本问题在于NASA提供了工具,使您可以使用他们的数据,但不一定是为了在自己的实验室环境中重新创建类似结构的数据。
以下是来自NASA地球科学数据的更多规格/信息: MERRA产品 https://gmao.gsfc.nasa.gov/products/documents/MERRA_File_Specification.pdf GrADS兼容的HDF5信息 http://disc.sci.gsfc.nasa.gov/recipes/?q=recipes/How-to-Read-Data-in-HDF-5-Format-with-GrADS NASA大气科学数据中心的HDF数据操作工具: https://eosweb.larc.nasa.gov/HBDOCS/hdf_data_manipulation.html 希望这能有所帮助。

请查看更新。我不是很喜欢NetCDF4。它有点过时了。而且我们已经熟悉了HDF5。我们将以某种方式对我们的HDF5数据进行结构化处理。我只是在寻找标准 - spinkus
是的,我想NetCDF4并不适合所有人。我曾经处理气候数据,所以我喜欢它(ncl有很多内置东西),但我的新实验室也不是很喜欢它。请查看我的更新答案,了解有关HDF5标准的更多信息。不幸的是,我找不到任何实现数据标准的巧妙库。而且由于这不是地理数据,您可能与像我这样的气候数据用户没有相同的需求。 - SpicyBaguette
感谢您提供如此全面的答案。 - spinkus

2
对于标准的最佳选择取决于您想要存储的数据类型。CF约定对于地理参考测量数据非常有用,例如使用卫星测量的数据。了解您的数据包含什么将会很有帮助。
假设您有地理参考数据,我认为您有两个选择:
1.像您建议的那样,在HDF中重复使用CF约定。有更多的人在研究这个问题,快速的谷歌搜索给出了这个结果。
2.HDF-EOS(免责声明,我从未使用过)。它使用特定结构将数据存储在HDF文件中,但似乎需要扩展库才能使用。我没有找到结构的规范,只有一个API。此外,NASA之外似乎没有活跃的社区。
因此,我可能会选择选项1:在您的HDF文件中使用CF约定,并查看第三方工具(例如Panoply)是否可以利用它。

我们没有地理数据。不过,HDF-EOS值得更仔细地研究一下。我猜这是NetCDF的HDF5 CF约定? - spinkus
由于您没有地理数据,我认为HDF-EOS没有太大用处。此外,CF约定的一半不适用。为什么不在组织内制定一个“官方”标准?您可以从头开始或从CF约定开始,剥离不需要的内容,并加以详细说明。在我看来,对于变量名称、必需属性、维度顺序、维度比例等方面有惯例是很好的。此外,一个检查文件是否符合规范的工具可能会很有用。 - titusjan
是的,这正是我们决定采取的路径 - 符合组织标准。我们正在从CF Convention中获取我们需要的内容(我们不需要太多),然后将其与HDF-EOS进行交叉参考。我们意识到在第一版草案中可能无法满足每个人的需求,但我们将建立一个原则,即在更新标准时,未来的人们应首先参考CF Conventions。 - spinkus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接