#1 Fri 25 May 2007 12:03
- winz
- Juste Inscrit !
- Lieu: Paris
- Date d'inscription: 6 Sep 2005
- Messages: 6
[ENVI3.5] utiliser un script (.pro) avec IDL
Bonjour,
Je souhaite utiliser un script (.pro) trouvé ici, mais que n'ai aucune notion de programmation IDL.
J'ai essayé 2 méthodes :
- après avoir placé le script dans le dossier IDL55\lib\, j'entre la ligne de commande:
Code:
@batch_bandmath.pro
... cela ne fonctionne pas
- depuis l'environnement IDL, je charge le script, puis compilation et run... et là non plus cela ne fonctionne pas.
C'est peut être lié aux modifications effectuées dans le script (spécifications des chemins, suffixes des fichiers etc...), ou cela vient peut être du fait que le script est été créer sous Envi4.1 et que j'utilise la version 3.5 ?...
bref, avant tout, est-ce que quelqu'un pourrait m'indiquer la façon standard d'utiliser un script (.pro), pour que je puisse procéder par élimination dans mon débugage.
Merci d'avance pour votre aide.
Vincent
Hors ligne
#2 Fri 25 May 2007 15:04
- pharos1
- Participant actif
- Date d'inscription: 28 Nov 2006
- Messages: 81
Re: [ENVI3.5] utiliser un script (.pro) avec IDL
Salut Winz,
La première raison peut être comme tu dis la différence de version.
Si non essayes de télécharger le Script (.pro) et le sauvegarder dans le répertoir Save_ADD de ENVI, redémarres ENVI, et tu le trouveras.
Bye..
Hors ligne
#3 Fri 25 May 2007 15:14
- winz
- Juste Inscrit !
- Lieu: Paris
- Date d'inscription: 6 Sep 2005
- Messages: 6
Re: [ENVI3.5] utiliser un script (.pro) avec IDL
Bonjour, merci pour cette première réponse.
Bon j'ai un peu avancé, j'arrive à faire tourner le script, en donnant les bons paramètres en entrée, mais très rapidement ça bloque sur la fonction :
FILE_BASENAME() qui n'est pas définie
Code:
% Variable is undefined: FILE_BASENAME. % Execution halted at: BATCH_BANDMATH 16 C:\Program Files\IDL55\lib\batch_bandmath.pro % $MAIN$
Il semblerai d'après ce que j'ai pu lire ici que cette fonction (car c'est bien une fonction qui est ici prise pour une variable) est été introduite depuis la version 6.0
Ma nouvelle question est de savoir si un fonction équivalente est disponible sous la version 5.5 d'IDL ...
Je continue à chercher de mon côté, merci de votre aide
Vincent
Dernière modification par winz (Fri 25 May 2007 15:15)
Hors ligne
#4 Mon 28 May 2007 10:25
- winz
- Juste Inscrit !
- Lieu: Paris
- Date d'inscription: 6 Sep 2005
- Messages: 6
Re: [ENVI3.5] utiliser un script (.pro) avec IDL
Bonjour,
Petit complément pour ceux que cela intéresse.
Pour créer des néocanaux en batch avec la procédure « batch_bandmath » :
- récupérer le script ici
- placer ce script dans IDL55\lib\
- depuis ENVI>IDL ouvrir ce script .pro
Si vous disposez d’une version d’IDL < 6.0, la fonction FLE_BASENAME(), qui permet de renvoyer le nom d’un fichier (sans le chemin complet, déduit d’une chaîne suffixe + extension) ne sera pas reconnue.
Dans mon cas le dossier contenant les images input et les output est le même et la longueur de mes nom de fichiers est de 21, on peut donc remplacer l’appel à la fonction :
Code:
for i=0,numimages-1 do imagebasenamearray[i]=$ file_basename(imagenamearray[i])
Par :
Code:
for i=0,numimages-1 do imagebasenamearray[i]=$ STRMID(imagenamearray[i],STRLEN(outdirectory),21)
Une fois ces modification apportées, compilation.
Pour l’appel (à entrer en ligne de commande):
-Si vos images son au format ENVI standard (pas d’extension) alors utiliser
Code:
bandsuffixes=['','']
-Si vous avez des fichiers multi bandes, utiliser
Code:
bandpos=[0,1]
pour indiquer les bandes à utiliser, à noter que l’ordre des indices doit rester cohérent avec l'ordre des images(ou bandes) spécifiées en entrée, et que ce tableau commence à zéro.
Exemple d’appel pour une image SPOT5, au format ENVI standard (sans extension) pour calcul du ndvi
Code:
ENVI > batch_bandmath,exp='(float(b2) - float(b1))/(float(b2)+float(b1))',banddirectories=['D:\data\spotscene\batch\','D:\data\spotscene\batch\'],bandsuffixes=['',''],bandpos=[0,1],outdirectory='D:\data\spotscene\batch\',outsuffix='_ndvi',startfile=0,endfile=10000,overwrite=0
A+
Vincent
Hors ligne