请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 6393|回复: 27

发布MeteoInfo 1.0.2版

[复制链接] |关注本帖

新浪微博达人勋

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

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

x
本帖最后由 MeteoInfo 于 2012-1-5 22:11 编辑

发布MeteoInfo 1.0.2版,主要增加了一页多图功能,也就是多个地图框架Map Frame(在ArcGIS中叫Data Frame)。具体操作方式参考了ArcGIS,使用过这个软件的用户应该很容易操作多图功能。

菜单发生了变化,将以前的“Map”菜单改为“Insert”。子菜单的功能顾名思义就可以了。
Image00076.png

添加Map Frame:用上述“Insert” -> “Map Frame”菜单,或者在“Layers”区域选中一个Map Frame,点击鼠标右键,在快捷菜单中选择“New Map Frame”。
Image00077.png

添加的Map Frame会显示在“Layers”区域,同时会在“Layout”区域增加一个地图(Layout Map),当然它目前是空的:
Image00078.png

活动地图框架(Active Map Frame)的概念:如果项目只有一个Map Frame,Active Map Frame当然就是这个Map Frame了。如果有多个Map Frame,其中有且只有一个Active Map Frame,菜单和工具栏中的很多操作都是针对Active Map Frame的,比如工具栏中的添加图层功能、菜单中的投影功能等。Active Map Frame会在“Layers”区域以粗体显示(见上图),切换Active MapFrame可以用Map Frame的右键快捷菜单中的“Active”子菜单,或者在“Layout”中选中某个Layout Map(Laout Map和Map Frame是一一对应的)。设置新添加的Map Frame为Acitve,并添加图层:
Image00794.png

经过一番设置可以获得类似如下的结果:
Image00793.png
Image00795.png

新版本里没有了插图(Illustration)的概念,南海脚图可以用多Map Frame来实现(当作作业了)。新版对一些类进行了重构,Script的一些写法有了变化,以后有空再来细说。


密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 20:19:22 | 显示全部楼层 |取消关注该作者的回复
版主原来是去潜水研究这个了。MeteoInfo是伴随我成长的软件哦,虽然在学会grads后就不用了,但一直关注它的每一个版本,都会下载试用一翻。
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 20:12:58 | 显示全部楼层 |取消关注该作者的回复
太棒啦,解决了我的大问题
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 21:14:38 | 显示全部楼层 |取消关注该作者的回复
MeteoInfo好用,谢谢了
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 22:23:40 | 显示全部楼层 |取消关注该作者的回复
王老师真给力啊!支持,膜拜中……
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 22:40:05 | 显示全部楼层 |取消关注该作者的回复
哇塞~~版主厉害。
这么多的更新。。。。
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-5 23:12:36 | 显示全部楼层 |取消关注该作者的回复

亲,注意哦,更新到1.0.2后,原先的脚本程序就没法直接用咯~会提示报错,可能是版主更新了一些命名。
我刚才就纳闷呢,怎么好好的脚本不好使了呢?
后面又更新回1.0.1才正常哈。

大家记得留存好老版本。1.0.2版本后很多东西有变化的。
密码修改失败请联系qq:937062711

新浪微博达人勋

 成长值: 2550
发表于 2012-1-6 08:17:27 | 显示全部楼层 |取消关注该作者的回复
一个很实用的功能啦
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2012-1-6 08:47:32 | 显示全部楼层 |取消关注该作者的回复
本帖最后由 MeteoInfo 于 2012-1-6 08:58 编辑

首贴里已经讲到script的写法会有变化,主要是去掉了MapLayout中的DefaultTiltle、DefaultLegend、DefaultIllustration,DefaultLayoutMap用ActiveLayoutMap取代。这样是为了增加脚本的灵活性,之前的设计虽然方便,但无法做出复杂图形。

去掉了SetTitle()函数,这个函数其实是对之前的DefaultTitle起作用。
取代方式:myApp.MapLayout.AddText("MeteoInfo script demo", 320, 20),后面两个参数是文字被添加的位置x,y;这个函数还有重载形式:myApp.MapLayout.AddText("MeteoInfo script demo", 320, 20, "黑体",12),后面两个参数分别是字体名和字体大小。

在MapLayout中添加LayoutLegend:
aLegend = myApp.MapLayout.AddLegend(660, 100)         #后面两个参数是位置x,y
aLegend.LegendStyle = LegendStyleEnum.Bar_Vertical       #LegendStyle是枚举类型

去掉脚本中的DefaultIllustration相关的语句,南海脚图的实现方式以后再讲。

将脚本中的DefaultLayoutMap替换为ActiveLayoutMap。

通过以上变化,以前的脚本程序应该可以运行了。下面是一个简单的新脚本:

import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
from System.Windows.Forms import *
from System.Drawing import *
clr.AddReference("MeteoInfoC.dll")
from MeteoInfoC import *
from MeteoInfoC.Layout import *

BaseDir = "C:\\Program Files (x86)\\MeteoInfo\\"
MapDir = BaseDir + "Map\\"
DataDir = BaseDir + "Sample\\GrADS\\"

myApp = MIApp()
myApp.MapLayout.AddText("MeteoInfo script demo", 320, 20)
aLegend = myApp.MapLayout.AddLegend(660, 100)
aLegend.LegendStyle = LegendStyleEnum.Bar_Vertical
myApp.OpenLayer(MapDir + "country1.shp")
myApp.SetLegendBreak("country1.shp",0,Color.Yellow,Color.Blue,1,True,False,True)
myApp.OpenGrADSData(DataDir + "model.ctl")
myApp.SetDrawType("shaded")
t = 2
myApp.TimeIndex = t
myApp.Display("PS")
myApp.MoveLayerToTop("country1.shp")
#myApp.ZoomToLastLayer()
myApp.ProjectLayers("+proj=moll+lon_0=105")
myApp.MapLayout.PaintGraphics()
#myApp.SaveFigure(".\\try.png")
Application.Run(myApp)

Image00079.png
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-1-6 12:16:19 | 显示全部楼层 |取消关注该作者的回复
牛人~~~~佩服呀~~~
密码修改失败请联系qq:937062711
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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