爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2779|回复: 0

[作图] 关于格点数据中指定两点间的剖面图

[复制链接]

新浪微博达人勋

发表于 2023-5-12 09:47:58 | 显示全部楼层 |阅读模式

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

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

x
  1. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"  
  2. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"  

  3. begin
  4. f = addfile("个人路径/20210725.nc","r")
  5. pv=short2flt(f->pv)           ;era5产品读取需要short2flt函数
  6. w=short2flt(f->w)
  7. pv=pv(:,:,::-1,:)
  8. w=w(:,:,::-1,:)

  9. wks = gsn_open_wks("png","profile")
  10. gsn_define_colormap(wks,"MPL_RdBu")
  11. time = f->time
  12. time2 = time+8
  13. copy_VarMeta(time, time2)
  14. chn_data = cd_calendar(time2,0)              ;era5产品的时间以秒计算,所以要换算
  15. year   = tointeger(chn_data(:,0))
  16. month  = tointeger(chn_data(:,1))
  17. day    = tointeger(chn_data(:,2))
  18. hour   = tointeger(chn_data(:,3))
  19. minute = tointeger(chn_data(:,4))
  20. ;chn_date = sprinti("%0.4i-", year)+sprinti("%0.2i-", month)+sprinti("%0.2i_", day)+sprinti("%0.2i", hour)
  21. chn_date = sprinti("%0.2i", day)+sprinti("%0.2i", hour)
  22. chn = tointeger(chn_date)
  23. ;print(chn_date)
  24. lon = f->longitude
  25. lat = f->latitude
  26. lat = lat(::-1)
  27. lev = f->level
  28. downlat = 29.996        ;设置起始点经纬度
  29. downlon = 122.223
  30. toplat  = 39.098
  31. toplon  = 119.210
  32. npts = 40

  33. dist = gc_latlon(downlat,downlon,toplat,toplon,npts,2)   ;插值起止点间的40个点位的经纬度
  34. lat_new = dist@gclat
  35. copy_VarAtts(lat,lat_new)
  36. lon_new = dist@gclon
  37. w_new  = linint2_points(lon, lat, w, False, lon_new, lat_new, 0)    ;将要绘制的变量进行插值
  38. pv_new = linint2_points(lon, lat, pv, False, lon_new, lat_new, 0)
  39. pv_new = smth9(pv_new,0.5,-0.25,False)     ;平滑
  40. w_profil =w_new(1,:,:)
  41. w_profil!0 ="level"
  42. w_profil!1 = "grid"
  43. w_profil&level = lev
  44. w_profil&grid  = lat_new
  45. pv_profil =pv_new(1,:,:)*1000000
  46. pv_profil!0 ="level"
  47. pv_profil!1 = "grid"
  48. pv_profil&level = lev
  49. pv_profil&grid  = lat_new
  50. printVarSummary(pv)
  51. ;print(pv)

  52. res=True
  53. res@gsnFrame=False
  54. res@gsnDraw=False
  55. res@gsnLeftString  = " "
  56. res@gsnRightString = " "
  57. res@tmXBMode       = "Automatic"
  58. res@tmXBMaxTicks   = 8
  59. res@pmTickMarkDisplayMode   = "Always"
  60. res@gsnAddCyclic   = False
  61. res@tmXTOn         = False
  62. resw=res
  63. resw@cnLinesOn = False
  64. resw@cnFillOn  = True
  65. resw@cnLevelSelectionMode = "ManualLevels"
  66. resw@cnMaxLevelValF = 3
  67. resw@cnMinLevelValF = -3
  68. resw@gsnAddCyclic   = False
  69. resw@cnInfoLabelOn  = False
  70. plota = gsn_csm_pres_hgt(wks,w_profil(10:,:),resw)
  71. resp =res
  72. resp@cnFillOn  = False
  73. resp@cnLinesOn = True
  74. resp@cnInfoLabelOn  = False
  75. resp@cnLineLabelsOn = False
  76. resp@cnMonoLineThickness  = False
  77. resp@cnLineThicknesses    = (/1,3/)
  78. resp@cnLevelSelectionMode = "ExplicitLevels"
  79. resp@cnLevels = (/2, 0.5/)
  80. plotb = gsn_csm_pres_hgt(wks,pv_profil(10:,:),resp)
  81. overlay(plota,plotb)             ;叠加
  82. draw(wks)
  83. frame(wks)
  84. end
复制代码


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

本版积分规则

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

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

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