主题:用grads把grib转成二进制后
我手上有一个用grads把grib转成的二进制资料,221*256的格点,共120个时次,只有一个变量。
我用的是gfortran
分别用以下两段语句都能读出数据
open(1,file=fn,form='unformatted')
do t = 1, 120
read(1)((u(i,j,t),i=1,221),j=1,256)
enddo
-----------------------------------------------
open(1,file=fn,access='direct',recl=221*256*4)
do t = 1, 120
read(1,rec=t)((u(i,j,t),i=1,221),j=1,256)
enddo
但两组数据有差异,t=1的时候,两组数据的第一个值分别是-9.99E+008(缺省值),3.17E-040,然后下面的数全部错位。t=2的时候,第二段程序读出的数据出现了两个3.17E-040,下面的数错位更厉害。
另外就是想问一下,是不是sequential写入的二进制文件可以direct读出,但是direct写入的不能sequential读出?因为我感觉那个二进制像是顺序写入的,但为什么读出来不会出错只是值有点儿问题呢?
希望谁能帮助一下,谢谢
我用的是gfortran
分别用以下两段语句都能读出数据
open(1,file=fn,form='unformatted')
do t = 1, 120
read(1)((u(i,j,t),i=1,221),j=1,256)
enddo
-----------------------------------------------
open(1,file=fn,access='direct',recl=221*256*4)
do t = 1, 120
read(1,rec=t)((u(i,j,t),i=1,221),j=1,256)
enddo
但两组数据有差异,t=1的时候,两组数据的第一个值分别是-9.99E+008(缺省值),3.17E-040,然后下面的数全部错位。t=2的时候,第二段程序读出的数据出现了两个3.17E-040,下面的数错位更厉害。
另外就是想问一下,是不是sequential写入的二进制文件可以direct读出,但是direct写入的不能sequential读出?因为我感觉那个二进制像是顺序写入的,但为什么读出来不会出错只是值有点儿问题呢?
希望谁能帮助一下,谢谢