爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6443|回复: 8

脚本绘制MICAPS第11类数据的问题【已解决】

[复制链接]

新浪微博达人勋

发表于 2011-12-8 22:56:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 孤蓝et 于 2011-12-9 17:07 编辑

问题解决方法:
更新12月9日的dll解决本问题。


问题描述:
继续求助脚本使用,软件版本为最新,并更新了12月5日得dll。
使用欧洲中心数值预报产品,数据类型为第11类数据,脚本如下:
  #---- 风场
  myApp.SetLegendScheme("C:\\Program Files\\MeteoInfo\\Legend\\EC_WIND.lgs")
  myApp.OpenMICAPSData("D:\\Micaps2PPT\\datatran\\ecmwf\\uv\\500\\" + inFile)  
  myApp.SetDrawType("Barb")
  myApp.Display("U","V")

提示如下错误:
d:\Micaps2PPT>miscript run.py
11120520.000
Traceback (most recent call last):
  File "run.py", line 114, in <module>
ValueError: 列“Angle”不属于表 。

而后,设置SetDrawTypeStreamline或者Vector,脚本均能够正常运行。不知何故?
另外,尝试增加myApp.MeteoDataInfo.MeteoUVStr.IsUV = True,仍然不能解决报错信息。求斑竹大人帮助啊。。。
秀图如下:
EC_2011120520.png
脚本如下:


  1. # This Python file uses the following encoding: GB2312
  2. #---- 引入类库
  3. import clr
  4. clr.AddReferenceByPartialName("System")
  5. clr.AddReferenceByPartialName("System.Windows.Forms")
  6. clr.AddReferenceByPartialName("System.Drawing")
  7. from System import *
  8. from System.Windows.Forms import *
  9. from System.Drawing import *
  10. clr.AddReference("MeteoInfoC.dll")
  11. from MeteoInfoC import *
  12. from MeteoInfoC.Layout import *
  13. from MeteoInfoC.Data import *






  14. #---- 创建MIApp类的对象
  15. myApp = MIApp()
  16. #---- 添加图层
  17. #---- 设置图层渲染
  18. #myApp.OpenLayer("C:\\Program Files\\MeteoInfo\\Map\\bou2_4p.shp")
  19. #myApp.SetLegendBreak("bou2_4p.shp",0,Color.Yellow,Color.Gray,1,True,False,True)

  20. #只填充轮廓,没有填充色的设置如下!!
  21. myApp.OpenLayer("D:\\meteoinfocdemo\\新疆地图\\新疆全区.shp")
  22. myApp.SetLegendBreak("新疆全区.shp",0,Color.Yellow,Color.Black,2,True,False,True)




  23. myApp.OpenLayer("C:\\Program Files\\MeteoInfo\\Map\\lowres")
  24. myApp.OpenLayer("C:\\Program Files\\MeteoInfo\\Map\\cnhimap")

  25. myApp.OpenLayer("C:\\Program Files\\MeteoInfo\\Map\\res1_4m.shp")
  26. myApp.SetLegendBreak("res1_4m.shp",0,5,Color.Red,Color.Black,True,True,True)


  27. #myApp.OpenLayer("D:\\最新开发\\航路\\air_line.shp")



  28. #---- 获取矢量图层对象,并设置标注
  29. aLayer = myApp.GetVectorLayer("res1_4m.shp")
  30. aLayer.LabelSet.FieldName = "NAME";
  31. aLayer.LabelSet.LabelFont = Font("楷体", 10);
  32. aLayer.LabelSet.Offset = 15;
  33. aLayer.AddLabels();

  34. #---- Lambert投影
  35. myApp.ProjectLayers("+proj=lcc+lat_1=15+lat_2=45+lon_0=80")

  36. #---- 按照经纬度范围缩放地图
  37. myApp.ZoomLonLat(50,97,32,55)



  38. #---- 设置DefalutLayoutMap(图层显示)
  39. myApp.MapLayout.DefaultLayoutMap.DrawGridLine = True
  40. myApp.MapLayout.DefaultLayoutMap.DrawNeatLine = True
  41. myApp.MapLayout.DefaultLayoutMap.Left = 40
  42. myApp.MapLayout.DefaultLayoutMap.Top = 50
  43. myApp.MapLayout.DefaultLayoutMap.Width = 640
  44. myApp.MapLayout.DefaultLayoutMap.Height = 400

  45. #---- 设置DefaultLegend(图例)
  46. myApp.MapLayout.DefaultLegend.LegendStyle = LegendStyleEnum.Normal               
  47. myApp.MapLayout.DefaultLegend.DrawNeatLine = True
  48. myApp.MapLayout.DefaultLegend.Title = " "
  49. myApp.MapLayout.DefaultLegend.BackColor = Color.White
  50. myApp.MapLayout.DefaultLegend.Font = Font("Arial", 14)
  51. myApp.MapLayout.DefaultLegend.Left = 50
  52. myApp.MapLayout.DefaultLegend.Top = 310


  53. #---- 设置DefaultTitle(图形标题)
  54. myApp.MapLayout.DefaultTitle.SetFont("黑体", 12)
  55. myApp.MapLayout.DefaultTitle.Top = 10
  56. myApp.MapLayout.DefaultTitle.Left = 0



  57. #---- 设置起始结束时间
  58. sTime = DateTime.Parse("2011-12-5 20:00")
  59. eTime = DateTime.Parse("2011-12-5 20:00")



  60. #---- 循环
  61. while sTime <= eTime:
  62.   myApp.RemoveDataLayers()
  63.   inFile = sTime.ToString("yyMMddHH") + ".000"
  64.   print inFile

  65.   #---- 相对湿度
  66.   myApp.SetLegendScheme("C:\\Program Files\\MeteoInfo\\Legend\\EC_RH.lgs")
  67.   myApp.OpenMICAPSData("D:\\Micaps2PPT\\datatran\\ecmwf\\RH\\700\" + inFile)  
  68.   myApp.SetDrawType("Shaded")
  69.   myApp.Display("Var")


  70.   #---- 高度场
  71.   myApp.SetLegendScheme("C:\\Program Files\\MeteoInfo\\Legend\\EC_HGT.lgs")
  72.   myApp.OpenMICAPSData("D:\\Micaps2PPT\\datatran\\ecmwf\\height\\500\" + inFile)  
  73.   myApp.SetDrawType("Contour")
  74.   myApp.Display("Var")


  75.   #---- 风场
  76.   myApp.SetLegendScheme("C:\\Program Files\\MeteoInfo\\Legend\\EC_WIND.lgs")
  77.   myApp.OpenMICAPSData("D:\\Micaps2PPT\\datatran\\ecmwf\\uv\\500\" + inFile)  
  78.   myApp.SetDrawType("Barb")
  79.   myApp.Display("U","V")



  80.   print "Display finished"  
  81.   #---- 调整图层顺序(以避免压盖)
  82.   
  83.   #myApp.MoveLayerToTop("bou2_4p.shp")  
  84.   myApp.MoveLayerToTop("res1_4m.shp")
  85.   #myApp.MoveLayerToTop("air_line.shp")
  86.   myApp.MoveLayerToTop("新疆全区.shp")
  87.   myApp.MoveLayerToTop("新疆全区.shp")

  88.   #---- 设置标题名称
  89.   title = "EC HGT (" + sTime.ToString("yyyy-MM-dd HH:00") + ")"
  90.   myApp.SetTitle(title)     


  91.   #---- 绘制图形
  92.   myApp.MapLayout.PaintGraphics()

  93.   #---- 输出图形为文件
  94.   outFile = "EC_" + sTime.ToString("yyyyMMddHH") + ".png"
  95.   print outFile
  96.   myApp.SaveFigure("D:\\Micaps2PPT\" + outFile)  
  97.   #---- 删除6小时降水量图层
  98.   if sTime < eTime:
  99.           myApp.RemoveLastLayer()
  100.   #---- 时间加6小时
  101.   sTime = sTime.AddHours(1)

  102. #---- 显示程序窗体(只是为了看效果,自动运行时不需要)
  103. Application.Run(myApp)
复制代码

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

新浪微博达人勋

发表于 2011-12-9 08:05:40 | 显示全部楼层
期待老师前来解答
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-9 09:26:40 | 显示全部楼层
你把数据贴出来或发给我看看。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-9 10:55:43 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-9 11:44:59 | 显示全部楼层
孤蓝et 发表于 2011-12-9 10:55
这个是数据文件。劳烦斑竹啦。

看了看,是MeteoInfo类库的一个bug,已经更新(见首贴)。

开发出来的MeteoInfo的很多功能其实我自己也很少用,也没什么时间做测试,寻找bug的工作就得靠大家了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-9 16:52:27 | 显示全部楼层
MeteoInfo 发表于 2011-12-9 11:44
看了看,是MeteoInfo类库的一个bug,已经更新(见首贴)。

开发出来的MeteoInfo的很多功能其实我自己也 ...

谢谢斑竹了。
这个软件已经非常强大的,今天在公车上还在想,斑竹的meteoinfo前后一定经历了很长一段时间的构想和开发的,要不怎么能将功能设计的这么完备和周全,这个系统比起我做过的简单的桌面应用复杂的多,其中的辛苦开发和代码编写肯定很漫长,也谢谢斑竹对我们的问题辛苦的解答。

继续写脚本去了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-9 17:03:16 | 显示全部楼层
问题解决。强大的meteoinfo。
EC_2011120520.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-9 23:27:07 | 显示全部楼层
孤蓝et 发表于 2011-12-9 16:52
谢谢斑竹了。
这个软件已经非常强大的,今天在公车上还在想,斑竹的meteoinfo前后一定经历了很长一段时间 ...

构思和写代码的艰辛自不必细说,其中也充满了解决一个个难题的美好感觉。兴趣加努力(或许还有一点点的聪明)让我这个没有多少编程基础(也没学过气象)的人开发出了MeteoInfo,还是很有些成就感的,哈哈,臭美一下。

顺便说一下在脚本中实现反锯齿效果的代码:
myApp.SetAntiAlias(True)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-10 00:49:04 | 显示全部楼层
本帖最后由 孤蓝et 于 2011-12-10 00:52 编辑
MeteoInfo 发表于 2011-12-9 23:27
构思和写代码的艰辛自不必细说,其中也充满了解决一个个难题的美好感觉。兴趣加努力(或许还有一点点的聪 ...


myApp.SetAntiAlias(True)后,等值线,风羽,经纬度网格的线条的确都变好看了,很完美。
就是绘制相对湿度的shade类型看着有点奇怪,可能消除锯齿后造成的,有得必有失嘛,已经可以拿去忽悠boss们啦啦。

EC_2011120508.png
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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