如何在Python中部分读取2d卫星文件? (binary,fromfile)

时间:2016-10-20 12:06:46

标签: python arrays numpy binary fromfile

我有很多由二维组成的卫星数据。

(我将H5转换为不包含纬度信息的2d数组数据  我另外制作了Lat / Lon信息数据。)

我在一个数据中知道真正的Lat / Lon协调和网格协调

如何在Python中部分阅读2d卫星文件?

" numpy.fromfile"通常用于读取二进制文件。

如果我在numpy.fromfile中使用option作为count,我可以部分读取二进制文件。

但是我想在一个数据中跳过保存内存的前记录。

例如,我有3x3 2d数据如下:

  

python

     

a = [[1,2,3]       [4,5,6]       [7,8,9]

我刚刚在Python中阅读了[3] [0]。 (结果= 7)

当我在Fortran中读取文件时,我使用了" recl,rec"。

  

的Fortran

     

打开(1,文件=' exsmaple.bin',访问='直接',recl = 4)! recl = 4表示4 btype

     

读取(1,rec = lat * x-lon)文件名

     

接近(1)

lat表示数据中纬度的位置。 (在上面的示例中,lat = 3; Fortran中的起始编号为1。)

lon表示经度在数据中的位置。 (在上面的示例中,lon = 1; Fortran中的起始编号为1.)

x不是。行。 (x = 3,上面的例子,数组是3x3)

我可以读取文件,只使用4个字节的内存。

我想知道Python中的类似方法。

请给我特别的信息以节省时间和记忆。

感谢您阅读我的问题。

2016年10月28日。 溶液

  

  数据= [1,2,3,4,5,6,7,8,9],dtype = int8,filename = name

     

a = np.memmap(name,dtype =' int8',mode =' r',shape =(1),offset = 6)

     

打印[0]

     

结果: 7

2 个答案:

答案 0 :(得分:0)

阅读.h5文件:

import h5py
ds = h5py.File(filename, "r")
variable = ds['variable_name']

答案 1 :(得分:0)

很难按照您的描述进行操作。一些适当的代码缩进将有助于解决您的英语问题。

所以你有关于H5文件的数据。最简单的方法是h5py将它加载到Python / numpy会话中,并从这些数组中选择必要的数据。

但听起来好像你已经把这部分数据写成了一个普通的'二进制文件。知道你是怎么做的可能会有所帮助。这个2d也是以什么方式?

np.fromfile读取文件,就像它是1d一样。你能读到这个文件,最多可以看到count吗?并使用正确的dtype

np.fromfile接受一个打开的文件。所以我认为您可以打开文件,使用seek跳过,然后从那里读取count项。但我还没有测试过这个想法。