- 积分
- 2228
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-26
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2012-7-26 10:36:34
|
显示全部楼层
mofangbao 发表于 2012-7-26 08:43
楼主自己解决了吧?不妨说一下方法吧。
最近大家可能放假回家了,所以问题有时候会比较难解决
恩,自己解决了,脚本如下:
begin
f = addfile("mf_ERA40.nc","r")
system("/bin/rm "+"WQ.nc")
fo = addfile("WQ.nc","c") ; create output file
; lat = f->lat
; lon = f->lon
r = 6371000.00
pi = 3.1415926
d = r*abs((5.0-0.0)*pi/180.0)
x = f->UQ
xx = month_to_season(x,"JJA")
printVarSummary(xx)
yy = xx
yy(:,0,:) = xx@_FillValue
yy(:,72,:) = xx@_FillValue
do i = 1,71,1
do k = 0,43,1
yy(k,i,0)=(xx(k,i-1,143)+xx(k,i,143)+xx(k,i+1,143))/3*d
end do
end do
do j =1,143,1
do i = 1,71,1
do k = 0,43,1
yy(k,i,j)=(xx(k,i-1,j-1)+xx(k,i,j-1)+xx(k,i+1,j-1))/3*d
end do
end do
end do
delete(xx)
delete(x)
printVarSummary(yy)
filedimdef(fo,"time",-1,True)
fo->WQ = yy
end
同时请教清风,我之前将这段写成了这样:
yy = xx
yy(:,0,:) = xx@_FillValue
yy(:,72,:) = xx@_FillValue
do j = 1,143,1
if (lon(j).eq.0.0) then
do i = 1,71,1
do k = 0,43,1
yy(k,i,j-1)=(xx(k,i-1,143)+xx(k,i,143)+xx(k,i+1,143))/3*d
end do
end do
else
do i = 1,71,1
do k = 0,43,1
yy(k,i,j)=(xx(k,i-1,j-1)+xx(k,i,j-1)+xx(k,i+1,j-1))/3*d
end do
end do
end if
end do
得到的nc文件用grads画图和现在的基本一致,但是在0经度的地方有个缺口,像拼接的,这是为什么呢?
|
|