我要给两幅栅格图层做逐象元一元线性回归分析,有没有哪个大神教教我
;IDL程序
pro tendency
;设置编译环境
COMPILE_OPT IDL2
;设置参数,后台调用ENVI函数环境
ENVI,/RESTORE_BASE_SAVE_FILES,/NO_STATUS_WINDOW
ENVI_BATCH_INIT, log_file='batch.txt'
;�����������·���������������������
;=================================================================================
in_name='H:\TEST\TAST\EVI_YEAR_CHUY10000\' ;��Ҫ�����ʱ������դ��ͼ�����ڵ��ļ���
out_slp='H:\TEST\TAST\slope_R_K_EVI\slp.tif' ;б�ʼ�����դ���ļ��Ĵ洢·�����ļ���
out_R='H:\TEST\TAST\slope_R_K_EVI\R.tif' ;���ϵ�������դ���ļ��Ĵ洢·�����ļ���
;=================================================================================
filenames=file_search(in_name,'*.tif')
;��ȡ������Ȼ���Ϣ��ͼ��·��
name=filenames[0]
;打开一个图像,获取行列数,投影信息
envi_open_file,name,r_fid=fid,/no_realize;directory and file name, to be modified
if (fid eq -1) then begin
info=DIALOG_MESSAGE('未找到数据,请确认路径或文件名格式是否正确!')
return
endif
envi_file_query, fid, ns=ns, nl=nl, nb=nb, dims=dims
map_info=envi_get_map_info(fid=fid)
;获取文件个数
n = n_elements(filenames)
;根据文件名,获得因子的时间序列
t=fltarr(n)
for i=0,n-1 do begin
time = strmid(filenames[i],strpos(filenames[i],'2'),4)
t[i] = float(time)
endfor
;������ά���鱣�����创建三维数组保存数据
data=fltarr(ns,nl,n)
for i=0,n-1 do begin
envi_open_file,filenames[i],r_fid=fid,/no_realize;directory and file name, to be modified
if (fid eq -1) then begin
info=DIALOG_MESSAGE('未找到数据,请确认路径或文件名格式是否正确!')
return
endif
data[*,*,i]=envi_get_data(fid=fid,dims=dims,pos=0)
endfor
;逐像元拟合
slp=fltarr(ns,nl) ;创建数组保存斜率计算结果
r=fltarr(ns,nl) ;创建数组保存相关系数计算结果
for i=0,ns-1 do begin
for j=0,nl-1 do begin
;�������Իع飬����б��
lin=linfit(t,data[i,j,*])
slp[i,j]=lin[1]
;�������ϵ��
r[i,j]=correlate(t,data[i,j,*])
endfor
endfor
;���ENVI��ʽ
ENVI_WRITE_ENVI_FILE,slp,out_dt=4,map_info=map_info,ns=ns,nl=nl,nb=nb,out_name=out_slp
ENVI_WRITE_ENVI_FILE,r,out_dt=4,map_info=map_info,ns=ns,nl=nl,nb=nb,out_name=out_R
end