爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10193|回复: 12

[作图] 各位大神~新手求助NCL~~

[复制链接]

新浪微博达人勋

发表于 2015-1-9 17:34:24 | 显示全部楼层 |阅读模式

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

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

x
;*************************************************
; NCL tutorial script: vert_1.ncl
;************************************************
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
;************************************************
begin
;************************************************
; file handling
;************************************************
   ;fn  = "00pi2co2_01_climo.nc" ; define filename
   files=systemfunc("ls 00pi2co2_*_climo.nc")
   in  = addfiles(files,"r")                         ; open netcdf file

;************************************************
; read needed variables from file
;************************************************
   pre=in[:]->PRECT*1000*86400

   pres=dim_sum_n(pre(4:8,:,:),0)
   prew=dim_sum_n(pre(10:3,:,:),0)
   presum=dim_sum_n(pre(1:11,:,:),0)
  ; printVarSummary(pres)

   domain=new(dimsizes(pres),float)

   ;printVarSummary(domain)
  do i=0,47
    do j=0,95

   if((pres(i,j)-prew(i,j))>2.0*5 .and. (pres(i,j)/presum(i,j))>0.55) then
   domain(i,j)=1.0
   else
   domain(i,j)=0.0
   end if
   end do
   end do
;;************************************************
;;************************************************
   wks  = gsn_open_wks("ps","vert111")               ; Opens a ps file
   plot = gsn_csm_contour(wks,domain(:,:),False)


这是我的ncl脚本,想利用domain画出一条符合if筛选的线,但是提示错误
warning:ContourPlotInitialize: scalar field is constant; ContourPlot not possible:[errno=1102]
出错的位置应该就在if语句处
求助各位大神是哪里有问题?



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

新浪微博达人勋

发表于 2015-1-9 17:36:20 | 显示全部楼层
坐等高人,最近也在学习NCL!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-9 19:49:33 | 显示全部楼层
本帖最后由 风子 于 2015-1-9 19:52 编辑


你要干嘛呢?
看你这个脚本domain算出来等于一个值
整个平面图是一个值,画不出等值线呢

应该是你的if里面条件设置的不当吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-1-9 20:07:41 | 显示全部楼层
风子 发表于 2015-1-9 19:49
你要干嘛呢?
看你这个脚本domain算出来等于一个值
整个平面图是一个值,画不出等值线呢

就是把i符合if条件的值都赋值为1,不符合的地方为0,应该是可以画出0-1之间的等值线,在matlab中可以实现,但是在NCL中就出错了,可能是语法出错了吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-10 13:44:30 | 显示全部楼层
问题说输出的结果是常值啊,要不你把domain输出来看一下,看看是不是有0,1分布的,还是只有一个值
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-1-10 13:50:19 | 显示全部楼层
排山倒海 发表于 2015-1-10 13:44
问题说输出的结果是常值啊,要不你把domain输出来看一下,看看是不是有0,1分布的,还是只有一个值

试过输出了,确实是一个常值1,并没有每个点按if筛选之后变成0和1的分布!不知道是不是domain赋值处的语法错误了!跪求大神解答啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-10 14:00:44 | 显示全部楼层
iloveatmos 发表于 2015-1-10 13:50
试过输出了,确实是一个常值1,并没有每个点按if筛选之后变成0和1的分布!不知道是不是domain赋值处的语 ...

应该是计算错误吧,语法好像没看出错的。。。。你再试试吧,我也不太懂。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-1-10 14:12:43 | 显示全部楼层
排山倒海 发表于 2015-1-10 14:00
应该是计算错误吧,语法好像没看出错的。。。。你再试试吧,我也不太懂。。。

好吧!谢谢啦~~~~~~~~~~~~~~~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-1-10 15:11:32 | 显示全部楼层
排山倒海 发表于 2015-1-10 14:00
应该是计算错误吧,语法好像没看出错的。。。。你再试试吧,我也不太懂。。。

谢谢啦~果然是计算错误了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-10 15:18:22 | 显示全部楼层
iloveatmos 发表于 2015-1-10 15:11
谢谢啦~果然是计算错误了!

恭喜恭喜,我也学习到了ncl里面循环的使用~~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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