山科-宿鑫 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演算法也...