爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14192|回复: 26

MeteoInfo脚本教程(三):运行脚本

[复制链接]

新浪微博达人勋

发表于 2014-11-25 14:53:56 | 显示全部楼层 |阅读模式

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

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

x
这里讲讲运行MeteoInfo脚本的几种方式:


1. 在MeteoInfo脚本编辑器(通过“工具 -> 脚本”菜单打开)中运行。在脚本编辑器中编写脚本或者打开已有的脚本程序,然后点击工具栏中的“Run Script”按钮运行,脚本中的打印语句结果会显示在脚本编辑器中的文本框中。如果出错,错误信息也会在文本框中显示,通常错误信息包含了出错语句的行号和具体的错误内容,可以有针对性的进行修改。


2. 在命令行环境中运行。MeteoInfo软件的安装路径中有meteoinfo.bat和meteoinfo.sh两个文件,分别是为了在Windows和Linux(Unix, Mac OS等)利用命令行运行MeteoInfo桌面和脚本程序用的。最好在将MeteoInfo路径加入系统路径环境变量中,以方便应用(下面的例子假定已经MeteoInfo路径已经在系统路径环境变量中)。如果在命令行中只输入meteoinfo.bat或者meteoinfo.sh命令则会运行MeteoInfo桌面软件,要运行脚本程序的话只需在上述命令后面跟空格然后是脚本文件路径。例如运行test.py脚本文件:
    Windows系统:meteoinfo.bat D:\Temp\test\test.py
    Linux系统:meteoinfo.sh /cma/u/wangyq/test/test.py


3. 在系统自动定时任务中运行。对于需要自动定时运行的MeteoInfo脚本程序可以加入系统定时任务中,Windows中是“任务计划程序”,Linux中是crontab。
    Windows系统:最好将运行脚本的命令放入一个批处理文件(.bat)中,然后将该批处理文件加入任务计划程序中。
    Linux系统:将运行脚本的命令放入一个shell脚本中,然后在crontab中设置。

这里需要特别讲一下Java的headless模式。crontab中缺省只有一些最基本的环境变量,没有用户自定义的PATH, DISPLAY等变量,PATH可以在shell脚本中定义一下,但DISPLAY变量在shell脚本中定义会有问题,导致图形部分无法运行。好在Java专门有headless模式来解决这个问题,模式,在该模式下无需显示器、键盘、鼠标等硬件,也就是说不用设置DISPLAY变量。然而该模式限制了heavyweight组件的应用,比如:Button, Checkbox, Choice, Dialog, FileDialog, Frame, Label, List, Menu, MenuBar, MenuItem, PopupMenu, Scrollbar, ScrollPane, TextArea, TextField, Window。通常在MeteoInfo脚本绘图时要用到MapLayout类,该类继承自JPanel,正好是headless模式支持的组件。MeteoInfo脚本教程(二)中的脚本程序去掉最后的创建JFrame部分语句就可以用headless模式运行。用headless模式运行脚本需要在meteoinfo.sh命令后加-b选项,比如:
    meteoinfo.sh -b /cma/u/wnagyq/test/test.py

本帖被以下淘专辑推荐:

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

新浪微博达人勋

发表于 2014-11-25 16:28:21 | 显示全部楼层
王老师辛苦,谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2014-11-25 17:01:21 | 显示全部楼层
给王老师赞一个,以后有很多东西打算转用MI了……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-10 19:52:23 | 显示全部楼层
赞一个
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-10-9 14:55:03 | 显示全部楼层
王老师您好。
根据您的教程在meteoinfolab里面写了程序,可以完美出图。
但是为什么在命令行下调用meteoinfo.bat +py文件的时候,会出现类库没有被引入的情况呢,是否意味着在命令行调用py脚本文件的时候,开头还是需要重新引入meteoinfo相关的类库?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-9 15:20:50 | 显示全部楼层
weiqiyun0049 发表于 2015-10-9 14:55
王老师您好。
根据您的教程在meteoinfolab里面写了程序,可以完美出图。
但是为什么在命令行下调用meteoi ...

如果是MeteoInfoLab脚本,用milab.bat执行。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-10-9 16:02:10 | 显示全部楼层
MeteoInfo 发表于 2015-10-9 15:20
如果是MeteoInfoLab脚本,用milab.bat执行。

谢谢王老师指点,然而虽然没有报错,但是依然没有画出图来。
相反的在meteoinfolab里面执行就可以出图,这又是什么情况呢?是出图的命令savefig('D:/Temp/pytest.png', 2000, 1500)有问题么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-9 16:41:23 | 显示全部楼层
weiqiyun0049 发表于 2015-10-9 16:02
谢谢王老师指点,然而虽然没有报错,但是依然没有画出图来。
相反的在meteoinfolab里面执行就可以出图, ...

savefig命令应该没问题,我刚在我的机器上测试过,可以在命令行运行并出图。将MeteoInfo目录放进PATH环境变量了吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-10-9 21:33:54 | 显示全部楼层
MeteoInfo 发表于 2015-10-9 16:41
savefig命令应该没问题,我刚在我的机器上测试过,可以在命令行运行并出图。将MeteoInfo目录放进PATH环境 ...

我调用命令行都是用绝对路径的,而且环境变量也添加了,很奇怪为什么会这样,命令行下程序跑完了也没有出错啊,就是不出图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-9 22:00:50 | 显示全部楼层
weiqiyun0049 发表于 2015-10-9 21:33
我调用命令行都是用绝对路径的,而且环境变量也添加了,很奇怪为什么会这样,命令行下程序跑完了也没有出 ...

会不会是权限的问题,输出路径不要是C盘,或者用管理员权限运行。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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