NCL绘制:WRF输出结果wrfout_d01*文件后处理


WRF官网关于ncl的教程::
https://www2.mmm.ucar.edu/wrf/OnLineTutorial/Graphics/NCL/NCL_examples.php

编程语言:NCL
系统:Ubuntu 16.04.6 LTS 以及 Windows10

windows下Sublime在共享文件夹下编辑脚本,链接到run/下运行。

ln -sf /media/sf_WRF/WRFout.ncl .


1. 读取

WRF模式运行结束后会输出wrfout_d01*结果文件。利用addfile()函数打开。
可以进行批量修改文件为.nc格式,详情参考其他教程;也可以利用NCL直接进行读取。

    a = addfile("wrfout_d01_2017-06-20_00:00:00","r")
    print(a)
    printVarSummary(a)

1
2

关于文件wrfout_d01*的输出结果,大致看一眼变量和维度信息,包含wrf设定的参数信息等。

NCL: 结果文件大于2G时,需要用setfileoption()函数读。

2. 绘制

利用wrf_user_getvar()函数读取文件中的气象变量资料。
此外,简单设置绘图参数,出简图看一眼数据是否正常。

  • wrf_user_getvar()函数可以将WRF Output的sigma坐标直接插值到高度层或气压层,实现垂直坐标转换,便于NCL继续处理。
  load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
  load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
begin
  a = addfile("wrfout_d01_2017-06-23_00:00:00","r")
  print(a)
;## wrf_user_getvar()函数可以将WRF Output的sigma坐标直接插值到高度层
;##                  或气压层,实现垂直坐标转换,便于NCL继续处理。
  ter = wrf_user_getvar(a,"HGT",0)   ; Get terrain height for time 0

  wks = gsn_open_wks("png","test3")       ; Create a plot workstation
  opts = True                                ; Set some Basic Plot options
  opts@MainTitle = "GEOGRID FIELDS"

  res = opts                                 ; Use basic options for this field
  res@cnFillOn = True                        ; Create a color fill plot

  contour = wrf_contour(a,wks,ter,res) ; 单独contour没有画面

  pltres = True                              ; Set plot options
  mpres = True                               ; Set map options
  mpres@mpGeophysicalLineColor      = "Black"  ; Overwrite basic map settings
  mpres@mpGridLineColor             = "Black"
  mpres@mpLimbLineColor             = "Black"
  mpres@mpNationalLineColor         = "Black"
  mpres@mpPerimLineColor            = "Black"
  mpres@mpUSStateLineColor          = "Black"
  plot = wrf_map_overlays(a,wks,(/contour/),pltres,mpres)  ; Plot the data over a map background
end

输出结果图大致如下:
3
更多细化的绘图设置参考NCL官网。连续输出多个时次的图参考WRF官网对于NCL绘图的脚本实例。

在使用 NCL(NCAR Command Language)处理 WRF 输出数据文件并根据经纬度信息计算风速大小,最终绘制风速栅格图的过程中,可以按照以下步骤进行操作: ### 数据读取与变量提取 首先,需要读取 WRF 输出文件 `wrfout_d01*`,并提取风速相关的变量。通常,WRF 输出文件中包含 `U` 和 `V` 两个风速分量,分别代表东西方向和南北方向的风速。通过 `addfile()` 函数打开 WRF 文件,并使用 `print()` 和 `printVarSummary()` 查看文件信息和变量结构。 ```ncl a = addfile("wrfout_d01_2017-06-20_00:00:00", "r") print(a) printVarSummary(a) ``` 接下来,提取 `U` 和 `V` 风速分量,并计算风速大小。风速大小的计算公式为 $ \text{wind_speed} = \sqrt{U^2 + V^2} $。在 NCL 中,可以直接对数组进行数学运算,实现风速的计算。 ```ncl u = a->U(0, 0, :, :) ; 提取U风速分量 v = a->V(0, 0, :, :) ; 提取V风速分量 wind_speed = sqrt(u^2 + v^2) ; 计算风速大小 ``` ### 绘制风速栅格图 完成风速大小的计算后,可以使用 NCL 提供的绘图函数绘制风速栅格图。NCL 的绘图功能非常强大,支持高度的可定制性,可以通过设置不同的绘图参数来调整图形的外观。 ```ncl res = True res@cnFillOn = True ; 开启颜色填充 res@cnLinesOn = False ; 关闭等值线 res@lbOrientation = "vertical" ; 设置颜色条为垂直方向 res@tiMainString = "Wind Speed (m/s)" ; 设置主标题 res@mpProjection = "CylindricalEquidistant" ; 设置投影方式为等距圆柱投影 plot = gsn_csm_contour_map(wks, wind_speed, res) ; 绘制风速栅格图 ``` ### 完整代码示例 以下是完整的 NCL 代码示例,用于处理 WRF 输出数据文件绘制风速栅格图: ```ncl ; 读取 WRF 输出文件 a = addfile("wrfout_d01_2017-06-20_00:00:00", "r") ; 提取 U 和 V 风速分量 u = a->U(0, 0, :, :) ; 提取 U 风速分量 v = a->V(0, 0, :, :) ; 提取 V 风速分量 ; 计算风速大小 wind_speed = sqrt(u^2 + v^2) ; 设置绘图参数 res = True res@cnFillOn = True ; 开启颜色填充 res@cnLinesOn = False ; 关闭等值线 res@lbOrientation = "vertical" ; 设置颜色条为垂直方向 res@tiMainString = "Wind Speed (m/s)" ; 设置主标题 res@mpProjection = "CylindricalEquidistant" ; 设置投影方式为等距圆柱投影 ; 创建绘图窗口 wks = gsn_open_wks("png", "wind_speed_plot") ; 创建 PNG 格式的绘图窗口 ; 绘制风速栅格图 plot = gsn_csm_contour_map(wks, wind_speed, res) ; 关闭绘图窗口 gsn_close_wks(wks) ``` ### 相关问题
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值