爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4503|回复: 5

MeteoInfo脚本示例 - 格点数据计算

[复制链接]

新浪微博达人勋

发表于 2014-9-12 15:33:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2014-9-12 15:34 编辑

格点数据(GridData)是MeteoInfo数据结构中很重要的一个类,这个Jython脚本程序(需要用MeteoInfo Java版)演示了两个文件中同一变量格点数据的加、减、乘、除几个基本运算。需要在MeteoInfo Java版桌面程序中运行此脚本(脚本代码中有miapp变量的都需要在桌面程序中运行,因为miapp就是当前运行的桌面程序主界面对象)。Java不支持运算符重载,所以只能用add, sub, mul, div方法来实现相应的计算功能。

  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-9-12
  4. # Purpose: Add, sub, mul, div functions
  5. # Note: Sample
  6. #-----------------------------------------------------
  7. from org.meteoinfo.data.meteodata import MeteoDataInfo
  8. from org.meteoinfo.data.meteodata import DrawMeteoData
  9. from org.meteoinfo.legend import LegendManage
  10. from org.meteoinfo.legend import LegendType
  11. from org.meteoinfo.shape import ShapeTypes
  12. import os.path
  13. import jarray

  14. #Set data directory
  15. dataDir = 'D:/Temp/nc'

  16. #Create MeteoDataInfo object
  17. mdi1 = MeteoDataInfo()
  18. mdi2 = MeteoDataInfo()

  19. #Read data files
  20. fn1 = os.path.join(dataDir, 'wrfout_d01_2008-01-01_12_00_00.nc')
  21. fn2 = os.path.join(dataDir, 'wrfout_d01_2008-01-02_12_00_00.nc')
  22. print 'File 1: ' + fn1
  23. print 'File 2: ' + fn2
  24. mdi1.openNetCDFData(fn1)
  25. mdi2.openNetCDFData(fn2)
  26. #Get grid data
  27. print 'Get grid data...'
  28. gData1 = mdi1.getGridData('Q2')
  29. gData2 = mdi2.getGridData('Q2')
  30. #Add two grid data
  31. print 'Add grid data...'
  32. addData = gData1.add(gData2)
  33. #Subtract two grid data
  34. print 'Subtract grid data...'
  35. subData = gData1.sub(gData2)
  36. #Multiple two grid data
  37. print 'Multiple grid data...'
  38. mulData = gData1.mul(gData2)
  39. #Divide two grid data
  40. print 'Divide grid data...'
  41. divData = gData1.div(gData2)
  42. #Create legend scheme
  43. addLS = LegendManage.createLegendSchemeFromGridData(addData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  44. subLS = LegendManage.createLegendSchemeFromGridData(subData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  45. mulLS = LegendManage.createLegendSchemeFromGridData(mulData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  46. addLS = LegendManage.createLegendSchemeFromGridData(divData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  47. #Create shaded layers
  48. print 'Create shaded layers...'
  49. addLayer = DrawMeteoData.createShadedLayer(addData, addLS, 'Test_Add_Shaded', 'Add', True)
  50. subLayer = DrawMeteoData.createShadedLayer(subData, subLS, 'Test_Sub_Shaded', 'Sub', True)
  51. mulLayer = DrawMeteoData.createShadedLayer(mulData, addLS, 'Test_Mul_Shaded', 'Mul', True)
  52. divLayer = DrawMeteoData.createShadedLayer(divData, addLS, 'Test_Div_Shaded', 'Div', True)
  53. addLayer.setProjInfo(mdi1.getProjectionInfo())
  54. subLayer.setProjInfo(mdi1.getProjectionInfo())
  55. mulLayer.setProjInfo(mdi1.getProjectionInfo())
  56. divLayer.setProjInfo(mdi1.getProjectionInfo())
  57. #Add layers
  58. print 'Add layers...'
  59. mf = miapp.getMapDocument().getActiveMapFrame()
  60. mf.getMapView().projectLayers(mdi1.getProjectionInfo())
  61. mf.addLayer(addLayer)
  62. mf.moveLayer(addLayer, 0)
  63. mf.addLayer(subLayer)
  64. mf.moveLayer(subLayer, 0)
  65. mf.addLayer(mulLayer)
  66. mf.moveLayer(mulLayer, 0)
  67. mf.addLayer(divLayer)
  68. mf.moveLayer(divLayer, 0)

  69. print 'Finished!'



Image00734.png

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

新浪微博达人勋

发表于 2014-9-12 16:37:32 | 显示全部楼层
前来支持王老师!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-9-13 09:37:07 | 显示全部楼层
王老师的脚本示例很赞啊,学习后也要争取推出自己的脚本示例。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-1 19:10:02 | 显示全部楼层
谢谢王老师分享。好好学习了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-7 10:50:11 | 显示全部楼层
王老师太牛了,学习了~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-27 21:50:29 | 显示全部楼层
老师 ,您好 我想请教您一个问题 流域内只有降水格点数据,也没有实测站点信息,怎么利用格点数据计算流域面降雨量啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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