爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9149|回复: 3

[其他] overlay上面的图,超出国界的部分不画

[复制链接]
发表于 2020-9-22 20:44:43 | 显示全部楼层 |阅读模式

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

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

x
底层是shade,上层图是contour(这里是地形高度数据),用overlay叠一起。两个数据都是全球范围的数据。底图可以通过mpMaskAreaSpecifiers 把多余的阴影去掉,但是上面那层图画的时候,有超出的区域范围的部分(左下角还有海洋上),怎么能把超出的部分去掉,就是和底层阴影范围一样?谢谢~
QQ截图1.png
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2020-9-22 20:51:15 | 显示全部楼层
忘了附上代码:
(部分相关的)

  res             = True                                          ; plot mods desired
  res@gsnDraw     = False
  res@gsnFrame    = False                                         ; don't advance yet
  res@gsnLeftString        =""                                    ;图左上的数据信息
  res@gsnRightString       =""                                    ;图右上的数据信息

  tres = res ;上层图与下层图参数一致的部分

  res@mpFillOn                   = True
  res@mpOutlineOn                = True   
  res@mpOutlineDrawOrder         = "PostDraw"
  res@mpOutlineSpecifiers        = (/"China","Taiwan","China:Provinces"/)
  res@mpNationalLineColor        = "black";"grey50"   ;"black"
  res@mpProvincialLineColor      = "grey40";"black";   ;"transparent"  ;"black" ;"gray"
  res@mpGeophysicalLineColor     = "black";"grey50"   ;"black"
  res@mpNationalLineThicknessF   = thicknessF-0.5
  res@mpProvincialLineThicknessF = thicknessF-0.5
  res@mpGeophysicalLineThicknessF= thicknessF-0.5
  
  res@mpDataBaseVersion       = "MediumRes"
  res@mpDataSetName           = "Earth..4"
  res@mpAreaMaskingOn         = True
  res@mpMaskAreaSpecifiers   = (/"China"/)

  res@tmXBLabelsOn      = True
  res@tmXBMode          = "Explicit"
  res@tmXBValues        = (/100,105,110,115,120,125/)   ;(/115,120/)
  res@tmXBLabels        = (/"100~S~o~N~E","105~S~o~N~E","110~S~o~N~E","115~S~o~N~E","120~S~o~N~E","125~S~o~N~E"/)  ;(/"115E","120E"/)
  res@tmXBMinorValues   = (/97.5,102.5,107.5,112.5,117.5,122.5/)
  
  res@tmYLLabelsOn      = True
  res@tmYLMode          = "Explicit"
  res@tmYLValues        = (/20,25,30,35/) ;/30,35/)
  res@tmYLLabels        = (/"20~S~o~N~N","25~S~o~N~N","30~S~o~N~N","35~S~o~N~N"/)   ;(/"30N","35N"/)
  res@tmXBMinorOn       = True
  res@tmYLMinorValues   = (/17.5,22.5,27.5,32.5/)

    ;--------------------------------------------- shade 参数设置
  res@cnLinesOn          = False
  res@gsnAddCyclic       = False
  res@cnFillOn           = True
  res@cnFillDrawOrder    = "PreDraw"
  res@pmLabelBarWidthF   = 0.1
  res@lbOrientation       = "Vertical"
  ;res@pmLabelBarHeightF   = 0.08
  ;res@pmLabelBarOrthogonalPosF =  0.15
  res@cnLevelSelectionMode = "ExplicitLevels"
  res@cnLevels             = (/100,500,1000/)
  res@cnFillColors         = (/12,10,5,3/)

  base = gsn_csm_contour_map(wks, pop, res)

    ;--- 画地形高度等值线
  topo_file = "./ETOPO1_Bed_c_gmt4.grd.nc" ;读入数据
  a         = addfile(topo_file,"r")
  elev_lnd  = a->z({latmin:latmax},{lonmin:lonmax})
  elev_lnd  = where(elev_lnd.le.200 .or. elev_lnd.ge.300,elev_lnd@_FillValue,elev_lnd)

  tres@cnLevelSelectionMode = "ExplicitLevels"
  ;tres@cnLevelSpacingF      = 100
  tres@cnLevels = (/240,280/)
  tres@cnFillOn = False
  tres@cnLineLabelsOn = True
  tres@cnLineLabelPerimOn = False
  tres@cnLineLabelBackgroundColor = "transparent"

  plot2 =  gsn_csm_contour(wks,elev_lnd,tres)

  overlay(base, plot2)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 20:54:13 | 显示全部楼层
救救孩子扒
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 10:43:09 | 显示全部楼层
和师姐讨论了一下,问了两个问题
(1)是地形高度场画shade就很好,画contour感觉不ok,等值线画不出的感觉,很乱
(2)是overlay上层超出的部分怎么办,中国区域外的部分不想画出来

师姐的答案~
(1)如果不要看特别精细的地形分布,比如只想指示出四川盆地、青藏高原位置那种,需要把地形数据进行平滑,但我个人觉得还是shade比较准确,contour怪怪的(但个人因为一些原因只能这样)
(2)师姐的思路是先画出底层map,然后其余数据再往上叠,或者调整上层属性啥的,试了一下不ok。
后来无意中发现蛮有用的示例,先画出底层地图,然后画overlay shade层,overlay contour 层, 通过draworder设置就可以把上层数据不要的部分也mask掉(原来是我没找到正确的draworder属性名),分享一下
http://www.ncl.ucar.edu/Applications/Scripts/overlay_11.ncl

其实就是设置地图层:res@mpFillDrawOrder = "PostDraw"(这个是必须有的);  shade层: shade_res@cnFillDrawOrder  = "PreDraw";contour层:con_res@cnFillDrawOrder   = "Draw"

ps: 虽然我也是小白,但希望思路上能对学弟学妹会有帮助吧。为这个,我确实头秃了一下下,希望学弟学妹不用像我这样疯狂蓐头发,一蓐一大把
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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