[转]grads中站点处理和oacres&maskout函数应用心得
2012-12-04 11:43 H_OU 阅读(5635) 评论(0) 编辑 收藏 举报SJ 发表于: 2011-1-05 13:22 来源: MNMUC空间
昨儿刚刚帮同事画了两张降水图(不同时间段的),很是费劲,中间碰到若干问题,但好在最后基本达到了满意的效果,下面把这次画图中遇到的问题及解决办法贴出来,供大家参考或指正:
1,数据处理的问题
由于micaps的24小时降水资料中,并不是每个时次的文件里的站点个数都是相同的,就更不用提两个文件里有完全相同的站点了,这样就给各个站点降水的累加处理造成了极大的困难(如果一开始就有人或专门的机构来做这件事,将大大提高科研人员的工作效率),但本帖不打算过多描述数据处理的情形,因此这个问题就到此为止。
2,站点数据中打网格和maskout的联系
降水的站点资料处理完毕并转成grads能识别的二进制格式后,就需要给站点数据打网格了,这个网格是用于站点资料差值使用的(如果用grads,就要用格点资料),此时就涉及到要打一个什么分辨率的网格了,在这次画图过程中,我一共打了两个全球网格,一个是0.1X0.1(细网格)的另一个是0.5X0.5(粗网格)的。然后按部就班的使用了如下的语句:
'set mpdset china' * 设定一个地图,用于只画中国范围内的物理量
'define a=oacres(g,tt.2,XXXX)' * 插值函数,把变量tt插值到网格g上,其中XXXX代表影响半径
'define a1=maskout(a,a-8)' * maskout(n1,n2)里第一个变量n1是我们要画的物理量,第二个变量n2的意思是只画当其值大于零时的物理量n1,
* 当然n1和n2是一一对应的,而这个例子中的意思是,只画物理量a的值大于4的部分
'define aa=smth9(a1)' * 平滑函数
'run province-basemap china aa' * 只画中国范围内物理量
下面通过格点的分辨率-2种,和oacres中的影响半径做组合实验:
(1)粗网格+XXXX(50,30,20,10,5,1)
见图一
(2)细网格+XXXX(20,10,5,1)
见图二
(3)细网格+XXXX(50,30,20,10)
见图三
(4)粗网格+XXXX(50,30,20)50是grads中默认最大的数值
见图四
从这四张图中,可以看到比较大的差别,这也是我画图时思考的一个顺序。
首先,我用的是选择1,画出图后我发现边缘极不光滑,有明显的马赛克的痕迹,此时我就想,如果我把网格打细点,马赛克的大小会不会缩小,边缘就会相应光滑点呢;于是,我就是用了选择2,效果还是显著的,但是又出现个问题,就是图中出现很多一个圆一个圆的色斑,然后我就想到是不是我的影响半径设置过小导致的;接着,我就使用了选择3,并最终得到了比较满意的结果。这张图是08年南方冰冻雨雪灾害期间的一个降水累积情况。
结论:
1,maskout的作用有点类似cmax或cmin,但作用觉得比后两种更大,当然需灵活运用才行。
2,maskout针对的是一个格点一个格点来做的,因此,如果想使其消隐后的格点空白不明显,可以选择打一个分辨率较高的网格。
3,oacres中插值函数的影响半径选择比较重要,有时需要多调试几次,然后选择最好的一种。
P.S.:图四是我为了写这篇帖子另画的一张图,亏了当时直接从选择1跳到选择2,没有尝试这种解决方法,偏差过于巨大了;-)
P.P.S.:这是我用来画中国变量的相应数据文件和gshttp://www.mnmuc.org/thread-568-1-1.html
1,数据处理的问题
由于micaps的24小时降水资料中,并不是每个时次的文件里的站点个数都是相同的,就更不用提两个文件里有完全相同的站点了,这样就给各个站点降水的累加处理造成了极大的困难(如果一开始就有人或专门的机构来做这件事,将大大提高科研人员的工作效率),但本帖不打算过多描述数据处理的情形,因此这个问题就到此为止。
2,站点数据中打网格和maskout的联系
降水的站点资料处理完毕并转成grads能识别的二进制格式后,就需要给站点数据打网格了,这个网格是用于站点资料差值使用的(如果用grads,就要用格点资料),此时就涉及到要打一个什么分辨率的网格了,在这次画图过程中,我一共打了两个全球网格,一个是0.1X0.1(细网格)的另一个是0.5X0.5(粗网格)的。然后按部就班的使用了如下的语句:
'set mpdset china' * 设定一个地图,用于只画中国范围内的物理量
'define a=oacres(g,tt.2,XXXX)' * 插值函数,把变量tt插值到网格g上,其中XXXX代表影响半径
'define a1=maskout(a,a-8)' * maskout(n1,n2)里第一个变量n1是我们要画的物理量,第二个变量n2的意思是只画当其值大于零时的物理量n1,
* 当然n1和n2是一一对应的,而这个例子中的意思是,只画物理量a的值大于4的部分
'define aa=smth9(a1)' * 平滑函数
'run province-basemap china aa' * 只画中国范围内物理量
下面通过格点的分辨率-2种,和oacres中的影响半径做组合实验:
(1)粗网格+XXXX(50,30,20,10,5,1)
见图一
(2)细网格+XXXX(20,10,5,1)
见图二
(3)细网格+XXXX(50,30,20,10)
见图三
(4)粗网格+XXXX(50,30,20)50是grads中默认最大的数值
见图四
从这四张图中,可以看到比较大的差别,这也是我画图时思考的一个顺序。
首先,我用的是选择1,画出图后我发现边缘极不光滑,有明显的马赛克的痕迹,此时我就想,如果我把网格打细点,马赛克的大小会不会缩小,边缘就会相应光滑点呢;于是,我就是用了选择2,效果还是显著的,但是又出现个问题,就是图中出现很多一个圆一个圆的色斑,然后我就想到是不是我的影响半径设置过小导致的;接着,我就使用了选择3,并最终得到了比较满意的结果。这张图是08年南方冰冻雨雪灾害期间的一个降水累积情况。
结论:
1,maskout的作用有点类似cmax或cmin,但作用觉得比后两种更大,当然需灵活运用才行。
2,maskout针对的是一个格点一个格点来做的,因此,如果想使其消隐后的格点空白不明显,可以选择打一个分辨率较高的网格。
3,oacres中插值函数的影响半径选择比较重要,有时需要多调试几次,然后选择最好的一种。
P.S.:图四是我为了写这篇帖子另画的一张图,亏了当时直接从选择1跳到选择2,没有尝试这种解决方法,偏差过于巨大了;-)
P.P.S.:这是我用来画中国变量的相应数据文件和gshttp://www.mnmuc.org/thread-568-1-1.html
0.5-rain-10-5-1.gif
0.1-rain-20-10-5-1.gif
08-rain.gif
0.5-rain-50-30-20.gif