首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GeoTIFF作为Numpy数组打开的文件中序列化的最佳方法

问将GeoTIFF作为Numpy数组打开的文件中序列化的最佳方法
EN

Stack Overflow用户
提问于 2012-06-21 20:20:30
回答 1查看 1.3K关注 0票数 0

我在GeoTIFF (geo引用的TIFF映像)中有一个文件,我可以使用GDAL加载该文件,并将其转换为Numpy数组,然后我的程序使用GDAL从该文件中获取的地理引用信息来处理该数组。

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

  • 文件大小小;
  • 快速存取;
  • 如有可能,随机存取(切片);
  • Numpy友好(不需要花哨的类或其他模块依赖来解码);
  • 简单/直截了当/“可读的”;
  • 可以很容易地被其他语言的脚本使用,而不是神秘的;

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

感谢您的阅读!

EN

回答 1

Stack Overflow用户

发布于 2012-06-22 00:51:59

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

代码语言:javascript
复制
>>> 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])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11146106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档