0

我在 GeoTIFF(地理参考 TIFF 图像)中有一个文件,我可以使用 GDAL 在 Python 中加载它并转换为 Numpy 数组,然后我的程序使用 GDAL 从文件中获取的地理参考信息进行处理。

由于我想删除 GDAL 依赖项,我计划将 GeoTIFF 信息序列化为另一种文件格式(想到 JSON),并满足以下要求:

  • 文件体积小;
  • 快速访问;
  • 如果可能,随机访问(切片);
  • Numpy 友好(不需要花哨的类或其他模块依赖来解码);
  • 简单/直接/“人类可读”;
  • 可以很容易地被其他语言的其他脚本使用,而不是晦涩难懂;

JSON 可以正常工作,但我担心它不是最小的,也不是最快的访问格式。由于数组类型是uint16,二进制可能是一个选项。泡菜可能太神秘了。CSV 将难以将地理参考信息(角坐标和分辨率)与网格值分开。

谢谢阅读!

4

1 回答 1

0

我不熟悉 GeoTIFF 信息,但对于存储平面数据,我强烈推荐hdf5格式,它有一组很好的 python 绑定,称为h5py。这是一个简单的示例,展示了使用它是多么容易:

>>> import h5py
>>> f = h5py.File('data.hdf5')
>>> a = np.arange(12.0).reshape((4,3))
>>> a
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])
>>> f.create_dataset('array', data=a)
<HDF5 dataset "array": shape (4, 3), type "<f8">
>>> f['array'].attrs['info'] = 'some data I want to store'
>>> f['array'].attrs['date'] = (6, 21, 2012)
>>> f.close()
>>> f = h5py.File('data.hdf5')
>>> f['array']
<HDF5 dataset "array": shape (4, 3), type "<f8">
>>> f['array'].value
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])
>>> f['array'].attrs['info']
'some data I want to store'
>>> f['array'].attrs['date']
array([   6,   21, 2012])
于 2012-06-22T00:51:59.870 回答