爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7290|回复: 11

MeteoInfo脚本简化尝试

[复制链接]

新浪微博达人勋

发表于 2014-12-29 11:38:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2014-12-29 11:43 编辑

尽管已经出了MeteoInfo脚本程序的系列教程,收效如何却很难说。有人抱怨写MeteoInfo脚本太复杂,想想也是,目前是按照面向对象编程的思路来写脚本,对于很多人来说学习起来有些难(MeteoInfo类库还是很复杂的),类似GrADS那样用一些命令来写脚本相对容易一些。对此也进行了一些思考,鉴于Java语言本身的一些限制,比如不支持可变参数和运算符重载,考虑用更灵活的Python脚本(Jython)进行扩展,来实现能用简单命令写脚本程序的功能。

发布了MeteoInfo Java 1.1.9R1版,非常初步地实现了上面的设想。引入了JNumeric库的代码来实现数组的计算。MeteoInfo目录中增加了pylib目录,其中的mipylib目录是Jython的一个模块,已经在启动脚本解释器是进行了加载。其中的miscript.py文件里面有一些初步的函数命令,借鉴了MatLab和Matplotlib的用法。可以通过扩展miscript.py文件中的函数来扩展MeteoInfo脚本命令功能。

很欢迎Python高手加入扩展功能的工作!

可以用交互式方式来运行相关命令(类似GrADS、MatLab的交互式方式),也可以运行一段脚本程序或文件。交互式的方式可以用MeteoInfo桌面软件中的脚本控制台,或者在命令行中输入 meteoinfo -i 。目前已经具备一些简单的功能,是不是和Matlab很像呀(http://cn.mathworks.com/help/matlab/creating_plots/using-high-level-plotting-functions.html):
Image00777.png
Image00778.png
Image00779.png
Image00780.png
Image00781.png

本帖被以下淘专辑推荐:

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

新浪微博达人勋

 成长值: 19710
发表于 2014-12-29 12:34:55 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2014-12-29 12:47:04 | 显示全部楼层
本帖最后由 沙颖凯 于 2014-12-28 21:51 编辑

脚本繁琐说的很对,但我觉得面向对象没有问题,是模块分的有点太细了,上来十几行导入,而且有些对象的名字太长了,增加了出错几率和调试难度,对初学者来说不“复制粘贴”一些已有的程序块根本写不出东西。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-29 13:02:02 | 显示全部楼层
沙颖凯 发表于 2014-12-29 12:47
脚本繁琐说的很对,但我觉得面向对象没有问题,是模块分的有点太细了,上来十几行导入,而且有些对象的名字 ...

其实从运行效率来说肯定是面向对象的方式更好一些,可以精确的导入相关的类。简化的方式其实需要在一开始导入相关的所有类(有可能很多类用不上),当然优点也是明显的:简单。

模块细是面向对象编程的一个特点,增加模块的可重复利用性,MeteoInfo的复杂性也决定了模块会比较多。名字长一点是为了可读性,看名字就大概知道是做什么的。

其实matplotlib提供类似MATLAT的命令函数也是为了学习简单,高级用户当然也可以用面向对象的思想来写脚本。MeteoInfo以后也会提供简单脚本编写和高级的面向对象脚本编写两种方式来给用户提供方便。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-29 13:07:37 | 显示全部楼层
MeteoInfo 发表于 2014-12-29 13:02
其实从运行效率来说肯定是面向对象的方式更好一些,可以精确的导入相关的类。简化的方式其实需要在一开始 ...

王老师,我能不能在meteoinfo上接入自己的数据IO接口和数据处理接口。如果我想以meteoinfo作为一个平台开发我的产品算法,从数据的接入和中间的数据处理,到最后的画图会不会有什么限制
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-29 13:37:36 | 显示全部楼层
MeteoInfo 发表于 2014-12-28 22:02
其实从运行效率来说肯定是面向对象的方式更好一些,可以精确的导入相关的类。简化的方式其实需要在一开始 ...

王老师说的很对,可能也和编程习惯有关系吧,至少MeteoInfo的帮助文档还是很详细的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-29 14:04:12 | 显示全部楼层
又是那隻貓 发表于 2014-12-29 13:07
王老师,我能不能在meteoinfo上接入自己的数据IO接口和数据处理接口。如果我想以meteoinfo作为一个平台开 ...

做二次开发有两种方式:

1、引用MeteoInfo类库进行二次开发,论坛里有相关教程贴。

2、开发一个MeteoInfo的插件,比如TrajStat插件,TrajStat是开源的,可以从源代码中学习插件的开发。

两种方式都没有什么限制。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-29 14:06:12 | 显示全部楼层
MeteoInfo 发表于 2014-12-29 14:04
做二次开发有两种方式:

1、引用MeteoInfo类库进行二次开发,论坛里有相关教程贴。

谢谢王老师
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2014-12-29 17:05:29 | 显示全部楼层
python的感觉…
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-30 15:27:10 | 显示全部楼层
厉害
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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