请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4010|回复: 6

[作图] 【求助】添加shp地图文件后怎么除去地图外填色部分

[复制链接]

新浪微博达人勋

发表于 2019-11-25 16:07:16 | 显示全部楼层 |阅读模式

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

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

x
求助!在用ncl制作贵州省地图时,发现自带地图有边界缺失部分,叠加贵州省地图后出现部分地区并未填色,然后想着采用shp文件直接进行处理,但是在用插值后的数据画填色图中出现超出边界部分,自己尝试了很多方法,仍没有办法解决去除边界外填色部分,还请各位大神帮帮忙抽空给指导一下,万分感谢!

画图的程序代码如下:
  minlat = 24   
  maxlat = 30  
  minlon = 103  
  maxlon = 110  

  wks  = gsn_open_wks("x11","guizhou_Map")  
  gsn_merge_colormaps(wks,"MPL_Purples","MPL_Greens")

  res                            = True            
  res@gsnMaximize               = True
  res@gsnDraw                    = False
  res@gsnFrame                   = False

  res@tmXTOn                     = False
  res@tmYROn                     = False
  res@gsnAddCyclic               = False
;------------------------------------------------------
    res@mpFillOn                      = True
    res@mpDataBaseVersion      = "LowRes"  
    res@mpOutlineOn               = False   
    res@mpLandFillColor           = "white"  

;---Zoom in on area of interest   
    res@mpLimitMode           = "LatLon"  
    res@mpMinLatF              = minlat   
    res@mpMaxLatF             = maxlat   
    res@mpMinLonF             = minlon  
    res@mpMaxLonF            = maxlon  
;-----------------------------------------------------
  res@cnInfoLabelOn          = False
  res@cnLinesOn                = False
  res@cnFillOn                   = True

  res@cnLineLabelsOn                = False
  res@cnLevelSelectionMode       = "ExplicitLevels"
  res@cnLevels                          = (/145,150,155,160,165,170,175,180,185,190,195,200,205/)

  res@lbLabelBarOn                   = True

  res@gsnSpreadColorStart              = 10
  res@gsnSpreadColorEnd               = 120
  res@lbLabelFontHeightF               = 0.01   
  res@pmLabelBarOrthogonalPosF   = 0.15   ;调节色标大小
  res@pmLabelBarHeightF               = 0.05

  map_plot = gsn_csm_contour_map(wks,gridtd,res)  ;画填色图
;****************************************************************************  
; sections for shapefiles  
;****************************************************************************  
;---加上省级区域地图   
  shpfn2="Guizhou_province.shp"  

  gres   =  True   
  gres@gsEdgesOn   =True  
  gres@gsColors       = -1      ;省内填色透明

shp_plot= gsn_add_shapefile_polygons(wks,map_plot,shpfn2,gres)  




贴出程序所出的图

贴出程序所出的图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-11-29 16:21:47 | 显示全部楼层
gc_inout函数
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-11-29 18:18:08 | 显示全部楼层

是去掉外面的吗?试过只保存里面的,但是画出的图边界是方块的,就是一个地区一个方块一个方块的填图
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-1 11:26:43 | 显示全部楼层
我以前画中国地图的时候也遇到过,res@cnFillDrawOrder = "PreDraw",然后发现是画图顺序的问题,这个设置解决了,不知道你是不是一样的问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-4 17:04:46 | 显示全部楼层
你的问题解决了吗?可以参考我今天的帖子来做“使用shapefile_mask_data方法”
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-12-4 17:07:07 | 显示全部楼层
map_plot = gsn_csm_contour_map(wks,gridtd,res)  ;画填色图
这里用 gsn_csm_contour 代替,然后单独在画mapid = gsn_csm_map ,最后再画gsn_add_shapefile_polygons边界线,地图叠加等值线图
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-18 13:38:24 | 显示全部楼层
res@mpFillDrawOrder="PostDraw"
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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