envi外掛程式大津法 IDL開啟科學資料集

2021-10-18 18:52:23 字數 2000 閱讀 4335

山科-宿鑫 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

;@引數: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

endhdf_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

大津法加速

int otsu2 accel cv mat src,int width,int height float pixelpro 256 統計灰度級中每個畫素在整幅影象中的個數 for int y 0 y height y float sum u 0 計算每個畫素在整幅影象中的比例 for int i ...

大津法 OTSU演算法

opencv的二值化操作中,有一種 大津閾值處理 的方法,使用函式cvthreshold image,image2,0,255,cv thresh otsu 實現,該函式就會使用大律法otsu得到的全域性自適應閾值來進行二值化,而引數中的threshold不再起作用。otsu演算法 otsu演算法也...

大津法 OTSU演算法

opencv的二值化操作中,有一種 大津閾值處理 的方法,使用函式cvthreshold image,image2,0,255,cv thresh otsu 實現,該函式就會使用大律法otsu得到的全域性自適應閾值來進行二值化,而引數中的threshold不再起作用。otsu演算法 otsu演算法也...