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

气象家园

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

搜索
查看: 6609|回复: 26

发布MeteoInfo 1.0.8

[复制链接] |关注本帖

新浪微博达人勋

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

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

x
本帖最后由 MeteoInfo 于 2012-9-26 08:32 编辑

发布MeteoInfo 1.0.8

修改了气象数据对话框,能够同时处理多个文件:
Image00246.png

增加了一个脚本编辑器,可以方便地编写MeteoInfo脚本程序(Tools -> Script菜单)。这里除了可以运行之前利用MIApp编写的脚本以外,还可以对正在运行的MeteoInfo桌面软件进行控制。MeteoInfo桌面软件主窗体的对象是mipy,控制图形操作的是mipy.MapDocument,控制气象数据操作的是mipy.MeteoDataset。详细的东西以后慢慢探讨,这里给一个利用多个NC文件计算水汽通量散度的例子:
Image00247.png
Image00248.png

脚本程序也可以通过命令行窗口来运行:
Image00250.png

脚本代码:
  1. #---- Import class libraries
  2. import clr
  3. clr.AddReferenceByPartialName("System.Windows.Forms")
  4. clr.AddReferenceByPartialName("System.Drawing")
  5. from System.Windows.Forms import *
  6. from System.Drawing import *
  7. clr.AddReference("MeteoInfoC.dll")
  8. from MeteoInfoC import *
  9. from MeteoInfoC.Data import *
  10. from MeteoInfoC.Data.MeteoData import *
  11. from MeteoInfoC.Layout import *

  12. #---- Define variables
  13. BaseDir = "C:\\Program Files (x86)\\MeteoInfo\\"
  14. MapDir = BaseDir + "Map\\"
  15. DataDir = "D:\\Temp\\nc\\"

  16. #---- Open data
  17. DataAir = MeteoDataInfo()
  18. DataUwnd = MeteoDataInfo()
  19. DataVwnd = MeteoDataInfo()
  20. DataRhum = MeteoDataInfo()
  21. DataAir.OpenNCData(DataDir + "air.2011.nc")
  22. DataUwnd.OpenNCData(DataDir + "uwnd.2011.nc")
  23. DataVwnd.OpenNCData(DataDir + "vwnd.2011.nc")
  24. DataRhum.OpenNCData(DataDir + "rhum.2011.nc")

  25. #---- Meteo dataset
  26. mDataset = mipy.MeteoDataset
  27. mipy.MapDocument.ActiveMapFrame.RemoveMeteoLayers()
  28. mDataset.RemoveAllMeteoData()

  29. #---- Add meteo data
  30. mDataset.AddMeteoData(DataAir)
  31. mDataset.AddMeteoData(DataUwnd)
  32. mDataset.AddMeteoData(DataVwnd)
  33. mDataset.AddMeteoData(DataRhum)

  34. #---- Calculation
  35. #---- Set date to June 23
  36. tIdx = 171
  37. DataAir.TimeIndex = tIdx;
  38. DataUwnd.TimeIndex = tIdx;
  39. DataVwnd.TimeIndex = tIdx;
  40. DataRhum.TimeIndex = tIdx;
  41. #---- Set level to 700hPa
  42. lIdx = 3
  43. DataAir.LevelIndex = lIdx;
  44. DataUwnd.LevelIndex = lIdx;
  45. DataVwnd.LevelIndex = lIdx;
  46. DataRhum.LevelIndex = lIdx;
  47. #---- Get grid data
  48. air = DataAir.GetGridData("air")
  49. uwnd = DataUwnd.GetGridData("uwnd")
  50. vwnd = DataVwnd.GetGridData("vwnd")
  51. rhum = DataRhum.GetGridData("rhum")
  52. #---- Calculate
  53. prs = 700
  54. g = 9.8
  55. es = 6.112*DataMath.Exp(17.67*(air-273.16)/(air-29.65))
  56. qs = 0.62197*es/(prs-0.378*es)
  57. q = qs*rhum/100
  58. qhdivg = DataMath.Hdivg(q*uwnd/g,q*vwnd/g)
  59. qv = rhum*es/100
  60. uv = DataMath.Magnitude(uwnd, vwnd)
  61. uvq = uv*qv/(9.8*1000)

  62. #---- Plot data
  63. mDataset.SetDrawType("shaded")
  64. mDataset.Display(qhdivg)
  65. #---- Set MapLayout
  66. aTime = DataAir.GetTime()
  67. mipy.MapDocument.MapLayout.AddText("Water Vapor Flux Divergence - " + aTime.ToString("yyyy-MM-dd"), 320, 20)
  68. mipy.MapDocument.MapLayout.PaintGraphics()
复制代码



点评

下载地址已更新:http://www.06climate.com/view/1098.html  发表于 2012-9-21 12:35

已有1人关注本帖

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

新浪微博达人勋

发表于 2012-9-21 12:12:31 | 显示全部楼层 |取消关注该作者的回复
更新很快
密码修改失败请联系qq:937062711

新浪微博达人勋

 成长值: 4305
发表于 2012-9-21 12:23:41 | 显示全部楼层 |取消关注该作者的回复
这次更新很给力!
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-9-21 14:18:37 | 显示全部楼层 |取消关注该作者的回复
顶起顶起~~
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-9-21 17:03:04 | 显示全部楼层 |取消关注该作者的回复
更新的可真够快的啊。
密码修改失败请联系qq:937062711

新浪微博达人勋

 楼主| 发表于 2012-9-21 17:18:13 | 显示全部楼层 |取消关注该作者的回复
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-9-21 17:43:16 | 显示全部楼层 |取消关注该作者的回复
王老师真是厉害啊
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-9-24 11:01:44 | 显示全部楼层 |取消关注该作者的回复
呵呵,自己赶紧先藏一个带脚本编辑的版本
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-10-17 08:57:03 | 显示全部楼层 |取消关注该作者的回复
以前没用过,不过看论坛上感觉功能很强大,下下来学习一下
密码修改失败请联系qq:937062711

新浪微博达人勋

发表于 2012-10-18 10:57:04 | 显示全部楼层 |取消关注该作者的回复
MeteoInfo 发表于 2012-9-21 17:18
代码编辑控件还是用了ICsharpCode.TextEditor,表现还不错。代码提示、自动完成等功能实在没精力弄了。

还请老师详细讲讲mipy的用法,比如添加地图,用mDataset.Display(qhdivg)出图后修改等值线的间隔和标注,这些操作是否能直接用mipy完成,还是要再定义miapp对象来操作?
密码修改失败请联系qq:937062711
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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