爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3154|回复: 2

用MeteoInfo Java版尝试绘制FY3B火点数据

[复制链接]

新浪微博达人勋

发表于 2013-10-31 11:49:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2013-10-31 13:11 编辑

FY3B火点数据是HDF5格式,用了一个2维数据变量来表示火点,用HDFView打开数据如下:
Image00473.png

由于数据本身的自描述信息比较缺乏,目前也没有该数据的详细说明,只能从数据本身猜测第3列和第4列分别为火点的纬度和经度。基于上述猜测写了一个脚本来读取火点数据并绘制分布图。
Image00472.png

脚本代码:
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2013-10-30
  4. # Purpose: Read FY3B fire point hdf5 data
  5. # Note: Sample
  6. #-----------------------------------------------------
  7. from org.meteoinfo.data.meteodata import MeteoDataInfo
  8. from org.meteoinfo.data.meteodata import Dimension
  9. from org.meteoinfo.data.meteodata import DimensionType
  10. from org.meteoinfo.data.meteodata import DrawMeteoData
  11. from org.meteoinfo.data import StationData
  12. from org.meteoinfo.projection import ProjectionInfo
  13. from org.meteoinfo.legend import LegendManage
  14. from org.meteoinfo.legend import LegendType
  15. from org.meteoinfo.shape import ShapeTypes
  16. import os.path
  17. import jarray

  18. #Set data directory
  19. dataDir = 'D:/Temp/hdf/'

  20. #Create MeteoDataInfo object
  21. mdi = MeteoDataInfo()

  22. #Read hdf data file
  23. fn = dataDir + 'FY3B_VIRRX_GBAL_L2_GFR_MLT_GLL_20130529_POAD_1000M_MS.HDF'
  24. if os.path.isfile(fn):
  25.         print fn
  26.         mdi.openNetCDFData(fn)
  27.         dataInfo = mdi.getDataInfo()
  28.         print mdi.getInfoText()
  29.         xnum = 9
  30.         ynum = 8338
  31.         xlist = []
  32.         ylist = []
  33.         for i in range(0,xnum):
  34.                 xlist.append(i)
  35.         for i in range(0,ynum):
  36.                 ylist.append(i)

  37.         X = jarray.array(xlist, 'd')
  38.         Y = jarray.array(ylist, 'd')
  39.         xDim = Dimension(DimensionType.X)
  40.         xDim.setValues(X)
  41.         dataInfo.setXDimension(xDim)
  42.         yDim = Dimension(DimensionType.Y)
  43.         yDim.setValues(Y)
  44.         dataInfo.setYDimension(yDim)
  45.         var = dataInfo.getVariable('FIRES')
  46.         dimList = [yDim, xDim]
  47.         var.setDimensions(dimList)
  48.         gData = mdi.getGridData(var.getName())        
  49.         sData = StationData()
  50.         for d in range(0,ynum):
  51.                 stid = str(d + 1)
  52.                 lat = gData.data[d][3]
  53.                 lon = gData.data[d][4]
  54.                 value = gData.data[d][5]
  55.                 sData.addData(stid, lon, lat, value)
  56.                
  57.         aLS = LegendManage.createLegendSchemeFromStationData(sData, LegendType.GraduatedColor, ShapeTypes.Point)
  58.         aLayer = DrawMeteoData.createSTPointLayer(sData, aLS, 'FY3B_Fire', 'Fire')
  59.         #aLayer.setProjInfo(dataInfo.getProjectionInfo())
  60.         mf = miapp.getMapDocument().getActiveMapFrame()
  61.         mf.addLayer(aLayer)
  62.         #mf.moveLayer(aLayer, 0)

  63. print 'Finished!'

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

新浪微博达人勋

发表于 2013-10-31 11:55:57 | 显示全部楼层
非常感谢王老师.
数据是在卫星中心数据网上下的.
业务急需呀.解了燃眉之急.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-10-31 13:00:07 | 显示全部楼层
串了一个字  看成了点火数据...突然感觉高大上
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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