X
PrevPrev Go to previous topic
NextNext Go to next topic
Last Post 17 Mar 2005 03:59 PM by  anon
IDL ENVI Program Interaction
 0 Replies
Sort:
You are not authorized to post a reply.
Author Messages

anon



New Member


Posts:
New Member


--
17 Mar 2005 03:59 PM
    March 17, 2005 Hello, I am trying to write a program to calibrate AVHRR data using IDL 6.1. IDL, I believe, uses some built in ENVI 4.1 functions to actually process the data. I am new both to IDL and ENVI and am not sure if what I'm saying is fully correct. The following program opens a file that has a list of all the files that need to be processed (called "inputFile") and processes them using the ENVI commands. The skeleton of this program was taken from an example (ENVI_AVHRR_CALIBRATE_DO_IT) in the online ENVI 4.1 (PDF) manual. The program compiles fine. Also, it runs without errors if one file is being processed. However, when I try to run the program, with more than one file (on my test run, I tried to run the program with 5 files that needed to be processed), the program gave the following output: % Compiled module: TEST. IDL> test Processing file: 1_25_99_10_40_AM Processing file: 1_25_99_12_09_PM % Program caused arithmetic error: Floating illegal operand Processing file: 1_26_99_10_29_AM % Program caused arithmetic error: Floating illegal operand Processing file: 1_26_99_12_01_PM % Program caused arithmetic error: Floating illegal operand Processing file: 1_27_99_10_19_AM % Program caused arithmetic error: Floating illegal operand Notice that for the first file the program does not output the following error: "Program caused arithmetic error: Floating illegal operand". However, after that this error is present. I have tried to get around this nagging bug but without success. I'd be grateful if someone could help me out. Thanks very much, Vinit pro test working_dir = 'E:\MyDir\' out_dir = 'E:\MyDir\Output\' envi, /restore_base_save_files ; ENVI Reference Guide ENVI_AVHRR_CALIBRATE_DOIT ; initialize ENVI and send all errors and warnings to the file batch.txt envi_batch_init, log_file='batch.txt' ; number of batch files toprocess = '' numfilestoprocess = 5 ; get name of file to process from input batch file named "toprocess" batchfile = working_dir + 'inputFile' ; assign a file unit get_lun, batchunit ; open the file for reading openr, batchunit, batchfile ; process in Batch numfiletoprocess number of image files for firstfile=0, (numfilestoprocess-1) do begin readf,batchunit,toprocess print, "Processing file: " + toprocess filetoprocess = working_dir + toprocess envi_open_data_file, toprocess, $ r_fid=fid, /avhrr if (fid eq -1) then begin ;print error message print, openfid return end ; set the keywords envi_file_query, fid, ns = ns, nl = nl, nb = nb dims = [-1l, 0, ns - 1, 0, nl - 1] ; write the name of the output file out_name = out_dir + toprocess + 'cal' pos = lindgen(nb) ; call the doit envi_doit, 'envi_avhrr_calibrate_doit', $ fid=fid, dims=dims, pos=pos, $ out_name = out_dir + toprocess + 'cal', /correct_solarz, $ r_fid=r_fid envi_file_mng, id=fid, /remove envi_file_mng, id=r_fid, /remove close, fid close, r_fid free_lun, fid free_lun, r_fid endfor close, batchunit free_lun, batchunit envi_batch_exit exit end
    You are not authorized to post a reply.