爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13181|回复: 24

[作图] 如何只做出shapefile数据中对应区域的ncl图

[复制链接]

新浪微博达人勋

发表于 2017-3-2 10:28:54 | 显示全部楼层 |阅读模式

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

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

x
有京津冀地区的shapefile文件,想只做出京津冀地区的气温变化图,
想请教坛友三个问题
1.如何只做京津冀区域的图像,而其他区域都是白色?
2.图中白色的部分太多,和colorbar应该有关系,但是我尝试用opts@cnFillPalette=“BlWhRe”等调整过几次,都出现了color index (246) exceeds size of palette, defaulting to foreground color for entry (101)类似的警告,然后图上大面积黑色,该如何设置这个colorbar才能使只有0是白色,其他都有颜色呢?
已有代码如下:
begin

;数据加载

    dir1="/data1/Jingjinji2000-201001/"                      ;;;;;;;;;;;a1 前一个年份
    files1= "wrfout2_2000_01"
    a1=addfiles(dir1 + files1 + ".nc", "r")

    dir2="/data1/Jingjinji2010-201001/"                        ;;;;;;;;;;;a2 后一个年份
    files2= "wrfout2_2010_01"
    a2=addfiles(dir2 + files2 + ".nc", "r")

    b=addfile("./wrfout_d02_2010-01-01_00:00:00.nc", "r")

    type="pdf"
    wks=gsn_open_wks(type, "ave_diff_geo2000-2010_201001(test_color)")

;地图参数设置

    res=True
    res@cnFillMode="RasterFill"
    pltres=True
    mpres=True
    ;mpres@mpFillOn = True
    mpres@mpDataBaseVersion           = "Ncarg4_1"
    mpres@mpDataSetName               = "Earth..4"
    mpres@mpNationalLineColor         = "Black"
    mpres@mpUSStateLineColor          = "Black"
    mpres@mpOutlineBoundarySets       = "AllBoundaries"

;两期数据做差

    xhr1 =wrf_user_getvar(a1, "T2", -1)
    tc1=dim_avg_n(xhr1, 0)
    tc1=tc1-273.16
    tc1@description="Surface Temperature"
    tc1@units="C"
    xhr2 =wrf_user_getvar(a2, "T2", -1)
    tc2=dim_avg_n(xhr2, 0)
    tc2=tc2-273.16
    tc2@description="Surface Temperature"
    tc2@units="C"
    tc=tc2-tc1
    ;tc=tc*2
    tc@description="Surface Temperature"
    tc@units="C"

;绘图设置

    opts=res
    opts@cnFillOn=True
    ;opts@cnFillPalette="BlWhRe"
    opts@ContourParameters=(/-1.,1.,0.02/)
    opts@gsnSpreadColorEnd=-10
    contour_tc=wrf_contour(b, wks, tc, opts)        ;添加的是多个文件,b该如何添加
    delete(opts)

    plot=wrf_map_overlays(b, wks, (/contour_tc/), pltres, mpres)
end

                               
登录/注册后可看大图



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

新浪微博达人勋

 楼主| 发表于 2017-3-2 10:32:25 | 显示全部楼层

                               
登录/注册后可看大图
QQ截图20170302103600.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-2 10:48:21 | 显示全部楼层
想请问各位,如何才能做出类似这样的图,除了需要的区域,四周都比较干净
QQ截图20170302105122.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-2 11:34:02 | 显示全部楼层
可以用meteoinfo做个底图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-2 14:41:42 | 显示全部楼层
尽头的尽头 发表于 2017-3-2 11:34
可以用meteoinfo做个底图

谢谢您的回复,能大概科普一下思路吗,因为没有用过meteinfo,但是有听说过,大概是先用shapefile在meteinfo中做个底图,再放到ncl中来做图是吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-3 08:58:07 | 显示全部楼层
FrankieLJY 发表于 2017-3-2 14:41
谢谢您的回复,能大概科普一下思路吗,因为没有用过meteinfo,但是有听说过,大概是先用shapefile在metei ...

是的,可以参考http://bbs.06climate.com/forum.p ... &extra=page%3D1
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-3 09:52:32 | 显示全部楼层
可以用shapefile_mask_data函数对数据做mask,会把shape外区域都变成缺测值,画图时就会只显示区域内的了,还有用gc_inout做mask也很好用

另外colorbar的话白色太多的话你换种没有white的颜色方案不是就可以了?比如“BlRe"?一般颜色都是在某个范围内设为某个颜色,如果非得要将0值设为白色的话我建议你参考官网classification中的例子,可以将一个值设为一个颜色。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-7 22:12:12 | 显示全部楼层
pigzero527 发表于 2017-3-3 09:52
可以用shapefile_mask_data函数对数据做mask,会把shape外区域都变成缺测值,画图时就会只显示区域内的了, ...

非常感谢你的指点 已经做出来了 应该还是用gc_inout的方法
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-3-7 22:13:16 | 显示全部楼层
尽头的尽头 发表于 2017-3-3 08:58
是的,可以参考http://bbs.06climate.com/forum.php?mod=viewthread&tid=2754&extra=page%3D1

谢谢版主的指点 用meteinfo是不是像arcgis一样简单啊 还是说也需要自己写代码呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-7 22:18:14 | 显示全部楼层
FrankieLJY 发表于 2017-3-7 22:13
谢谢版主的指点 用meteinfo是不是像arcgis一样简单啊 还是说也需要自己写代码呢

复杂一些的要写代码,做底图当然不用啦
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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