登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用GrADS作图时,常会遇到要把图形控制字在一定地理边界内的情况(例如,某个省或某个区域);用站点资料绘制等值线或填色图时,也通常会把地理边界以外的信息屏蔽掉。我在另一个帖子《GrADS中Basemap方法的应用》中提到了用basemap方法来解决这个问题,但basemap有其缺陷,就是你用basemap屏蔽掉边界以外的信息以后,再画下一个变量的时候边界以外的区域同样不能显示。现在介绍另一种方法:maskout。maskout是将一个变量在边界内的部分保留原来的值,而在边界外则一概赋给一概新的值:0,因此最后的结果就是只在边界内有值,从而达到边界控制的效果。下面详细介绍maskout方法的使用。
首先,要使用maskout就得有maskout文件,这里介绍的使用MeteoInfo来制作maskout文件。下载MeteoInfo,安装后启动MeteoInfo。
第一步,添加图层,在弹出对话框中选择“bou2_4p.shp”→“打地图文件”,将地图文件加载到程序界面中。可以通过缩放来调节地图到你想要的大小。
第二步,获取底图ID。在工具栏中选择“图元属性”,这时候鼠标指针会变成一个“ i ”的形状。单击你要选择的区域,比如广东省,会弹出一个图元属性的窗口,index后面的数字就是你所选择区域的图元ID,如下图右中的“897”。
第三步,制作maskout文件。选择菜单栏中的“工具”→“输出地图数据”,弹出输出数据的对话框。选择你要的图元,设置输出格式为GrADS Maskout File,然后点“输出”。
第四步 ,输出maskout文件。步骤三点“输出”后,会弹出一个“另存为”的对话框,设置好路径、文件名后(这里假设是XX),“保存”。这是时会弹出一个“Grid Set”对话框,可以设置起始经纬度和分辨率,其中分辨率和格点数只需要设置一项就行,另一项会跟着调整。设置好之后“OK”。如果设置的格点很细(例如0.01),则需要较长的时间来生成maskout文件。
然后到你保存文件的目录下看是否成功生成了两个文件xx.dat、xx.ctl。如果有,则要修改ctl文件。“TDEF 1 LINEAR xxxxxxxxxx”这一行中,改成与数据文件的ctl中TDEF相同,建议用笨办法,即把数据文件的描述文件中的这一行复制过来,避免出错。如果两个时间设置不一致,就会出错。
第五步,画图。前面的四个步骤都是准备maskout文件,准备好之后就可以画图了。Maskout的语法起始很简单,就是maskout(VAR,MASK),其中VAR是数据文件中的变量,MASK是maskout文件的变量。
最后附上一段脚本和图。
'reinit'
'open f:/522/ncep/522.ctl'
'open f:/2/M2011052206.ctl'
'open f:/2/2011052206.ctl'
'set lon 108 118'
'set lat 20 26'
'set xlint 1'
'set ylint 1'
'set t 8'
'set mpdset guangdong'
'define a=oacres(mask.2,r.3,50,25,10)'
'set rbrange -20 100'
'set gxout shaded'
'set rbrange -10 100'
'set cmin 10'
'd smth9(maskout(a,mask.2))'
'set gxout contour'
'set cthick 5'
'set ccolor rainbow'
'set csmooth on'
'set cint 5'
'set lon 107 119'
'set lat 19 27'
'set lev 925'
'define div= hdivg(ugrdprs,vgrdprs)*1e6'
'set lon 108 118'
'set lat 20 26'
'd div'
'set mpdset guangdong_q'
'draw map'
'writehz 1.5 7.8 925hPa散度与未来6小时雨量'
'set strsiz 0.15'
'draw string 8 8 2011-05-22 06:00'
'cbarn 0.75 1 10.5'
' printim f:/2011052206.JPG white y600 x800'
新版本的MeteoInfo相关用法http://bbs.06climate.com/forum.p ... &extra=page%3D1
|