感觉网上IDL的学习资料并不是很多,也是小白的我分享一下资料
还有监督分类的可执行代码
学习资料IDL和ENVI的详细文档:查询具体的函数和接口
documentation Centerhttps://www.l3harrisgeospatial.com/docs/home.html
IDL中类定义
IDL中类定义_极天下真_新浪博客IDL中类定义_极天下真_新浪博客,极天下真,http://blog.sina.com.cn/s/blog_16009545f0102xovx.html
ENVI-IDL技术殿堂的博客
IDL程序发布exe清晰步骤_ENVI-IDL技术殿堂_新浪博客IDL程序发布exe清晰步骤_ENVI-IDL技术殿堂_新浪博客,ENVI-IDL技术殿堂,http://blog.sina.com.cn/s/blog_764b1e9d0102xn80.html
封装
封装了envi函数的IDL发布程序的执行方法 以及注意事项_On The Road-CSDN博客
IDL学习记录和Java调用IDL方法_回首1949-CSDN博客
监督分类pro classfication
COMPILE_OPT IDL2
; envi,/restore_base_files 会默认弹出envi老版的窗口,但是注释掉又会报错
ENVI,/restore_base_files
;读入影像
;file='C:Usersz6q6k6Desktoparcpy3band_20190408_Zhoushan.tif'
ENVI_OPEN_FILE,file,r_fid=fid
IF fid EQ -1 THEN BEGIN
RETURN
ENDIF
;envi_open_file,file,r_fid=fid
envi_file_query,fid,ns=ns,bl=nl,nb=nb,dims=dims
pos=indgen(nb)
;读入roi文件
;file_roi='C:Usersz6q6k6Desktoparcpy1.roi'
envi_restore_rois,file_roi
roi_ids=envi_get_roi_ids(fid=fid,roi_colors=roi_colors,roi_names=roi_names)
;添加未识别的一类,并自动赋予黑色
class_names=['Unclassified',roi_names]
num_classes=n_elements(roi_ids)
lookup = BYTARR(3,num_classes+1)
lookup[0,1] = roi_colors
means=fltarr(nb,num_classes)
stdv=fltarr(nb,num_classes)
cov=fltarr(nb,nb,num_classes)
for j=0,num_classes-1 do begin
roi_dims=[envi_get_roi_dims_ptr(roi_ids[j]),0,0,0,0]
envi_doit,'envi_stats_doit',fid=fid,dims=roi_dims,pos=pos,comp_flag=4,mean=c_mean,stdv=c_stdv,cov=c_cov
means[0,j]=c_mean
stdv[0,j]=c_stdv
cov[0,0,j]=c_cov
endfor
; 默认输出路径
out_file='C:Usersz6q6k6Desktopresult.tif'
envi_doit,'class_doit',fid=fid,dims=dims,pos=pos,$
r_fid=r_fid,out_name=out_file,method=1,$
mean=means,stdv=stdv,cov=cov,num_classes=num_classes,lookup=lookup,$
class_names=class_names
;method:
;0:平行六面体(监督)
;1:最小距离(监督)
;2:最大似然(监督)
;3:SAM(监督)
;4:ISODATA(无监督)
;5:马哈拉诺比斯(监督)
;6:二进制编码(监督)
;7:K-Means(无监督)
;8:SID(监督)
END



