请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13241|回复: 7

[脚本编辑] GrADS两层循环嵌套 显示嵌套有问题?

[复制链接]

新浪微博达人勋

发表于 2020-8-13 00:03:56 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请教大神们,我到底错哪里了,GrADS显示错误:Unexpected endwhile.  Incorrect loop nesting (81行 循环嵌套序错误?)

脚本是想用两层循环嵌套来画图(不同的时间+不同的层次包括925hPa、850hPa、500hPa)
看了很多遍,还是觉得我的循环没问题,求求各位大神帮我看看!!

以下为我的脚本:
1.    'reinit'
2.    'sdfopen D:\study\Ph.D\PODUL\data\data_2019.08.27_31.nc'
3.    'enable print D:\study\Ph.D\PODUL\draw\environment.gmf'
4.    'run D:\OpenGrADS\Contents\Resources\Scripts\define_colors.gs'
5.   
6.    'set lon 90 150'
7.    'set lat 0 40'
8.    'set lev 925'
9.   
10.    'set grid off'
11.    'set grads off'
12.   
13.    'set parea 1 9.5 0.8 7.7'
14.    'set map 78 1 6'
15.   
16.    *******设置时间循环,从08.28 12:00 - 21:00 UTC **********
17.    t0=37
18.    tt=11
19.    while(t0<44)
20.    tt=tt+1
21.    'set t 't0''
22.    t0=t0+1
23.    np=1
24.    *********设置高度层循环,包括925hPa、850hPa和500hPa层********
25.    while (np<4)
26.    if (np=1)
27.    p=925
28.    endif
29.   
30.    if (np=2)
31.    p=850
32.    endif
33.   
34.    if(np=3)
35.    p=500
36.    endif
37.   
38.    'set lev 'p''
39.    np=np+1
40.   
41.    ******设置坐标轴***********
42.    'set xlopts 1 6 0.25'
43.    'set ylopts 1 6 0.25'
44.    'set xlint 10'
45.    'set ylint 10'
46.   
47.    ******画相对湿度填色图*********
48.    'set gxout shaded'
49.    'set clevs 30 50 70 80 90'
50.    'set ccols 41 42 43 44 45 47'
51.    'd r'
52.    'run D:\OpenGrADS\Contents\Resources\Scripts\cbarn.gs 1.5 1 9.9 4.25'
53.    'set string 1 c 0.18'
54.    'set strsiz 0.18'
55.    'draw string 10 6.75 RH:%'
56.   
57.    ******画位势高度图*********
58.    'set ccolor 1'
59.    'set cthick 8'
60.    'set gxout contour'
61.    'd z'
62.   
63.    ******画龙卷所在位置*****
64.    'q w2xy 110.16 19.50'
65.    x1=subwrd(result,3)
66.    y1=subwrd(result,6)
67.    *'draw wxsym 1 'x1' 'y1' 0.2 2 6'
68.    'set line 38'
69.    'draw mark 3 'x1' 'y1' 0.1'
70.   
71.    *******画风场图*********
72.    'set ccolor 25'
73.    'set gxout vector'
74.    'd skip(u,5,5);v'
75.   
76.    'draw title 'p'hPa at 'tt':00 on 08.28 UTC'
77.   
78.    'print'
79.    'clear'
80.    endwhile
81.    endwhile
82.   
83.    'disable print'
84.    'reinit'



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-8-13 01:23:50 | 显示全部楼层
按照我个人的习惯和经验,判断语句的叠加 t0=t0+1,np=np+1应该放在endwhile的前一行把。还有print在第一个循环完成的时候开始,为什么要等到所有循环都完成了再结束呢?
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

发表于 2020-8-13 06:56:09 | 显示全部楼层
循环t和p的话,不用那么麻烦,写俩循环
'i=1'
'while(i<=480)'
    'set t 'i''
    j=1
    while(j<=17)
        'set z 'j''
        'd uwnd'
        j=j+1
   endwhile
   i=i+1
endwhile
反正你设定垂直层次的时候,用set z也行,不必非得用set lev
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-13 16:03:19 | 显示全部楼层
失落的积雨云 发表于 2020-8-13 01:23
按照我个人的习惯和经验,判断语句的叠加 t0=t0+1,np=np+1应该放在endwhile的前一行把。还有print在第一个 ...

谢谢您的回复,不过“还有print在第一个循环完成的时候开始,为什么要等到所有循环都完成了再结束呢?”这句是什么意思啊?没有看懂,是我print放的位置不对吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-13 16:06:23 | 显示全部楼层
伽蓝鸟 发表于 2020-8-13 06:56
循环t和p的话,不用那么麻烦,写俩循环
'i=1'
'while(i

谢谢,不过我没有用set z 是因为我要的那个层是不连续的,就我的数据有1000/950/925/900这样子的,所以才设置的set lev
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-13 16:14:36 | 显示全部楼层
谢谢大家的回答, 刚才重新检查了一遍,发现只是因为第一个while后面的( 用了中文的括号,所以grads才一直说后面的endwhile是多余的……   就给大家提个醒吧,打代码的时候注意一下中英文,推荐一个文本编辑器,Visual Studio Code,这个可以编辑多种文本,中英文符号差别很明显,一眼就能看出来,不像直接用电脑自带的写字板那样子看不出来中英文的差别。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-3-2 11:52:47 | 显示全部楼层
我也是一样的问题,谢谢楼主
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-3-3 09:13:07 | 显示全部楼层
赞一个,楼主66666
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表