爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 238|回复: 1

[作图] WPS内置plotgrids_new.ncl绘制模拟区域图叠加shp文件中的省界

[复制链接]

新浪微博达人勋

发表于 2025-1-9 21:51:52 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 mmmman 于 2025-1-9 21:53 编辑

由于从ncl转到python好几年了,导致ncl忘记的差不多了。最近在使用WRF模拟过程中希望在WPS设置namelist时能够叠加上省界、国界和长江黄河,以更直观地判断模拟区域的设置。网上都说ncl内置的省界是有问题的,希望通过shp文件进行绘制。
查阅了相关的经验分享,没有找到很直观的方式,简书上的一个链接给了灵感,但是发现domain的框和shp文件绘制的线不能同时出现。


排查plotgrids_new.ncl文件时,发现文件调用了 $NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl 中的 wrf_wps_dom 函数,这个函数中有一行代码 draw(mp),而在plotgrids_new.ncl中叠加 shp 文件时需要再执行一遍 draw(mp),问题就出现在了这里。


实现方法:
其实有两种实现方法,一种是修改WRFUserARW.ncl中的wrf_wps_dom函数,将绘制省界的命令插入到draw(mp)代码之前,另一种就是将wrf_wps_dom函数中的draw(mp)注释掉,然后在plotgrids_new.ncl中添加绘制shp文件的命令。我这里为了防止以后重新编译WRF导致代码需要再修改,采用了第一种方法。


(1) 将$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl 文件复制到自己的指定路径,比如 ~/Tools/
(2) 在 ~/Tools/WRFUserARW.ncl 中 wrf_wps_dom 函数中的 draw(mp) mp = wrf_wps_map(wks,mpres) 代码之间(大约在4815行附近)添加下面的代码:
  • river_file = "XXXXX/river.shp"
  •   river_res = True
  •   river_res@gsLineColor = "blue"
  •   river_res@gsLineThicknessF = 1.0
  •   river_poly = gsn_add_shapefile_polylines(wks,mp,river_file,river_res)
这里以绘制一个shp文件为例,需要绘制其他的shp文件以此类推
(4) 将plotgrids_new.ncl文件头部中的:
  load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
  修改为:
  load "/fs1/home/qxmmm/Tools/WRFUserARW.ncl"




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

新浪微博达人勋

发表于 2025-1-10 09:44:53 | 显示全部楼层
感谢楼主分享经验
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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