PRO Landsat_5
COMPILE_OPT idl2
ENVI, /RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT
dirstring=''
configfile='landsat.txt';;;;设置文件夹用来确定数据存储路径
configfile=file_dirname(routine_filepath())+path_sep()+configfile
openr,lun,configfile,/get_lun
readf,lun,dirstring
free_lun,lun
dirStrArr = strsplit(dirstring,'=',/extract)
dir=dirStrArr[1]
print,dir
dir_data=File_Search(DIR, '*EDC*',COUNT=count)
print,count
if count eq 0 then return
jj_dir=dir+path_sep()+'jj'
jj_flag=file_test(jj_dir)
if jj_flag eq 0 then begin
file_mkdir,jj_dir
endif
jj_file=dir+path_sep()+'jj'+path_sep()+'jj.txt';定义jj文件用来记录程序运行时间
GET_LUN,lun
openw,lun,jj_file,/append
FOR i=0, N_ELEMENTS(dir_data)-1 DO BEGIN; 逐个文件进行处理
MTL_txt=File_Search(dir_data[i], '*_MTL.txt',COUNT=num);在文件夹下寻找_MTX.TXT文件
if num ne 1 then continue
print,dir_data[i]
sat_files = File_Search(dir_data[i], '*.TIF',COUNT=num);在文件夹中寻找TIF文件
print,'TIF file is on',num
if num eq 0 then continue
; 辐射定标
proflag=0
output_file='data'
calibrate_class,dir_data[i],MTL_txt,sat_files,proflag=proflag,output_file=output_file
if Proflag eq -1 then begin
print,MTL_txt,' CalibrationModule Failed!'
printf,lun,MTL_txt+' CalibrationModule Failed!'
printf,lun,systime()
return
endif else begin
print,MTL_txt,' Calibrate success!'
printf,lun,MTL_txt+' Calibrate success!'
printf,lun,systime()
endelse
ENDFOR
ENVI_BATCH_Exit
END
pro calibrate_class,dir_sat,MTL_txt,sat_files,proflag=proflag,output_file=output_file
COMPILE_OPT IDL2
e = ENVI(/HEADLESS)
TempStr = FILE_BASENAME(MTL_txt)
middle_file='middle.dat'
middle_head_file ='middle.hdr'
output_file ='radiometric.dat'
middle_File= Dir_sat+path_sep()+ middle_file
if file_test(middle_file) ne 0 then file_delete,middle_file
middle_head_file = Dir_sat+path_sep()+ middle_head_file
if file_test(middle_head_file) ne 0 then file_delete,middle_head_file
output_file =DIR_sat+ path_sep()+output_file
if file_test(output_file) ne 0 then file_delete,output_file
Raster = e.OpenRaster(MTL_txt)
Task = ENVITask('RadiometricCalibration')
Task.Input_Raster = Raster[0] ; Bands 1-7
Task.Output_Data_Type ='Float'
TASK.Scale_FACTOR=[0.1]
Task.OUTPUT_RASTER_URI = middle_File
Task.Execute
DataColl = e.Data
DataColl.Add, Task.Output_Raster
raster=e.OpenRaster(middle_File)
raster.Export, output_file, 'ENVI', INTERLEAVE='BIL'
raster.close
file_delete,middle_file ,middle_head_file
END
landsat5遥感数据批量进行辐射处理
需积分: 0 130 浏览量
2023-09-20
18:56:08
上传
评论
收藏 2KB ZIP 举报
666double
- 粉丝: 0
- 资源: 1