program main
implicit none
integer*4,parameter ::Mrow=411, Mcol=491,mxp=201801
real*4 ::grid1(Mcol,Mrow)
integer*4 irow,icol,status, kk0
open(7,file='xd10kmlr1.bil',form="unformatted",access='direct',recl=mcol*4,iostat=status)
open(8,file="bil.txt")
kk0 = 0
do icol=1,mcol
do irow=1,mrow
kk0=kk0+1
read(7,rec=kk0)grid1(icol,irow)
print*,icol ,irow,grid1(icol,irow)
! read(20, rec=kk0)(grid2(icol,irow,i),i=1,MXP)
write(8,"(i3,2x,i3,2x,f7.2)") icol ,irow,grid1(icol,irow)
end do
end do
close(7)
end
QQ截图20170901110648.png (7.33 KB, 下载次数: 332)
QQ截图20170901114041.png (37.11 KB, 下载次数: 317)
fcode 发表于 2017-9-1 11:40
可以考虑用 stream 方式读写,而不用 direct
fcode 发表于 2017-9-1 11:40
可以考虑用 stream 方式读写,而不用 direct
program main
implicit none
integer,parameter ::Mrow=411, Mcol=491
integer ::grid(Mcol,Mrow)
integer ::irow,icol
open(7,file='xdem10km1.bil',access='stream',form="unformatted")
open(8,file="bil.txt")
do icol=1,mcol
do irow=1,mrow
read(7)grid(icol,irow)
print*,icol ,irow,grid(icol,irow)
! read(20, rec=kk0)(grid2(icol,irow,i),i=1,MXP)
write(8,*) icol ,irow,grid(icol,irow)
end do
end do
close(7)
end
wxy 发表于 2017-9-2 12:21
还想请教一下,我在读取32位数据时可以491*411全部读出来,但换成16位格式数据时
只读取出一半,而且读取 ...
chiangtp 发表于 2017-9-2 15:44
1. 16位格式数据, 2-Byte INTEGER? 請試試
INTEGER, PARAMETER :: ibyte2 = SELECTED_INT_KIND(r= 4) ...
wxy 发表于 2017-9-2 12:21
还想请教一下,我在读取32位数据时可以491*411全部读出来,但换成16位格式数据时
只读取出一半,而且读取 ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |