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

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8135|回复: 7

用循环使不同级别的风羽用不同颜色显示

[复制链接]

新浪微博达人勋

发表于 2014-5-8 11:57:20 | 显示全部楼层 |阅读模式
NCL
系统平台:
问题截图: -
问题概况: 利用wmbarb画风向风速图,想用循环使不同级别的风羽用不同颜色显示,但脚本出错,只显示语法错误
我看过提问的智慧: 看过
自己思考时长(天): 2

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

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

x
本帖最后由 指甲钳 于 2014-5-8 11:57 编辑

利用wmbarb画风向风速图,想用循环使不同级别的风羽用不同颜色显示,但脚本出错,只显示语法错误,循环如下:

uv=wind_component(s,d,0)

u = uv(0,:)*1.94386
v = uv(1,:)*1.94386

wmsetp("wbs",.03)


do i = 0, nrow-1

if (uv(i).le.6) then
     wmsetp("col",1)
    end if
    if (uv(i) .ge. 7 .and. uv(i).le.10) then
      wmsetp("col",2)
    end if
    if (uv(i) .ge. 11 .and. uv(i).le. 16) then
     wmsetp("col",2)
    end if
    if (uv(i) .ge. 17 .and. uv(i).le.21) then
      wmsetp("col",3)
    end if
    if (uv(i) .ge. 22 .and. uv(i).le.27) then
      wmsetp("col",2)
    end if
    if (uv(i).ge.28 .and. uv(i) .le.33) then
     wmsetp("col",4)
    end if
    if(uv(i).ge.34 .and. uv(i) .lt. 40) then
      wmsetp("col",5)
    end if
    if (uv(i).ge.41 .and. uv(i) .lt. 47) then
      wmsetp("col",6)
    end if
    if (uv(i).ge.48 .and. uv(i) .lt. 55) then
      wmsetp("col",7)
    end if
     if (uv(i).ge.56 .and. uv(i) .lt. 63) then
      wmsetp("col",8)
    if (uv(i) .ge.64 .and. uv(i) .lt. 71) then
     wmsetp("col",2)
    if (uv(i).ge.72.0) then
      wmsetp("col",9)
    end if

wmbarb(wks, lon, lat,u, v)

end do


出现的问题是说我的end do 那一行语法有问题,然后最后的脚本的end也有问题,但我实在想不出哪里有问题了,是因为我的UV是尺量吗?不能分大小吗?错误如下:

fatal:syntax error: line 137 in file nh_wind.ncl before or near do
end do
-----^


fatal:error in statement
fatal:syntax error: line 141 in file nh_wind.ncl before or near \n
end
----^


fatal:error in statement
fatal:syntax error: line -1 before or near


^


fatal:error in statement

最后附上我完整的脚本和数据,求大神指教~~


nh_wind.ncl

3.03 KB, 下载次数: 13

wind.csv

1.37 KB, 下载次数: 5

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

新浪微博达人勋

发表于 2014-5-8 14:51:40 | 显示全部楼层
指甲钳 发表于 2014-5-8 14:42
uv1 = sqrt((u*u) + (v*v))

if (uv1(i).ge.72.0) then

一个个画
wmbarb(wks, lon(i), lat(i),u(i), v(i))
nh_wind.png
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2014-5-8 13:07:33 | 显示全部楼层
     if (uv(i).ge.56 .and. uv(i) .lt. 63) then
      wmsetp("col",8)
    if (uv(i) .ge.64 .and. uv(i) .lt. 71) then
     wmsetp("col",2)

没有end if
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-8 13:17:33 | 显示全部楼层
另外,if (uv(i).le.6) then,uv是二维数组,这么写也有问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-8 14:42:29 | 显示全部楼层
longlivehj 发表于 2014-5-8 13:17
另外,if (uv(i).le.6) then,uv是二维数组,这么写也有问题。


uv1 = sqrt((u*u) + (v*v))

if (uv1(i).ge.72.0) then
     wmsetp("col",9)
     wmbarb(wks, lon, lat,u, v)
    end if

我改成这样后,他的颜色是全部一起变的。没有达到效果,wmbarb貌似不能像gsn函数那样用 dum(i) = gsn_add_polyline(wks, plot, xx, yy, resLine) 做循环,这个情况下只能用OVERLAY吗?没有其他简单点的方法吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-8 14:57:14 | 显示全部楼层
longlivehj 发表于 2014-5-8 14:51
一个个画
wmbarb(wks, lon(i), lat(i),u(i), v(i))

太感谢你了!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-8 16:41:46 | 显示全部楼层
longlivehj 发表于 2014-5-8 13:17
另外,if (uv(i).le.6) then,uv是二维数组,这么写也有问题。

我还有一个问题想请教您,风羽图的杆实在太细了,用wmsetp("wbs",.03)只能调大小,有没有设置可以调粗细的?我找了很久都找不到。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-8 17:04:37 | 显示全部楼层
指甲钳 发表于 2014-5-8 16:41
我还有一个问题想请教您,风羽图的杆实在太细了,用wmsetp("wbs",.03)只能调大小,有没有设置可以调粗细 ...

好像是木有。
你这个为啥不用gsn_csm_vector_*来做啊?可以通过vcLevelColors来指定颜色。
参考:http://www.ncl.ucar.edu/Applications/barb.shtml中第2个例子。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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