;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;++ HDFファイル読み込みサンプル ++ ;++ readHDF.pro V1.0 2005/06 by VNIJ ++ ;++ --------------------------------------------------------------- ++ ;++ 実行方法: ++ ;++ WAVE> readHDF, data ++ ;++ WAVE> Info, data, /Full ++ ;++ --------------------------------------------------------------- ++ ;++ 注意:                           ++ ;++ readHDFを実行するとファイルセレクタが立ち上がります ++ ;++ netCDFファイルはreadCDF.proをご使用ください ++ ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Pro readHDF,hdf_data ;+++++ HDF初期設定 +++++ @hdf_startup ; @hdf_common ;+++++ ファイルオープン +++++ WgFileSelection,file,Title='HDFファイルを選んでください' cdfid = Ncopen(file, NC_NOWRITE) ;** HDFファイルオープン ** hdf_data = Asarr('file',file) ;-- データ格納変数 -- ;+++++ 変数の数(variables)と次元数(dimensions)をチェック +++++ status = Ncinquire(cdfid, ndims, nvars, ngatts, xdimid) ;** 変数、次元情報 ** ; Print,'次元総数:',ndims ; Print,'変数総数:',nvars ; Print,'ngatts=',ngatts ; Print,'xdimid=',xdimid ; 次元数 Print,'[次元総数:',ndims,']' dims = LONARR(ndims) For dim = 0L, ndims-1 Do Begin status = Ncdiminq(cdfid, dim, dim_name, dim_size);** 次元情報 ** dims(dim) = dim_size Print,' 次元番号 = ',dim Print,'    次元名= ',dim_name Print,'    サイズ= ',dim_size endfor ;+++++ 各変数の値と属性数 +++++ Print,'' Print,'[変数総数:',nvars,']' For varid = 0L, nvars-1 Do Begin status = Ncvarinq(cdfid, varid, var_name, var_type, var_ndims, $ var_dims, var_natts);** 変数情報 ** Print,' 変数ID:',varid Print,'    変数名   : ',var_name Print,'    データタイプ: ',var_type Print,'    次元数   : ',var_ndims Print,'    配列の大きさ : ' For i=0,var_ndims-1 Do Print,' ',dims(var_dims(i)) ; Print,'   Natts    : ',var_natts ;++ データの読み込みと格納 ++ s = HdfGetSds(file,data) ; Info,data hdf_data(var_name)=data Endfor ;- varid - ;+++++ ファイルを閉じる +++++ status = Ncclose (cdfid) End