爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6438|回复: 4

[脚本编辑] 求助:Grads画台风路径时遇到的问题

[复制链接]
发表于 2015-8-17 16:04:43 | 显示全部楼层 |阅读模式

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

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

x
Grads画台风路径遇到的问题:下的是整个台风过程的气压场,程序是从网上找了改的,但是出现了一些错误,程序如下:
'reinit'  ;*第1部分--从海平面气压场(或1000hPa高度场)中找出台风中心位置,输出到文件
'!rm weizhi-w.txt'   ;*使用追加写入,所以要先删除旧数据文件 !是GRADS调用操作系统命令
'sdfopen e:\77\77yan\10\1105\lujing\pressfc.cdas1.201106.grb2.nc'
i=1
while (i<145) ;*本来应该用<=,但是最后一个位置不对,不用
'set lon 100 140'
'set lat 10 40'
'set t ' i
t=subwrd(result,4)  ;*取得日期
tc=substr(t,8,5)  ;*取得部分日期串
'define slvl=pres_l1/100';
'd slvl'  ;*海平面气压
'define locx=minloc(min(slvl,lat=10,lat=40),lon=106,lon=140)' ;*搜索最低气压经度
'define locy=minloc(min(slvl,lon=106,lon=140),lat=10,lat=40)' ;*搜索最低气压纬度
'd locx'
locxx=subwrd(result,4)
'd locy'
locyy=subwrd(result,4)
'q gr2w 'locxx' 'locyy ;*GRADS坐标转换成经纬度坐标
x=subwrd(result,3)
y=subwrd(result,6)
rc=write('e:\77\77yan\10\1105\lujing\weizhi-w.txt',x ' 'y ' ' tc,append)  ;*将经纬度位置和时间存入文件
*say rc
'c'
i=i+12    ;*只输出08和20时,数据间隔3小时
endwhile
close('e:\77\77yan\10\1105\lujing\weizhi-w.txt')  ;*关闭输出文件
'!cp e:\77\77yan\10\1105\lujing\weizhi-w.txt e:\77\77yan\10\1105\lujing\weizhi-r.txt'  ;*在GS里同一个文件不能既读又写,所以做1个拷贝

'reinit'  ;*第2部分--从上述数据文件(你也可自己编辑)读出位置绘制台风路径
'sdfopen e:\77\77yan\10\1105\lujing\pressfc.cdas1.201106.grb2.nc'
'define slvl=pres_l1/100';
'set mproj latlon'
'set mpdset hires' ;*设置高分辨率地图
'set lon 105 118'  ;*太宽纵坐标显示缺部分
'set lat 15.5 23.5'
'set cmax 0'  ;*把显示最大值设小,是为了只出底图
'set xlint 2'  ;*定义横坐标的标记间隔
'set ylint 2'  ;*定义纵坐标的标记间隔
'set xlopts 1 4 0.22' ;*横坐标 颜色 线宽 大小
'set ylopts 1 4 0.20' ;*纵坐标 颜色 线宽 大小
'set clopts -1 -1 0.20' ;*等值线 颜色 线宽 标记大小
*使用以上定义,基本符合排版要求--图大约5*7CM坐标轴标注约为6号字大小
'd slvl' ;*只为出底图用
read_file=read('e:\77\77yan\10\1105\lujing\weizhi-r.txt')   ;*打开文件进行读取
read_line=sublin(read_file,2)    ;*返回结果分为两行(但仍作为一个串)
lon0=subwrd(read_line,1)  ;*读取第1行中经度
lat0=subwrd(read_line,2)  ;*读取第1行中纬度
date0=subwrd(read_line,3) ;*读取第1行中时间
'q w2xy ' lon0 ' ' lat0  ;*将经纬度转换成GRADS坐标
x0=subwrd(result,3)  ;*取得转换后的X坐标
y0=subwrd(result,6)  ;*取得转换后的Y坐标
'draw mark 3 'x0' 'y0' 0.12'  ;*先标注起始点
'set string  2 '
'set strsiz 0.18 0.22'    ;*时间标注的线宽  大小
*'draw string 'x0-0.1' 'y0+0.2' 'date0''
*使用以上定义,基本符合排版图约5*7CM大小时图中标注约为6号字大小
i=1
while(i<=200)  ;*文件内容200行之内
xbefore=x0
ybefore=y0
read_file=read('e:\77\77yan\10\1105\lujing\weizhi-r.txt')
read_code=sublin(read_file,1) ;*读取文件打开代码
if(read_code>0);break;endif;*读取正常为0,其他要么出错,要么结束
read_line=sublin(read_file,2) ;*读取文件行内容
lon0=subwrd(read_line,1)  ;*取得第1部分
lat0=subwrd(read_line,2)  ;*取得第2部分
date0=subwrd(read_line,3)  ;*取得第3部分
'q w2xy ' lon0 ' ' lat0  ;*将经纬度坐标转换为GRADS坐标
x0=subwrd(result,3)  ;*取得X坐标
y0=subwrd(result,6)  ;*取得Y坐标
*'draw title 1119 "nige" track '
'draw mark 3 'x0' 'y0' 0.12'
'draw line 'xbefore' 'ybefore' 'x0' 'y0''
*if(math_mod(i,2));'draw string 'x0-0.1' 'y0+0.2' 'date0'';endif;
*'draw string 'x0-0.1' 'y0+0.2' 'date0'';
i=i+1
endwhile
'enable print e:\77\77yan\10\1109\lujing\track.gmf'  ;*图形输出
'print'
'disable print'

运行后的问题是,在运行中,可以看出台风最低气压移动的轨迹,但是在txt文件里都是一个位置:
121.295 24.2249 22:0
121.295 24.2249 22:12
121.295 24.2249 23:0
121.295 24.2249 23:12
121.295 24.2249 24:0
121.295 24.2249 24:12
121.295 24.2249 25:0
121.295 24.2249 25:12
121.295 24.2249 26:0
121.295 24.2249 26:12
121.295 24.2249 27:0
121.295 24.2249 27:12
121.295 24.2249 22:0
121.295 24.2249 22:12
121.295 24.2249 23:0
121.295 24.2249 23:12
121.295 24.2249 24:0
121.295 24.2249 24:12
121.295 24.2249 25:0
121.295 24.2249 25:12
121.295 24.2249 26:0
121.295 24.2249 26:12
121.295 24.2249 27:0
121.295 24.2249 27:12
121.295 24.2249 22:0
121.295 24.2249 22:12
121.295 24.2249 23:0
121.295 24.2249 23:12
121.295 24.2249 24:0
121.295 24.2249 24:12
121.295 24.2249 25:0
121.295 24.2249 25:12
121.295 24.2249 26:0
121.295 24.2249 26:12
121.295 24.2249 27:0
121.295 24.2249 27:12
这个位置位于台湾,可是我画的台风有些是要经过台湾的,所以这个区域不能忽略。
求指导,这个问题怎么解决
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2015-8-17 16:18:42 | 显示全部楼层
{:5_275:}{:5_275:}求指导
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2015-8-17 22:15:46 | 显示全部楼层
自己顶
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2015-9-8 09:59:33 | 显示全部楼层
请教一下楼主,你的数据是最佳路径数据吗,还是做了什么改变
密码修改失败请联系微信:mofangbao
发表于 2020-3-29 11:08:58 | 显示全部楼层
楼主你的问题解决了吗?你可以尝试一下将一开始设置的经纬度范围删除。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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