爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8519|回复: 8

计算K指数

[复制链接]

新浪微博达人勋

发表于 2012-8-6 17:22:11 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2012-8-6 17:22 编辑

参照传说中的谁写的K指数计算方法的帖子(K指数计算方法
http://bbs.06climate.com/forum.php?mod=viewthread&tid=1854&fromuid=106
),写了一个MeteoInfo的脚本程序来实现同样的功能,对比了结果还不错。
Image00205.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. #---- Define variables
  12. BaseDir = "C:\\Program Files (x86)\\MeteoInfo\"
  13. MapDir = BaseDir + "Map\"
  14. DataDir = "F:\\Temp\\grib\"

  15. #---- Create MIApp object
  16. myApp = MIApp()
  17. #---- Open layers
  18. myApp.OpenLayer(MapDir + "country1.shp")
  19. myApp.SetLegendBreak("country1.shp",0,Color.Yellow,Color.Black,1,True,False,True)
  20. #---- Open data
  21. dataInfo = MeteoDataInfo()
  22. dataInfo.OpenGRIBData(DataDir + "fnl_20110416_00_00")

  23. #---- Get temperature grid data - 850 hPa
  24. dataInfo.LevelIndex = 20
  25. T850 = dataInfo.GetGridData("Temperature@pressure") - 273.16
  26. #---- Get relative humidity grid data - 850 hPa
  27. dataInfo.LevelIndex = 15
  28. rh = dataInfo.GetGridData("Relative_humidity@pressure")
  29. #---- Calculate Td
  30. Td850 = T850-((14.55+0.114*T850)*(1-0.01*rh)+DataMath.Pow((2.5+0.007*T850)*(1-0.01*rh),3)+ \
  31.   (15.9+0.117*T850)*DataMath.Pow((1-0.01*rh),14))
  32. #---- Get temperature grid data - 700 hPa
  33. dataInfo.LevelIndex = 17
  34. T700 = dataInfo.GetGridData("Temperature@pressure") - 273.16
  35. #---- Get relative humidity grid data - 700 hPa
  36. dataInfo.LevelIndex = 12
  37. rh = dataInfo.GetGridData("Relative_humidity@pressure")
  38. #---- Calculate Td
  39. Td700 = T700-((14.55+0.114*T700)*(1-0.01*rh) + DataMath.Pow((2.5+0.007*T700)*(1-0.01*rh),3) + \
  40.   (15.9+0.117*T700)*DataMath.Pow((1-0.01*rh),14))
  41. #---- Get temperature grid data - 500 hPa
  42. dataInfo.LevelIndex = 13
  43. T500 = dataInfo.GetGridData("Temperature@pressure") - 273.16
  44. #---- Calculate K
  45. K = T850-T500+Td850-(T700-Td700)
  46. #K.SaveAsSurferASCIIFile(DataDir + "K_test.dat")

  47. #---- Plot data
  48. myApp.MeteoDataInfo = dataInfo
  49. myApp.SetLegendScheme(DataDir + "k1.lgs")
  50. myApp.SetDrawType("contour")
  51. myApp.Display(K)
  52. myApp.MoveLayerToTop("country1.shp")
  53. myApp.ZoomLonLatEx(90,125,10,35)
  54. #myApp.ZoomLonLatEx(0,360,-90.1,90.1)
  55. aTime = dataInfo.GetTime()
  56. text = "K Index - " + aTime.ToString("yyyy-MM-dd")
  57. myApp.MapLayout.AddText(text, 320, 20)
  58. myApp.MapLayout.ActiveLayoutMap.GridXDelt = 5
  59. myApp.MapLayout.ActiveLayoutMap.GridYDelt = 5
  60. myApp.MapLayout.ActiveLayoutMap.DrawGridLine = False
  61. #myApp.ProjectLayers("+proj=moll+lon_0=105")
  62. myApp.MapLayout.PaintGraphics()
  63. Application.Run(myApp)
复制代码



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

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-8-6 17:34:38 | 显示全部楼层
MeteoInfo的插件功能再强大些就好啦,这样大家写的一些算法程序就能够容易给软件增加更丰富的功能了,像blog有很多插件可以让大家选择安装的那样,不过我是站着说话不腰疼的,哈哈,实现起来还是需要时间的,而且愿意写插件分享的人的多少也很重要
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-10 17:26:14 | 显示全部楼层
本帖最后由 冬日情愫+ 于 2013-3-10 17:43 编辑

楼主您好,我注意到您的脚本程序中计算露点温度的公式,
Td850 = T850-((14.55+0.114*T850)*(1-0.01*rh)+DataMath.Pow((2.5+0.007*T850)*(1-0.01*rh),3)+
  (15.9+0.117*T850)*DataMath.Pow((1-0.01*rh),14))
经常在程序中看到这个公式但是它是来自哪里的呀?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-10 18:03:51 | 显示全部楼层

原始出处我也不知道,我没学过气象。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-26 22:43:02 | 显示全部楼层
好复杂的样子啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-27 11:09:47 | 显示全部楼层
脚本在哪里加?我是编程菜鸟~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-27 15:05:16 | 显示全部楼层
我想知道K指数里的蒸发量用潜在蒸发比较好还是用实际蒸发量比较好?急急急~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-12-1 16:49:30 | 显示全部楼层
看着比GRADS的GS文件复杂!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-12-1 16:54:59 | 显示全部楼层
oydl1985 发表于 2016-12-1 16:49
看着比GRADS的GS文件复杂!

这个帖子很老了,建议看此贴:MeteoInfoLab脚本示例:计算K指数
http://bbs.06climate.com/forum.p ... 846&fromuid=106
(出处: 气象家园)

还有:MeteoInfoLab脚本汇总贴
http://bbs.06climate.com/forum.p ... 151&fromuid=106
(出处: 气象家园)
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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