While executing:
file = {multispectral landsat metadata file *MTL.txt}
raster = envi.OpenRaster(file)
fid= ENVIRasterToFID(raster)
ENVI_DOIT, 'TMCAL_DOIT', FID=fid, /USE_METADATA
Gives error:
Invalid pointer: )>." The result may be invalid.
and while compiling says:
ENVIRASTERTOFID: Raster must be a single ENVIRaster.
Actually Landsat calibration is fine but it stops my script!
How to fix???
Full code is here:
PRO untitled2
compile_opt idl2
; insert here MTL.txt files
batchfiles = ["G:\KyprMat\!!!WorkFolder\!!!!!!!!1\163-015_20100731\L5163015_01520100731_MTL.txt", $
"G:\KyprMat\!!!WorkFolder\!!!!!!!!1\160-016_20010607\L71160016_01620010607_MTL.txt", $
"G:\KyprMat\!!!WorkFolder\!!!!!!!!1\162-015_20090907\L5162015_01520090907_MTL.txt"]
e = ENVI()
foreach file, batchfiles do begin
raster = e.OpenRaster(file)
fid_raster = ENVIRasterToFID(raster)
envi_file_query, fid_raster, DIMS=dims, NB=nb, BNAMES=bnames, FNAME=fname
;path and folder name
path = STRMID(file,0,STRPOS(file,'\',/REVERSE_SEARCH))
folder_name = STRMID(path,STRPOS(path,'\',/REVERSE_SEARCH),STRPOS(path,'\',/REVERSE_SEARCH))
; band 2
full_name = path + folder_name + '_b_2_.tif'
pos = [1]
ENVI_DOIT, 'TMCAL_DOIT', CAL_TYPE=1, DIMS=dims, FID=fid_raster, OUT_BNAME=bnames , OUT_NAME=full_name, pos=pos, R_FID=fid_output, /USE_METADATA
; band 4
full_name = path + folder_name + '_b_4_.tif'
pos = [3]
ENVI_DOIT, 'TMCAL_DOIT', CAL_TYPE=1, DIMS=dims, FID=fid_raster, OUT_BNAME=bnames , OUT_NAME=full_name, pos=pos, R_FID=fid_output, /USE_METADATA
; band 5
full_name = path + folder_name + '_b_5_.tif'
pos = [4]
ENVI_DOIT, 'TMCAL_DOIT', CAL_TYPE=1, DIMS=dims, FID=fid_raster, OUT_BNAME=bnames , OUT_NAME=full_name, pos=pos, R_FID=fid_output, /USE_METADATA
endforeach
end
|