envi插件大津法_IDL打开科学数据集
山科-宿鑫 2018.4.13
IDL作為一種語言,應用其實并不廣泛,其中遙感類用的比較多,這包括NASA(美國宇航局)、DLR(德國宇航局)。遙感數據中有一種科學數據集,是NASA推崇的,格式為HDF-EOS跟HDF5,下面介紹如何用IDL來解析它們。
IDL8.3后版本,推出了一個新函數:H5_LIST.pro跟H5_GETDATA.pro,可以輕松獲取H5的數據。下面來演示一下:
H5_LIST,'I:\VIIRS_AOD\GAERO-VAOOO_npp_d20170210_t0640220_e0646024_b27409_c20171030130915224552_noaa_ops.h5'
然后,我想獲取其中一個字段的數據:
可以看到已經正確讀取到了數據。
但是知道8.5還是沒有類似于H5這樣的函數應用于HDF數據,下面提供了一個簡單的函數來獲取HDF數據,注意的是,沒加任何錯誤處理:
HDF_LIST.pro
;+
;@作者:宿鑫
;@time:2017
;@功能:獲取HDF數據集中的數據名稱
;@參數:File:HDF文件
;-
PRO HDF_LIST,File
COMPILE_OPT IDL2
hdf_id = HDF_SD_START(File,/READ)
HDF_SD_FILEINFO,hdf_id,datasetnum,Attributes
FOR i = 0,datasetnum-1 DO BEGIN
DatasetID = HDF_SD_SELECT(hdf_id,i)
HDF_SD_GETINFO,DatasetID,name = dataset_name,natts = dstNum
PRINT,dataset_name
HDF_SD_ENDACCESS,DatasetID
ENDFOR
HDF_SD_END,hdf_id
END
HDF_GetData.pro
;+
;@作者:山科-宿鑫
;@time:2017
;@功能:獲取HDF數據相應字段的數據
;@參數:file:HDF文件,Field:數據名稱,使用HDF_LIST.pro獲取
;-
FUNCTION HDF_GETDATA,File,Field
COMPILE_OPT IDL2
hdf_id = HDF_SD_START(File,/READ)
sds_index = HDF_SD_NAMETOINDEX(hdf_id,Field)
dst_id = HDF_SD_SELECT(hdf_id,sds_index)
HDF_SD_GETDATA,dst_id,data
HDF_SD_ENDACCESS,dst_id
HDF_SD_END,hdf_id
RETURN,data
END
用法跟H5一模一樣,首先是獲得需要的字段:
HDF_LIST,'I:\H8Person\MODIS\MYD13\152\MYD13C2.A2017152.006.2017192081419.hdf'
再獲取數據:
2018.11.15號更新
NetCDF(.nc)文件獲取數據
;+
; :DESCRIPTION:
; Describe the procedure.
; NCFile:NETCDF文件
; fieldName:需要提取的字段
; 返回值:數據數組
; :AUTHOR: SUXIN
; 2018.11
;-
function NC_Getdata,NCFile,fieldName
COMPILE_OPT IDL2
NCID = NCDF_OPEN(NCFile)
DATAID = NCDF_VARID(NCID, fieldName)
if DATAID eq -1 then begin
print,'沒有此字段'
return,!NULL
endif
NCDF_VARGET, NCID, DATAID, Data
return,Data
end
xxin blog , 版權所有丨如未注明 , 均為原創丨本網站采用BY-NC-SA協議進行授權 , 轉載請注明IDL打開科學數據集!
總結
以上是生活随笔為你收集整理的envi插件大津法_IDL打开科学数据集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 复制文件夹校验_Pytho
- 下一篇: mycat mysql端口多少_myca