【171】IDL读取HDF文件

;+
;:Description:
;    Describe the procedure.
;
; Author: DYQ 2009-7-19;
;
;-
PRO TEST_READHDF
  COMPILE_OPT idl2
  
  file = FILE_DIRNAME(ROUTINE_FILEPATH('TEST_READHDF')) + $
    'dataMOD04_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