Hi All,
I have a vegetation index (Tasseled cap transformation). I have 10 folders for different areas and each folder has 20 Landsat images. My friend helped me to write following code:
pro LCTCT
infile=dialog_pickfile(title='Select you all your data!!!',filter='*.tif',get_path=path,/multiple_files)
if N_elements(infile) eq -1 then return
cd, path
filenum=size(infile,/n_elements)
for i=0,filenum-1 do begin
envi_open_file, infile(i), r_fid=fid
ENVI_FILE_QUERY,fid,dims=dims,ns=ns,nl=nl,nb=nb,data_type=da ta_type
map_info=envi_get_map_info(fid=fid)
b1=envi_get_data(fid=fid,dims=dims,pos=0)
b2=envi_get_data(fid=fid,dims=dims,pos=1)
b3=envi_get_data(fid=fid,dims=dims,pos=2)
b4=envi_get_data(fid=fid,dims=dims,pos=3)
b5=envi_get_data(fid=fid,dims=dims,pos=4)
b6=envi_get_data(fid=fid,dims=dims,pos=5)
tct=fltarr(ns,nl,6)
print,ns,nl,nb
file = DIALOG_PICKFILE(FILTER='*.txt')
OPENR, lun, file, /GET_LUN
para=fltarr(6,6)
WHILE NOT EOF(lun) DO BEGIN & $
READF, lun, para
ENDWHILE
; Close the file and free the file unit
FREE_LUN, lun
tct(*,*,0)=float((para(0,0)*b1)+(para(1,0)*b2)+(para(2,0)*b3 )+( para(3,0)*b4)+(para(4,0)*b5)+(para(5,0)*b6))
tct(*,*,1)=float((para(0,1)*b1)+(para(1,1)*b2)+(para(2,1)*b3 )+( para(3,1)*b4)+(para(4,1)*b5)+(para(5,1)*b6))
tct(*,*,2)=float((para(0,2)*b1)+(para(1,2)*b2)+(para(2,2)*b3 )+( para(3,2)*b4)+(para(4,2)*b5)+(para(5,2)*b6))
tct(*,*,3)=float((para(0,3)*b1)+(para(1,3)*b2)+(para(2,3)*b3 )+( para(3,3)*b4)+(para(4,3)*b5)+(para(5,3)*b6))
tct(*,*,4)=float((para(0,4)*b1)+(para(1,4)*b2)+(para(2,4)*b3 )+( para(3,4)*b4)+(para(4,4)*b5)+(para(5,4)*b6))
tct(*,*,5)=float((para(0,5)*b1)+(para(1,5)*b2)+(para(2,5)*b3 )+( para(3,5)*b4)+(para(4,5)*b5)+(para(5,5)*b6))
help,tct
envi_enter_data,tct,map_info=map_info,r_fid=outfid
filename = FILE_BASENAME(infile(i))
outfiledir=file_dirname(infile(i),/MARK_DIRECTORY)
pointPos = STRPOS(filename,'.',/REVERSE_SEARCH)
IF pointPos[0] NE -1 THEN BEGIN
filename= STRMID(filename,0,pointPos)
ENDIF
outfilename = outfiledir+filename+'_NewTCT_fromTOAinsteadofSR.tif'
envi_output_to_external_format,dims = dims,pos=[0,1,2,3,4,5],/tiff,fid = outfid,out_name=outfilename
envi_file_mng,id = fid,/remove
envi_file_mng,id = outfid,/remove,/delete
endfor
print,'ok'
end
What should I do to make this code capable of computing TCT index automatically? (I am not good at programming)
Regards,
|