爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4522|回复: 10

版主帮帮忙,自己写的HDF文件不能读入

[复制链接]

新浪微博达人勋

发表于 2013-10-29 20:17:35 | 显示全部楼层 |阅读模式

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

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

x
我自己写的HDF文件不能读入,但是在HDF Viewer是可以看到数据的。
这个是要符合一定的格式么?
如果自己写的HDF不行的话,请问还有什么方法可以解决

s66.HDF

129.54 KB, 下载次数: 10, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2013-10-29 22:04:58 | 显示全部楼层
你用什么语言写的hdf?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-10-29 22:33:04 | 显示全部楼层
需要HDF数据符合EOS规范才能自动读出数据的空间范围和格点坐标。
不符合EOS规范的HDF数据可以通过写脚本给定格点坐标来读取数据并生成图层,下面给一个Jython脚本的例子。
Image00050.png

用你给的数据生成的图层:
Image00051.png

脚本代码:
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2013-10-29
  4. # Purpose: Read hdf4 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.projection import ProjectionInfo
  12. from org.meteoinfo.legend import LegendManage
  13. from org.meteoinfo.legend import LegendType
  14. from org.meteoinfo.shape import ShapeTypes
  15. import os.path
  16. import jarray

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

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

  21. #Read hdf data file
  22. fn = dataDir + 's66.HDF'
  23. if os.path.isfile(fn):
  24.         print fn
  25.         mdi.openNetCDFData(fn)
  26.         dataInfo = mdi.getDataInfo()
  27.         print mdi.getInfoText()
  28.         xmin = -180.0
  29.         ymin = -90.0
  30.         xnum = 360
  31.         ynum = 180
  32.         xdelt = 1.0
  33.         ydelt = 1.0
  34.         xlist = []
  35.         ylist = []
  36.         for i in range(0,xnum):
  37.                 xlist.append(xmin + xdelt * i)
  38.         for i in range(0,ynum):
  39.                 ylist.append(ymin + ydelt * i)

  40.         X = jarray.array(xlist, 'd')
  41.         Y = jarray.array(ylist, 'd')
  42.         xDim = Dimension(DimensionType.X)
  43.         xDim.setValues(X)
  44.         dataInfo.setXDimension(xDim)
  45.         yDim = Dimension(DimensionType.Y)
  46.         yDim.setValues(Y)
  47.         dataInfo.setYDimension(yDim)
  48.         var = dataInfo.getVariable('ddd\dddd')
  49.         dimList = [yDim, xDim]
  50.         var.setDimensions(dimList)
  51.         gData = mdi.getGridData(var.getName())
  52.         gData = gData.multiply(0.01)
  53.         aLS = LegendManage.createLegendSchemeFromGridData(gData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  54.         aLayer = DrawMeteoData.createRasterLayer(gData, "Test_HDF", aLS)
  55.         aLayer.setProjInfo(dataInfo.getProjectionInfo())
  56.         mf = miapp.getMapDocument().getActiveMapFrame()
  57.         mf.addLayer(aLayer)
  58.         mf.moveLayer(aLayer, 0)

  59. print 'Finished!'

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

新浪微博达人勋

 楼主| 发表于 2013-10-30 11:35:14 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-2 08:37:27 | 显示全部楼层
MeteoInfo 发表于 2013-10-29 22:33
需要HDF数据符合EOS规范才能自动读出数据的空间范围和格点坐标。
不符合EOS规范的HDF数据可以通过写脚本给 ...

你好用脚本写入图层,但是不能选择是哪个map frame,怎么可以把脚本写入的图层加入其他frame?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-2 10:47:28 | 显示全部楼层
小寶 发表于 2013-11-2 08:37
你好用脚本写入图层,但是不能选择是哪个map frame,怎么可以把脚本写入的图层加入其他frame?

代码里是将图层加入Active MapFarme(可以有多个MapFrame,但Active MapFrame只有一个)。可以获得MapFrame的列表,然后可以将图层加入某个MapFrame中,比如:

mfs = miapp.getMapDocument().getMapFrames()
mfs.get(1).addLayer(aLayer)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-1-4 16:36:14 | 显示全部楼层
MeteoInfo 发表于 2013-11-2 10:47
代码里是将图层加入Active MapFarme(可以有多个MapFrame,但Active MapFrame只有一个)。可以获得MapFra ...

脚本里面有没有吧图像上下翻转和左右翻转的命令呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-4 17:14:47 | 显示全部楼层
小寶 发表于 2014-1-4 16:36
脚本里面有没有吧图像上下翻转和左右翻转的命令呢?

没有这样的功能
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-7 12:58:14 | 显示全部楼层
MeteoInfo 发表于 2013-10-29 22:33
需要HDF数据符合EOS规范才能自动读出数据的空间范围和格点坐标。
不符合EOS规范的HDF数据可以通过写脚本给 ...

老师您好,这里有个问题就是如果绘制等值线
在代码中改?怎么改  哪个教程是对应这个的?
如果不用代码如何弄,搞半天没弄出来,打扰了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-3-7 13:44:20 | 显示全部楼层
小寶 发表于 2014-3-7 12:58
老师您好,这里有个问题就是如果绘制等值线
在代码中改?怎么改  哪个教程是对应这个的?
如果不用代码 ...

可以参考此帖中的脚本:绘制闪电密度图-2
http://bbs.06climate.com/forum.p ... 824&fromuid=106
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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