File io 如何使用GrADS读取/存储多个文件?
我想知道是否有人可以帮助我找到有关这段代码的问题,在毕业生的语言 我想读很多文件,计算并存储它们,但当我在GraDS中执行这些操作时,我对所有输入文件都有相同的答案 有人能帮我解决这个问题吗File io 如何使用GrADS读取/存储多个文件?,file-io,grads,File Io,Grads,我想知道是否有人可以帮助我找到有关这段代码的问题,在毕业生的语言 我想读很多文件,计算并存储它们,但当我在GraDS中执行这些操作时,我对所有输入文件都有相同的答案 有人能帮我解决这个问题吗 'reinit' ****Modify here****** var = v10 ano = 1980 while(ano <= 2013) *Desire point local = IAG **lat = -22.3 **lon = 314.62
'reinit'
****Modify here******
var = v10
ano = 1980
while(ano <= 2013)
*Desire point
local = IAG
**lat = -22.3
**lon = 314.62
latInitialP = -34.58
lonInitialP = 305.43
*******************************************************
'sdfopen C:\Pesquisa_Michelle\dados_amandenha\V10m_'ano'.nc'
*Storing out
'set gxout print'
'set prnopts %10.2f 1 1'
in = 1
test = 1460
if ( math_fmod(ano,4) = 0 )
test = 1464
endif
while(in <= test)
'set t 'in
in2 = in + 3
say in
say in2
'define m = ave('var',t='in',t='in2')'
'set lat 'latInitialP''
'set lon 'lonInitialP''
'd m'
valor = sublin(result,2)
lixo = write('C:\Pesquisa_Michelle\dados_amandenha\'var'_'ano'.txt',valor)
in = in + 4
endwhile
lixo = close(''var'_'ano'.txt')
ano = ano + 1
endwhile
'reinit'
****在此修改******
var=v10
ano=1980
然而,(No.p>问题是,在主循环中,您永远不会关闭输入数据文件或重新设置梯度。请考虑在这里打开文件:。
% grads -l
ga-> open data/semicircle-qv14_s.ctl
Scanning description file: data/semicircle-qv14_s.ctl
Data file data/semicircle-qv14_00%y4_s.dat is open as file 1
LON set to -79.5 79.5
LAT set to -79.5 79.5
LEV set to 0.05 0.05
Time values set: 0:7:3:0 0:7:3:0
E set to 1 1
请注意,它显示的是打开为文件1
。现在我将把选择范围缩小到单个网格点,并显示压力:
ga-> set lat 0
LAT set to 0.125 0.125
ga-> set lon 0
LON set to 0.125 0.125
ga-> set lev 5
LEV set to 4.92368 4.92368
ga-> d prs
Result value = 55198.4
压力为551 hPa。看起来不错。现在让我们打开另一个数据文件,而不关闭此文件:
ga-> open data-fine/semicircle-qv14_s.ctl
Scanning description file: data-fine/semicircle-qv14_s.ctl
Data file data-fine/semicircle-qv14_00%y4_s.dat is open as file 2
请注意,以文件2的形式打开。让我们显示来自此文件的压力:
ga-> d prs
Result value = 55198.4
等等,这是相同的值吗?是的,因为我们仍然从文件1显示,这里的prs
与写入prs.1
相同。如果我们想从第二个文件获得压力,我们需要使用prs.2
:
ga-> d prs.2
Result value = -9.99e+08
不同的结果(由于第二个文件中此时没有数据,因此缺少此打开)
有两种方法可以解决这个问题
在循环中递增ano
的位置,添加命令close 1
。这将关闭输入数据文件,以便在加载下一个数据文件时,显示命令将正确显示其内容
在循环的顶部,在sdfopen
之前添加reinit
,这将重置许多内容,包括关闭所有打开的文件。您可以在每次循环迭代中设置输出,因此这对您来说应该不是问题
您收到了什么错误(消息)?亲爱的,我刚刚更新了更多信息。请您检查一下,好吗?@caseyfortran与它有什么共同点?谢谢您的回答。我采用了您建议的方法1,它很有效!