- 积分
- 2077
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-9-3
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
日/时 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 60 | 299 | 69 | 27 | 53 | 20 | 33 | 11 | 14 | 11 | 1 | 0 | 0 | 0 | 0 | 0 | 例如只有上表这样单站一天24小时的逐小时降水量,想转换成grads能读取的二进制,再用grads画成折线图。
我尝试了两种办法,第一用Fortran转换成二进制,类似站点数据转换为格点数据,程序借鉴气象家园的,如下
program zhexian
implicit none
character*8 stid(10)
real lon(10),lat(10),rain(10),tim
integer i,nlev,flag
do i=1,10
lon(i)=90
lat(i)=120
enddo
open(11,file='e:/fortran/zhexian/test3.txt',status='old')
open(12,file='e:/fortran/zhexian/test33.txt',form='formatted',status='unknown')
open(13,file='e:/fortran/zhexian/test33.dat',form='binary',status='unknown')
print*,"ok"
10 read(11,*,end=100)rain
print*,rain
goto 10
100 continue
do i=1,10
tim=0.0
nlev=1
flag=1
write(12,*)12345,lat(i),lon(i),nlev,flag,rain(i)
write(13)stid(i),lat(i),lon(i),nlev,flag,rain(i)
nlev=0
write(13)stid,lat,lon,nlev,flag
enddo
close(11)
close(12)
close(13)
end
这里的站点、经度、纬度都是瞎写的,因为对结果没影响。可是我觉得就是一个站点资料,这样做有点太麻烦了,而且最后还没生成map文件。
然后想到另外一个方法,就是直接在grads脚本上赋值,类似这样:
'reinit'
'open e:/fortran/zhexian/new.ctl'
'set gxout fwrite'
'set fwrite e:/fortran/zhexian/test444.dat'
'set t '1
'define rain1=5'
'set t '2
'define rain2=12'
'set t '3
'define rain3=17'
'set t '4
'define rain4=80.5'
'disable fwrite'
这个没写完,因为不知道要怎样循环输出,感觉第二个方法简单点,应该可行,所以想请教大家,要怎样修改,或者有其他方法,谢谢了~~
|
|