爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 16593|回复: 14

ncl画海温梯度

[复制链接]

新浪微博达人勋

发表于 2017-3-5 12:04:07 | 显示全部楼层 |阅读模式

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

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

x
如题,想用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"
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/skewt_func.ncl"
;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/wind_rose.ncl"
begin
  fi = addfile("/home/hp/wq/HadISST_sst.nc","r")
  sst = fi->sst
  SST = sst(1608,:,:)     
  lat = fi->latitude
  lat@units ="degrees_north"
  lon = fi->longitude
  lon@units ="degrees_east"
lats=-89.5
latn=89.5
nnlat= floattointeger((latn-lats)/2)
lonw=-179.5
lone=179.5
nnlon = floattointeger((lone-lonw)/2)
dTdX=SST
dTdY=SST
  dlon = (lon(2)-lon(1))*0.0174533 ; convert to radians
  dlat=(lat(2)-lat(1))*0.0174533                                    
   do nl=0,nnlat-1                      ; loop over each latitude
      dX = 6378388.*cos(0.0174533*lat(nl))*dlon  ; constant at this latitude
      dTdX(nl:nl,:)= center_finite_diff_n (SST(nl:nl,:),dX,True,0,1)
  end do
do nY=0,nnlon-1
  dY=doubletofloat(6378388.*dlat)
  dTdY(nY:nY,:)=center_finite_diff_n (SST(nY:nY,:),dY,True,0,1)
end do
g=sqrt(dtdx^2+dtdy^2)*100000
g@lat = lat
g@lon = lon
    wks = gsn_open_wks("x11" ,"SST")
    gsn_define_colormap(wks,"WhBlGrYeRe")
  ;SST= smth9_Wrap(smth9_Wrap(smth9_Wrap(SST, -0.00001, -0.00001, True),-0.00001,-0.00001, True),-0.00001,-0.00001, True)
  res                       = True
  res@mpFillOn              = True
  res@cnFillOn              = True
  ;res@cnFillMode            = "RasterFill"
  ;res@mpMinLatF = 30
  ;res@mpMaxLatF = 50
  ;res@mpMinLonF = 125
  ;res@mpMaxLonF = 148
  res@cnLinesOn             = False
  res@cnLineLabelsOn        = False
  res@cnLevelSelectionMode  = "ManualLevels"
  res@cnMinLevelValF        = 0
  res@cnMaxLevelValF        = 1.5
  res@cnLevelSpacingF       = 0.05
  res@gsnSpreadColors       = True
  res@lbLabelBarOn          = True
  res@lbLabelAutoStride     = True
  res@lbBoxLinesOn          = False
  res@cnRasterSmoothingOn   = True
  ;res@cnSmoothingDistanceF  = 0.00000000002
  ;res@cnSmoothingTensionF   = 0.0000000001
  ;wrf_smooth_2d (SST,0.999)
  plot = gsn_csm_contour_map(wks,g(::-1,:),res)
end

file:///C:/Users/hp/Documents/Tencent%20Files/361644950/Image/C2C/%7DJZ1TZ(U993YU]8(MIX9%7B_V.png 画出来的图是这样的。。。。用的是Hadley海温资料
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-5 12:04:52 | 显示全部楼层
自己顶一个{:cry:}{:cry:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-5 12:12:09 | 显示全部楼层
求大神
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-3-5 12:16:59 | 显示全部楼层
来人啊~~~~
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-3-5 20:36:18 | 显示全部楼层
本帖最后由 熙熙攘攘 于 2017-3-5 20:45 编辑

dTdY(nY:nY,:)=center_finite_diff_n (SST(nY:nY,:),dY,True,0,1)改成 dTdY(:,nY:nY)=center_finite_diff_n (SST(:,nY:nY),dY,True,0,0)试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-8 16:38:15 | 显示全部楼层
熙熙攘攘 发表于 2017-3-5 20:36
dTdY(nY:nY,:)=center_finite_diff_n (SST(nY:nY,:),dY,True,0,1)改成 dTdY(:,nY:nY)=center_finite_diff_ ...

对的对的~~~跪谢大神~~我现在明白了,应该是维数没弄懂。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-5 23:25:41 | 显示全部楼层
您好,我在计算温度平流,看到了您的程序。有问题求教:
1,按照您的程序,我画出的图只有一个值,即只有一种颜色
2,计算温度梯度,得选定中心温度和经度,这些在程序中是怎么体现的?或者,您可以简单解释一下您的程序。

非常感谢!期待您的回复!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-5-5 23:27:27 | 显示全部楼层
我的权限太低,无法发消息给您,只能在此留言。
真诚希望能得到帮助
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-8 19:11:54 | 显示全部楼层
请问 为什么最后要*100000???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-6-9 11:07:14 | 显示全部楼层
请问g为什么最后要*100000?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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