Re: ENVI header files in IDL [message #58947] |
Wed, 27 February 2008 09:36  |
Jean H.
Messages: 472 Registered: July 2006
|
Senior Member |
|
|
Raghu wrote:
> Hi,
>
> In IDL, i'm using filesearch function to read through files of certain
> types.
> Since an envi file has no specific extension, i'm not able to figure
> out how to sort out the files.
> Here's an example:
>
> Say i have 2 images in ENVI format. It would look like IMAGE1,
> IMAGE1.hdr,IMAGE2, IMAGE2.hdr.
> As you can see, its only the header file which has the extension. When
> i use the filesearch(image*), i am not
> able to ignore the header files. These header files are not to be
> processed.
>
> Any ideas of how to choose only the images and not the header files,
> as in this case ?
> I guess i could convert the files to IMG so that they have an
> extension, but there must be an easier way.
>
> Thanks,
>
> Raghu
Hi,
you can do a filesearch on the headers only
filesToOpen = filesearch('image*.hdr') --> all that start with 'image'
and ends with '.hdr')
then remove the last 4 characters from the strings. Test if the file
exists. If yes, open it. If not, try to add the common extensions (.dat,
then .img etc). Of course, sort the order of the extensions (nothing,
.dat etc) so that most images to process have the first extension (or
lack of extension).
here is a slightly different code that I use. The user select a file. If
there is no extension in that file, it is open. Otherwise, the code
looks for the file with the possible extensions.
fileToOpen = dialog_pickFile(path = searchFolder, GET_PATH =
searchFolder, /must_exist, title = title)
;If the user selected a .hdr, remove the extension and find the correct
one.
if (STRLOWCASE(strmid(fileToOpen,3, /REVERSE_OFFSET)) eq '.hdr') or
(STRLOWCASE(strmid(fileToOpen,3, /REVERSE_OFFSET)) eq '.aux') then begin
fileToOpen= strmid(fileToOpen, 0,strlen(fileToOpen)-4)
extensionNotFound = 1B
currentExtension = 0
tmpFileToOpen = fileToOpen
commonExtensions = ['.dat','.img']
while extensionNotFound and currentExtension lt
n_elements(commonExtensions) do begin
if FILE_TEST(tmpFileToOpen) eq 0 then begin
tmpFileToOpen = fileToOpen + commonExtensions[currentExtension]
currentExtension +=1
endif else begin
extensionNotFound = 0B
fileToOpen = tmpFileToOpen
endelse
endwhile
endif
Jean
|
|
|