我是 h5py 的新手,我的实际任务是创建一个带有 MODIS 子集的 hdf5 堆栈。我可以创建包含所有好数据的堆栈,但我无法创建或附加空间参考系统。目标是将堆栈中的单个数据集加载到 ArcGIS 中的查看器中,并且应将其放置在正确的位置。
如何为堆栈提供正确的空间/投影信息?
您可以将空间坐标附加到具有维度比例的 HDF5 数据集 - 这些只是与您的第一个数据集相关联的其他数据集。如果您想指示特定维度具有某些物理单位,您可以标记该维度,这是使用 HDF5 维度比例 API 完成的:H5DSset_label()
。
在 h5py 中可以使用h5py.dims.create_scale()
和h5py.dims.attach_scale()
和h5py.dims.label
来设置标签的尺寸比例。
例如,要附加两个数据集以foo.h5:/data
指定纬度和经度,并且它们以度为单位,您可以首先将它们的标签设置如下(其中 f 是 HDF5 文件):
f['data'].dims[0].label = 'degrees'
f['data'].dims[1].label = 'degrees'
然后要实际添加坐标,您首先需要创建一个比例,然后附加数据集(其中f['phi']
包含您的坐标的预先存在的数据集):
f['data'].dims.create_scale(f['phi'], 'latitude')
f['data'].dims[1].attach_scale(f['phi'])
然后,您可以使用
[dim.label for dim in f['data'].dims]
并且尺寸随
f['data'].dims[1][0]
或者
f['data'].dims[1]['latitude']