爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18230|回复: 17

[经验总结] 【学习笔记】ncl准确中国地图+长江黄河+南海区域小图+显著性检验打点

[复制链接]

新浪微博达人勋

发表于 2021-10-25 20:36:52 | 显示全部楼层 |阅读模式

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

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

x
资源是版主大佬这里找到的,在原帖回复以后得到一个链接,那个链接我多点了几次才打开,前几次一直是无法响应,不要放弃,多刷新几次就可以了[url=修正NCL原地图数据:快速绘制准确中国地图,值得你拥有! http://bbs.06climate.com/forum.p ... &fromuid=127029 (出处: 气象家园)]修正NCL原地图数据:快速绘制准确中国地图,值得你拥有! http://bbs.06climate.com/forum.p ... &fromuid=127029 (出处: 气象家园)[/url]

链接里的方法比书上的要方便很多,很推荐!!!

1.中国地图:
按照链接里面的步骤,直接在交互式页面(不打开ncl的情况下)使用"git clone (github里给的链接)"下载提供的地图数据和脚本等文件,默认下载到你在交互式下所打开的文件夹下。(要是没下载文件的话之后的内容可以不看了)
找到电脑上安装ncl的文件夹,根据里面写到的步骤和提供的数据进行地图文件的替换,就能得到有南海区域的地图和正确的中国边界图,文件里还有长江黄河的位置数据可以使用


2.长江黄河:
文件中的rivers是最新的黄河长江的数据,脚本为:
;地图基本设置
res@mpFillOn             = True
res@mpMinLatF            = 20.  我自己选择的经纬度,需要看到南海区域要改成0  
res@mpMaxLatF            = 60.
res@mpMinLonF            = 50.
res@mpMaxLonF            = 145.
res@mpDataSetName         = "Earth..4"   ; 经过一开始的替换,现在的地图是最准确的
res@mpDataBaseVersion     = "MediumRes"  ; 中等分辨率, 加上这个边界变细致了
res@mpOutlineOn           = True         ; Turn on map outlines
res@mpAreaMaskingOn            = True
res@mpMaskAreaSpecifiers       = (/"land"/);这里我的land是要设置大陆填充,只填充中国就写China就好
res@mpOutlineSpecifiers   = (/"China"/)  
res@mpLandFillColor            = "white"
res@mpInlandWaterFillColor     = "white"
res@mpOceanFillColor           = "white"
res@mpNationalLineColor        = "black"
res@mpGeophysicalLineColor     = "black"
base=gsn_csm_contour_map(wks,ccr,res)

;添加黄河和长江
  river                          = True
  river@gsLineThicknessF         = 0.8      
  river@gsLineColor              = "black"
plotrv = gsn_add_shapefile_polylines(wks,base,"./NCL-Chinamap/cnmap_NetCDF/rivers.nc",river)


(base是我的底图;"./NCL-Chinamap/cnmap_NetCDF/rivers.nc"是我的保存路径,“.”代表我以及在交互式页面打开的文件夹,后面的就是路径)


3.添加南海小图
原来的脚本中有一些getvalues的内容,我发现删去以后并不影响我的作图,可能是我下载的ncl是最新版,直接利用nhres=res就可以


;添加南海
  nhres                          = res
  nhres@gsnFrame                 = False
  nhres@gsnDraw                  = False
  nhres@vpHeightF                = 0.15   
  nhres@vpWidthF                 = 0.15
  nhres@mpMinLatF                =   2.0  ;南海的地理位置  
  nhres@mpMaxLatF                =  23.0
  nhres@mpMinLonF                = 105.0
  nhres@mpMaxLonF                = 123.0
  nhres@lbLabelBarOn             = False
  nhres@tmXBOn                   = False
  nhres@tmYLOn                   = False
  nhres@tmYROn                   = False
  nhres@tmXTOn                   = False
  nhres@gsnLeftString            = ""
  nhres@gsnRightString           = ""
  nhres@cnLineLabelsOn       = False
map_nanhai = gsn_csm_contour_map(wks,ccr,nhres)
  adres                          = True  ;设置在图中的位置
  adres@amParallelPosF           = 0.49 ; -0.5 is the left edge of the plot.
  adres@amOrthogonalPosF         = 0.49  ; -0.5 is the top edge of the plot.
  adres@amJust                   = "BottomRight"
plotnh = gsn_add_annotation(base,map_nanhai,adres)

4.显著性打点
打点方法参考之前写过的两种方法[url=【已解决】ncl 降水 空间相关 显著性打点 http://bbs.06climate.com/forum.p ... &fromuid=127029 (出处: 气象家园)]【已解决】ncl 降水 空间相关 显著性打点 http://bbs.06climate.com/forum.p ... &fromuid=127029 (出处: 气象家园)[/url]
我画出南海小图之后,我发现小图里并没有我的显著性区域,只有我画上的等值线的填色图
试了一会以后发现只要把通过显著性部分再overlay在小图上就可以
在map_nanhai = gsn_csm_contour_map(wks,ccr,nhres)这一步后面添加:
plot1=gsn_csm_contour(wks,p,rest);给南海区域通过显著性的地方打点
overlay(map_nanhai,plot1)
要注意的是大图的显著性区域是plot(我没表示出来),小图要换一个我用的是plot1,打点绘图参数是一致的,只是变量名要换一下,
用同一个的话会出现只有一个图打点的情况







1635165303(1).png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-10-26 16:54:02 | 显示全部楼层
真心建议放个完整脚本供大家学习参考
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-10-26 16:58:51 | 显示全部楼层
woshiwzm 发表于 2021-10-26 16:54
真心建议放个完整脚本供大家学习参考

这个脚本里面涉及到很多东西,也是现在在做的工作,完整脚本贴出来不太方便,不过有什么问题可以直接留言交流的,我会的东西一定分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-10-27 00:03:20 | 显示全部楼层
guoguohh 发表于 2021-10-26 16:58
这个脚本里面涉及到很多东西,也是现在在做的工作,完整脚本贴出来不太方便,不过有什么问题可以直接留言 ...

等你论文发表了记得回来贴个脚本,谢谢了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-10-27 08:22:17 来自手机 | 显示全部楼层
感谢分享~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-10-29 14:48:17 | 显示全部楼层
感谢分享!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-10-29 22:48:03 | 显示全部楼层
楼主你好,请问我想在组图上叠加,比如我画6个,只有3个图上有,是为什么呀?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-10-30 15:18:06 | 显示全部楼层
帅蛋fly 发表于 2021-10-29 22:48
楼主你好,请问我想在组图上叠加,比如我画6个,只有3个图上有,是为什么呀?

你试试每个图分别都叠一次,我画组图的时候一开始叠河流的时候也是两个图只有一个图显示,分别叠就可以都显示了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-11-12 17:05:36 | 显示全部楼层
真心建议放个完整脚本供大家学习参考
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-11-13 22:57:53 | 显示全部楼层
TaoYao 发表于 2021-11-12 17:05
真心建议放个完整脚本供大家学习参考

对于题目里写到的具体问题描述的挺完整的了,需要完整的脚本参照版主的链接下载就行,我这里只是以一个新手的角度写了一些笔记,不知道你在哪里有问题可以提出来互相学习一下。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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