|
本帖最后由 紫雪封尘 于 2020-12-10 16:22 编辑
我最近用Fortran 读取SUN工作站格式sgy文件,但是读取结果与segy分析工具和matlab 读取结果不一致 ,我感觉程序有问题,下面附上我的代码,请各位老师指教
open(70,file=FileName1, & !打开segy文件
access='stream', & !<< 流访问,即按字节访问文件
form='unformatted', &
CONVERT='BIG_ENDIAN', & !<< IEEE Big Endian ^^ Little_ENDIAN
iostat=ios, &
iomsg=iom)
Do i=1,ntrace
irec=3600+(i-1)*(nt*4+240) !读取的二进制位置
read(70,pos=irec+1) head
write(19,pos=(i-1)*240+1) head
read(70,pos=73+irec) sx(i) !道头中73-76字节表示炮点x坐标
write(13,pos=(i-1)*4+1) sx(i)
read(70,pos=77+irec) sy(i) !道头中73-76字节表示炮点y坐标
!!道头中77-80字节表示炮点y坐标
write(14,pos=(i-1)*4+1) sy(i)
read(70,pos=81+irec) rx(i) !道头中81-84字节表示检波点x坐标
write(15,pos=(i-1)*4+1) rx(i)
read(70,pos=85+irec) ry(i) !道头中85-88字节表示检波点y坐标
write(16,pos=(i-1)*4+1) ry(i)
read(70,pos=241+irec) (sgydata(j,i),j=1,nt)!!读取sgy数据
write(*,*)sgydata(1,i)
End DO
|
|