File io 如何使用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

我想知道是否有人可以帮助我找到有关这段代码的问题,在毕业生的语言

我想读很多文件,计算并存储它们,但当我在GraDS中执行这些操作时,我对所有输入文件都有相同的答案

有人能帮我解决这个问题吗

'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,它很有效!