爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 38044|回复: 35

[作图] ncl中shapefile_mask_data的使用

  [复制链接]

新浪微博达人勋

发表于 2019-12-4 09:43:20 | 显示全部楼层 |阅读模式

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

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

x
如何出一张自己设定区域的地图产品,困扰我了好久,看到施宁老师的《NCL数据处理与绘图基础教程》有介绍2种方法,第一种就是使用shapefile_mask_data方法,第二种是设置NCL的遮盖绘图参数mpAreaMaskingOn、mpMaskAreaSpecifiers等。我两种方法都试过,第一种本地试通了,第二种下载的代码是通的,但是换成广东省就不行,不知道问题出在哪里。总结一下使用第一种的经验,主要是搞清楚步骤。
一、首先准备好待画的网格数据;
二、按自己的范围切出网格数据;
shp_name = "GD_DSH.shp"  
var_mask = shapefile_mask_data(sdemo(:,:,ivar), shp_name, False)
三、画数据填色、等值线等
  cnid = gsn_csm_contour(wks, var_mask, cnres)
  cnlid= gsn_csm_contour(wks, var_mask, cnlres)     
这个地方不能用gsn_csm_contour_map,因为下面也有句话用到了map ,一张图上只能用一个map并且这里的resource也不能有任何关于地图的设置(比如经纬度,边界线等),不然会错。
四、画地图
     mpid = gsn_csm_map(wks, mpres)  
这里的mpres里面因为用到了 gsn_csm_map,所以要有地图的设置
五、画地图范围的边界线条
lnres                  = True
lnres@gsLineColor      = "black"
lnres@gsLineThicknessF = 1.0
poly = gsn_add_shapefile_polylines(wks,mpid,shp_name,lnres)
六、叠加图层
地图肯定是最下面的顺序
  overlay(mpid,cnid)
  overlay(mpid,cnlid)
  draw(mpid)
  frame(wks)
七、最后的效果图
  
file:///C:/Users/hyz/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

广东未来某天24小时累积降水

广东未来某天24小时累积降水
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-5-20 11:23:46 | 显示全部楼层
第二种方法不行是因为ncl把广东的名字给拼成“Guandong”了
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-12-19 21:20:25 | 显示全部楼层
大哥 求个脚本和shp文件  我也是想画个广东省的 但是使用mpMaskAreaSpecifiers不行;然后还想画个珠三角的,但苦于没有shp文件,不知道哪里找?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-12-20 11:29:17 | 显示全部楼层
Mr.ITY 发表于 2019-12-19 21:20
大哥 求个脚本和shp文件  我也是想画个广东省的 但是使用mpMaskAreaSpecifiers不行;然后还想画个珠三角的 ...

如何发给你?珠三角确定好市县后,可以在arcmap里面操作,把shp文件单做出来
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-20 18:37:49 | 显示全部楼层
muyuzio 发表于 2019-12-20 11:29
如何发给你?珠三角确定好市县后,可以在arcmap里面操作,把shp文件单做出来

就在这里传就好了,我来下载。 感谢(不会arcmap啊。。)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-12-23 15:00:53 | 显示全部楼层
;------------ Plot -------------
  shp_name = "GD_DSH.shp"  
  var_mask = shapefile_mask_data(sdemo(:,:,ivar), shp_name, False)

  cnid = gsn_csm_contour(wks, var_mask, cnres)
  cnlid= gsn_csm_contour(wks, var_mask, cnlres)
  mpid = gsn_csm_map(wks, mpres)   

lnres                  = True
lnres@gsLineColor      = "black"
lnres@gsLineThicknessF = 1.0
poly = gsn_add_shapefile_polylines(wks,mpid,shp_name,lnres)

   overlay(mpid,cnid)
   overlay(mpid,cnlid)

  draw(mpid)
  frame(wks)

前面计算数据部分的代码省略了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-29 21:36:16 | 显示全部楼层
请问区域内做平均好算的吧?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-29 21:38:17 | 显示全部楼层
请问如果做华南的,是先用ARCgis把华南的shp弄好,再来MASK吧,感谢楼主帮助,谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-27 15:59:02 | 显示全部楼层
请问楼主有完整代码么?我用楼主方法尝试了很久,一直没有出来,可能是某个细节错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-13 10:22:17 | 显示全部楼层
请问var_mask这里面的数据只是广东省内的格点数据吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-19 23:06:38 | 显示全部楼层
学到了 谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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