提取nc资料的逐月数据[grads]

**原帖地址http://bbs.06climate.com/forum.php?mod=viewthread&tid=20302
**我还在尝试搞清楚出来的grd在matlab里怎么排布。。。想不明白0 0!
'reinit'
*先设置各月的名称
mon.1=Jan;mon.2=Feb;mon.3=Mar;mon.4=Apr;mon.5=May;mon.6=Jun;
mon.7=Jul;mon.8=Aug;mon.9=Sep;mon.10=Oct;mon.11=Nov;mon.12=Dec
*文件读入,准备输出
'sdfopen E:\F\essay\data\data\NCEP\pres.mon.mean.nc'
'set gxout fwrite'
imon=1
while(imon<=12)
      'set fwrite E:\F\essay\data\data\NCEP\div\pres\'mon.imon'_P.grd'
y=1948*资料起始年
y1=1960
y2=2013
while(y1<=y2)
ta=(y1-y)*12+imon
'set t 'ta''
nz=1
*地面气压仅为一层数据,故不循环,而shum,U,Vwnd都是8层
*while(nz<=8)
'set z 'nz''
'set x 29 57'
'set y 43 60'
*这里注意一下,当X,Y输出的时候设定了其实,CTL文件描述相应的要进行修改
*(xdef 28 liner 70 2.5
        ydef 17 liner 15 2.5)
'd pres'
*nz=nz+1
*endwhile
y1=y1+1
endwhile
'disable fwrite'
imon=imon+1
endwhile
;

====================Fortran处理成txt================

program main
implicit none
integer it,iz,n,m,i,j
real::shum(29,17,8,792)
n=29
m=17
open (10,file='e:/llx/shum.grd',form='binary')

do it=1,792
do iz=1,8
read(10 )((shum(i,j,iz,it),i=1,n),j=1,m)
end do
end do
close(10)

open(12,file='e:/llx/shuiqi/shum1.txt',status='new')
do it=139,792 !我所需要截取的时间
do iz=1,8
write(12,*) ((shum(i,j,iz,it),i=1,n),j=1,m)
end do
end do

close(12)

end

其中①it,iz是GRD文件中时间和高度的格点数;

②n,m分别是X方向和Y方向上格点数,为“大数-小数+1”

i.e.:'set x 29 57'则i=57-29+1

③write()函数在写入grd时写“write(12)”、写入txt时为“write(12,*)”

④写成grd的时候必须时间,高度,纬度,经度的顺序,怎么写进去怎么读出来


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值