【171】IDL读取HDF文件

本文介绍使用IDL语言读取HDF文件的方法,包括检查文件类型、启动HDF SD文件并获取信息,以及通过不同方式读取特定数据集(如纬度数据)。文章还提供了示例代码帮助理解。

 

 

 

;+
;:Description:
;    Describe the procedure.
;
; Author: DYQ 2009-7-19;
;
;-
PRO TEST_READHDF
  COMPILE_OPT idl2
  
  file = FILE_DIRNAME(ROUTINE_FILEPATH('TEST_READHDF')) + $
    '\data\MOD04_L2.A2004196.0140.005.2007023163311.hdf'
  ;
  IsHdf = HDF_ISHDF(file)
  IF IsHDF EQ 0 THEN RETURN;
  ;调用IDL自带的函数进行当前HDF数据的信息获得
;  HDF_INFO,file
  ;如我们需要做一个地理纠正操作
  ;的预处理,那么需要获得原始数据
  ;及经纬度数据网格
  ;数据获取两种方式
  ;通过SD的信息中名字索引来判断,如纬度数据表示Latitude
  ;打开HDFSD文件
  ;
  sd_id = HDF_SD_START(file , /READ)
  
  HDF_SD_FILEINFO,sd_id,nmfsds,attr
  
  FOR i=0,nmfsds-1 DO BEGIN
    sds_id=HDF_SD_SELECT(sd_id,i)
    ;数据集中数据的名字
    HDF_SD_GETINFO,sds_id,name=n,ndims=r,type=t,natts=nats,$
      hdf_type=h,unit=u
    IF n EQ 'Latitude' THEN BEGIN
      HDF_SD_GETDATA,sds_id,latdata
      BREAK
    ENDIF
  ENDFOR
  
  ;自定义读取  ;
  ;计算SD中latitude的索引
  latindex = HDF_SD_NAMETOINDEX(sd_id,'Latitude')
  ;获得所在索引的ID
  Result = HDF_SD_SELECT(sd_id, latindex)
  ;读取数据
  HDF_SD_GETDATA, Result, tempLatData
  
  ;查看是否读取结果一致
  HELP,ARRAY_EQUAL(latdata,tempLatdata)
  
END
;
;

 

转载于:https://www.cnblogs.com/alex-bn-lee/p/4772152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值