爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9604|回复: 14

MeteoInfo脚本示例:生成可见光云图

[复制链接]

新浪微博达人勋

发表于 2013-8-27 11:07:45 | 显示全部楼层 |阅读模式

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

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

x
读取MICAPS格式云图数据并生成图片。

脚本代码:

  1. # This Python file uses the following encoding: GB2312
  2. #--------------------------------------------------------        
  3. # Author: Yaqiang Wang                                          
  4. # Date: 2013-8-27                                                
  5. # Purpose: Read and plot MICAPS cloud data  
  6. # Note: Sample                                                   
  7. #-----------------------------------------------------------  
  8. #---- 引入类库
  9. import clr
  10. clr.AddReferenceByPartialName("System")
  11. clr.AddReferenceByPartialName("System.Windows.Forms")
  12. clr.AddReferenceByPartialName("System.Drawing")
  13. from System import *
  14. from System.Windows.Forms import *
  15. from System.Drawing import *
  16. clr.AddReference("MeteoInfoC.dll")
  17. from MeteoInfoC import *
  18. from MeteoInfoC.Data.MapData import *
  19. from MeteoInfoC.Data.MeteoData import *
  20. from MeteoInfoC.Layout import *
  21. from MeteoInfoC.Projections import *

  22. #---- 设置路径变量
  23. baseDir = "C:\\Program Files (x86)\\MeteoInfo\\"
  24. mapDir = baseDir + "Map\\"
  25. legendDir = baseDir + "pal\\"
  26. dataDir = "D:\\Temp\\micaps\\"

  27. #---- 打开图层
  28. bou2Layer = MapDataManage.OpenLayer(mapDir + "bou2_4p.shp")
  29. lb = bou2Layer.LegendScheme.LegendBreaks[0]
  30. lb.Color = Color.Yellow
  31. lb.OutlineColor = Color.Gray
  32. lb.OutlineSize = 1
  33. lb.DrawFill = False
  34. bou1Layer = MapDataManage.OpenLayer(mapDir + "bou1_4l.shp")
  35. lb = bou1Layer.LegendScheme.LegendBreaks[0]
  36. lb.Color = Color.Red
  37. res1Layer = MapDataManage.OpenLayer(mapDir + "res1_4m.shp")
  38. lb = res1Layer.LegendScheme.LegendBreaks[0]
  39. lb.Color = Color.Red
  40. lb.OutlineColor = Color.Black
  41. lb.Size = 5
  42. res1Layer.LabelSet.FieldName = "NAME";
  43. res1Layer.LabelSet.LabelFont = Font("楷体", 10);
  44. res1Layer.LabelSet.YOffset = 15;
  45. res1Layer.LabelSet.LabelColor = Color.Red
  46. res1Layer.AddLabels();

  47. #---- 创建MIApp类的对象
  48. myApp = MIApp()
  49. mapLayout = myApp.MapLayout
  50. layoutMap = mapLayout.ActiveLayoutMap
  51. mapFrame = layoutMap.MapFrame
  52. mapView = mapFrame.MapView

  53. #---- 设置Layout
  54. mapLayout.SetPaperSize(540, 550)

  55. #---- 添加地图图层
  56. mapFrame.AddLayer(bou2Layer)
  57. mapFrame.AddLayer(bou1Layer)
  58. mapFrame.AddLayer(res1Layer)

  59. #---- 设置ActiveLayoutMap(图层显示)
  60. layoutMap.DrawGridLine = False
  61. layoutMap.DrawNeatLine = False
  62. layoutMap.DrawGridLabel = False
  63. layoutMap.DrawGridTickLine = False
  64. layoutMap.Left = 10
  65. layoutMap.Top = 10
  66. layoutMap.Width = 500
  67. layoutMap.Height = 490

  68. #---- 设置图形标题
  69. aText = mapLayout.AddText("Temp",250,50,"黑体",12)
  70. aText.Graphic.Legend.Color = Color.Red

  71. #---- 设置时间
  72. sTime = DateTime.Parse("2013-08-22 16:00")

  73. #---- 设置图例
  74. palfn = legendDir + "I-01.pal"

  75. #---- 设置MeteoDataInfo
  76. mid = MeteoDataInfo()

  77. #---- 设置数据文件  
  78. inFile = sTime.ToString("yyMMddHH") + "00.000"
  79. print inFile
  80. #---- 打开MICAPS数据文件
  81. mid.OpenMICAPSData(dataDir + inFile)  
  82. #---- 投影
  83. mapView.ProjectLayers(mid.ProjInfo)
  84. #---- 获取云图格点数据
  85. gData = mid.GetGridData("var")
  86. #---- 生成云图图层
  87. cloudLayer = DrawMeteoData.CreateRasterLayer(gData, "Cloud", palfn)
  88. cloudLayer.ProjInfo = mid.ProjInfo
  89. #---- 添加图层
  90. mapFrame.AddLayer(cloudLayer)
  91. print "Display finished"  
  92. #---- 调整图层顺序(以避免压盖)
  93. mapFrame.MoveLayerToBottom(cloudLayer)  
  94. #---- 缩放至云图范围
  95. mapView.ZoomToExtentEx(cloudLayer.Extent)
  96. #---- 设置标题名称
  97. title = "可见光云图(" + sTime.ToString("yyyy-MM-dd HH:00") + ")"
  98. aText.SetLabelText(title)
  99. #---- 绘制图形
  100. mapLayout.PaintGraphics()
  101. #---- 输出图形为文件
  102. outFile = "Cloud_" + sTime.ToString("yyyyMMddHH") + ".png"
  103. print outFile
  104. #mapLayout.ExportToPicture("E:\\Temp\\" + outFile)  

  105. #---- 显示程序窗体(只是为了看效果,自动运行时不需要)
  106. #Application.Run(myApp)
  107. myApp.Show()


运行结果:
Image00442.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-27 15:38:20 | 显示全部楼层
大神威武
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-27 17:18:56 | 显示全部楼层
非常感谢老师
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-28 02:00:08 | 显示全部楼层
好东西 感谢共享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-28 16:09:45 | 显示全部楼层
学习一下,收藏备用,多谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-9-9 12:06:47 | 显示全部楼层
大神威武
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-24 15:16:41 | 显示全部楼层
老师 请问下 脚本怎么执行呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-18 11:23:32 | 显示全部楼层
楼主可以分享个MeteoInfo读取、生成FY—2C的可见光、红外、水汽通道的代码吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-18 11:52:36 | 显示全部楼层
墨墨卡托 发表于 2015-6-18 11:23
楼主可以分享个MeteoInfo读取、生成FY—2C的可见光、红外、水汽通道的代码吗?

数据是什么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-18 16:13:19 | 显示全部楼层

老师您好,数据虽然不大,但也不小,具体数据我随后发您的邮箱,这里提前写过老师了~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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