- 积分
- 55950
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2012-1-6 08:47:32
|
显示全部楼层
本帖最后由 MeteoInfo 于 2012-1-6 08:58 编辑
孤蓝et 发表于 2012-1-5 23:12
亲,注意哦,更新到1.0.2后,原先的脚本程序就没法直接用咯~会提示报错,可能是版主更新了一些命 ...
首贴里已经讲到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)
|
|