爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20|回复: 0

绘制斜刨面图叠加风场

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式

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

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

x
begin
f = addfile("个例数据.grib", "r")
time_o = f->initial_time0_hours
time_new = todouble(time_o)
copy_VarMeta(time_o,time_new)
utc_date = cd_calendar(time_new, 0)
day = tointeger(utc_date(:,2))
hour = tointeger(utc_date(:,3))
idx  = ind(hour.eq.11) ;8点开始
tk   = f->T_GDS0_ISBL(idx,{500:1000},:,:);温度 ;K
omea = f->W_GDS0_ISBL(idx,{500:1000},:,:)
uwnd = f->U_GDS0_ISBL(idx,{500:1000},:,:)
vwnd = f->V_GDS0_ISBL(idx,{500:1000},:,:)
leftlat  = 40
rightlat = 35
leftlon  = 100
rightlon = 110

function calculate_anomal(leftlat,rightlat,leftlon,rightlon,se3)
begin
level = se3&lv_ISBL1
xlat  = se3&g0_lat_2(::-1)
xlon  = se3&g0_lon_3
npts  = 31
dist = gc_latlon(leftlat,leftlon,rightlat,rightlon,npts,2)
lat_new = dist@gclat
lon_new = dist@gclon
points  = ispan(0,npts-1,1)*1.0
t_cross = linint2_points_Wrap(xlon,xlat,se3,True,dist@gclon,dist@gclat,2)
t_cross!0 = "level"
t_cross&level = level
return ([/t_cross,lat_new,lon_new/])
end

var = calculate_anomal(leftlat,rightlat,leftlon,rightlon,tk)
t_cross = var[0]
lat_new = var[1]
lon_new = var[2]

var1 = calculate_anomal(leftlat,rightlat,leftlon,rightlon,vwnd)
v_cross = var1[0]

var2 = calculate_anomal(leftlat,rightlat,leftlon,rightlon,omea)
w_cross = var2[0]

var3 = calculate_anomal(leftlat,rightlat,leftlon,rightlon,uwnd)
u_cross = var3[0]
;================================================================================================
wks   = gsn_open_wks ("png", "test_TK_long1" )          ; open workstation

res                      = True                  ; plot mods desired
res@tiMainString         = " "        ; title
res@gsnLeftString  = " "
res@gsnRightString = " "
res@cnLevelSelectionMode = "ManualLevels"        ; manual contour levels
max_val = max(t_cross)
min_val = min(t_cross)
res@cnMinLevelValF = toint(min_val) ;sprintf("%.1f", min_val)
res@cnMaxLevelValF = toint(max_val) ;sprintf("%.1f", max_val)
res@cnLevelSpacingF      = 4                 ; contour interval
;res@cnMinLevelValF       = -50.                  ; min level
;res@cnMaxLevelValF       =  50.                  ; max level
res@cnLineLabelsOn       = True                  ; turn on line labels
res@cnFillOn             = True                  ; turn on color fill
res@cnFillPalette        = "BlWhRe"              ; set color map
res@cnLineLabelsOn = False
;res@vpWidthF  = 0.5   ; 图形宽度占画布宽度的80%
;res@vpHeightF = 0.6   ; 图形高度占画布高度的60%

res@cnLinesOn = False       ; 隐藏等值线
res@vcLineArrowColor = "black"      ; 矢量颜色
res@vcRefAnnoOn = False          ; 显示参考矢量标注
res@vcRefAnnoOn = True          ; 开启参考标签

res@vcGlyphStyle               = "LineArrow"
res@vcLineArrowThicknessF      = 5
res@vcMinDistanceF             = 0.03
res@vcRefLengthF               = 0.05
res@vcRefAnnoString2On = False  ; 关闭第二行字符串
res@vcRefAnnoOrthogonalPosF = -1.15  ; 标签垂直位置
res@vcRefAnnoParallelPosF = 1.00     ; 标签水平位置
res@vcRefAnnoBackgroundColor = "white"  ; 标签背景色
res@gsnLeftString  = " "
res@gsnRightString = " "

res@vcRefMagnitudeF = 5.0           ; 参考矢量大小
res@vcRefAnnoString1 = "5 m/s"  ; 标签内容


res@pmLabelBarOrthogonalPosF = -0.02
res@pmLabelBarWidthF = 0.4
res@pmLabelBarHeightF = 0.1
;---------------------------------------------------------------------------------------
res@tmXBMode = "Explicit"
res@tmXBValues = (/0,15,30/)
res@tmXBLabels     = (/lat_new(0)+"N"+lon_new(0)+"E",(lat_new(0)+lat_new(30))/2+"N"+(lon_new(0)+lon_new(30))/2+"E",lat_new(30)+"N"+lon_new(30)+"E"/)

;---------------------------------------------------------------------------------------
w_cross = w_cross*2.5*-1
copy_VarMeta(v_cross,w_cross)

;---------------------------------------------------------------------------------------
plot = gsn_csm_pres_hgt_vector(wks,t_cross,v_cross,w_cross,res)



end


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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