- 积分
- 370
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-9-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小白一枚 下载了nc日平均高度场数据hgt.998.nc
编写fwrite.gs 文件提取数据写成199806.grd文件,程序如下:
*******************************************************
'reinit'
'sdfopen e:\nc\hgt.1998.nc'
'set gxout fwrite'
'set fwrite e:\nc\199806.grd'
'set x 1 144'
'set y 1 73'
'set lev 500'
tt=152
while(tt<=212)
'set t 'tt''
*1998年6月1日-7月31日
'd hgt'
'print'
'c'
tt=tt+1
endwhile
'disable fwrite'
'reinit'
**********************************
为检验提取的grd文件是否正确,用sdfopen语句直接打开nc文件画图以及编写ctl描述文件用grd文件画图,对比如下:
通过对比可知,grd文件出图与nc文件直接出图是一致的,证明grd文件的数据提取是正确的。
*******************************************************************************************
由于要对数据进行处理,现在用fortran编程处理grd文件并且输出成十进制的txt文件以方便后续操作
本质问题就是fortran读取二进制数据的问题
可是发现输出的数据存在明显的错误
因为读取的是高度场,所以数据应该是5880.5840等
但是输出的数据缺不是,而是很奇怪的值。
我个人判断应该是f90程序的问题,但是实在查不出错误在哪里
求大神指教。
*********************************************************
f90程序如下:
implicit none
integer x,y,t
integer,parameter::nx=144,ny=73,nt=61
integer,dimension(3)::hgt(nx,ny,nt)
!integer,dimension(3)::hgt(nx,ny)
integer irec
! ------------------------------------------------------------------------
! data nt 1998.06.01-1998.07.31
!--------------------------------------------------------------------------
open(10,file='e:\nc\199806.grd',form='binary',recl=nx*ny*nt)
do t=1,nt
do y=1,ny
do x=1,nx
read(10) hgt(x,y,t)
enddo
enddo
enddo
close(10)
open(20,file='e:\nc\199806.txt')
do t=1,nt
do y=1,ny
do x=1,nx
write(20,*) hgt(x,y,t)
enddo
enddo
enddo
close(20)
end
************************************
输出的txt截图如下:
|
|