banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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

 

Pied de page des forums

Powered by FluxBB