Bonjour,
Est ce que quelqu'un pourrait m'expliquer ce que fait ce script, je doit l'utiliser mais je connais très mal le langage et n'ai plus de nouvelles du programmeur.
Je dois générer des images mais quelque soit la valeur que je donne aux paramètres "date_deb" et "nbjour" j'obtient toujours la même chose or selon le programmeur "nbjour" serait un pas ce qui apparemment n'est pas le cas....
Voici le programme:
#!/bin/bash
if [ $# -ne 9 ]
then
echo Il manque un ou plusieurs arguments:
echo La syntaxe est:
echo $0 date_deb nbjour maille long_min long_max lat_min lat_max dossier sortie
exit -1
fi
sep=/
concat=concat
synthese=syntheseV
dir=$(pwd)
cd $9
if [ -e appendfile ]
then
echo Removing old appendfile
rm appendfile*
fi
cd $dir
my=MY*
k=0
for i in $8$my
do
declare -i deb=`expr length $8`
deb=`expr $deb+19`
fin=`expr substr $i $deb 7`
taille=`expr 7 - length $fin`
declare -i jour
case "$taille" in
"0")
jour=10#`expr substr $fin 1 3`
;;
"1")
jour=10#`expr substr $fin 1 2`
;;
"2")
jour=10#`expr substr $fin 1 1`
;;
esac
sepa=_
deb=`expr length $8`
deb=`expr $deb+15`
annee=`expr substr $i $deb 4`
declare -i max=`expr $1+$2`
if [ $k -eq '0' ]
then
appendfile=appendfile$annee$sepa$1$sepa$max
k=1
fi
if [ "$jour -ge $1" -a "$jour -lt $max" ]
then
$dir$sep$concat $i $9$appendfile
fi
done
echo Construction des images et statistiques
$dir$sep$synthese $1 $2 $3 $4 $5 $6 $7 $8 $9 $appendfile
Merci beaucoup.
# Indice
Posté par Joc M . Évalué à 2.
quand tu as if [ $A -ne $B ]
ca veut dire "$A not equal $B"
quand tu as if [ $A -ge $B ]
ca veut dire "$A greater or equal $B"
quand tu as `toto` toto est éxecuté avant et on se sert du résultat dans la ligne (attention au sens des quotes, ' et " n'ont pas le même sens)
Je te conseil de chercher de la doc sur bash par ce que là je ne te donne de clés que pour 10% de ton code
PS : si le code en question devra encore être repris, commente le car ton prédécesseur te laisse dans de beaux draps
# :)
Posté par JaguarWan . Évalué à 3.
Rien de bien sorcier comme tu vois, je pense que le problème est dans ton executable syntheseV de la dernière fois.
[^] # Re: :)
Posté par vanessa15 . Évalué à 1.
En fait je doit générer des images satellites sur des périodes différentes, 5jours, 10 jours .....
Le problème c'est que le programme aurait été fait de tel sorte que le paramètre date_deb serait le jour julien et que "nbjour" serait un pas. Donc quand je rentre des données sur 15 jours par exemple, je ne devrait pas obtenir la même chose selon la date du jour et le pas. Or même si je tappe 0 0 j'obtient la même chose, en fait il ne tient compte que de la taille du fichiers en entrée.
Je voudrais être sur que se soit bien ça, cela ne me pose pas de problème qu'il n'y ai pas de pas mais j'ai quand même deux paramètres qui ne servent à rien!
Dans le script , on dit que si la valeur jour qu'on a trouvé dans le nom de fichier est superieure ou egale
# a date_deb et strictement inferieure a MAX:
# on appelle concat dans le dossier original avec le nom du fichier donc cela devrait changé selon les paramètres tapés?
Ou alors cela n'a d'impact que sur le nom du fichier en sortie? Car effectivement mes fichiers sont de la forme "le2004_1_6_imageHH.raw " avec 1 date_deb et 6 date_deb + nbjour.
Dans syntheseV on ne parle pas de ses deux paramètres donc je ne pense pas que ça vienne de là.....
[^] # Re: :)
Posté par JaguarWan . Évalué à 2.
Le script prend tous les fichiers commençant par MY du dossier indiqué en paramètre, et les ajoute un par un à appendfile si et seulement si $jour (calculé à partir du nom de fichier) est dans les clous ($jour >= date_deb et $jour < date_db+nbjour).
Donc même si le script ne marche pas très bien, logiquement on ne peut qu'avoir des images en trop ou en moins dans appendfile (donc des sorties différentes).
Ou alors, il se trompe completement en lisant le jour et tombe sur une valeur qui passe toujours le test, auquel cas tu auras effectivement systématiquement l'ensemble des images du dossier dans appendfile.
Je pense qu'il serait intéressant d'ajouter:
juste avant:
pour voir si le script interprète correctement les noms de fichiers (la méthode étant quelque peu rustique, c'est une possibilité à considérer).
[^] # Re: :)
Posté par vanessa15 . Évalué à 1.
J'ai lancé MainScript en tapant des paramètres différents par exemple:
MainScript 1 15 0.125 -25 20 0 25 /mnt/porto/sde1/vanessa/Save/Area/15j/ /mnt/porto/sde1/vanessa/tmp/essai_1_15/
Voici le début et la fin de ce qu'il fait:
"Fichier courant: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23613.20040011144 JOUR=1 ANNEE=2004 date_deb+nbjour=16
FILENAME: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23613.20040011144
sp= 55
Fichier courant: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23614.20040011145 JOUR=1 ANNEE=2004 date_deb+nbjour=16
FILENAME: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23614.20040011145
sp= 127
(.............)
Fichier courant: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23821.20040160349 JOUR=16 ANNEE=2004 date_deb+nbjour=16
FILENAME: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23821.20040160349
sp= 127
Fichier courant: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23822.20040160350 JOUR=16 ANNEE=2004 date_deb+nbjour=16
FILENAME: /mnt/porto/sde1/vanessa/Save/Area/15j/MYQS_S2A23822.20040160350
sp= 30
******PROCESSING********
********************
Creation de l'image
/mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_ecartypeHH.raw
/mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_ecartypeVV.raw
/mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_nbvalueVV.raw
/mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_nbvalueHH.raw
il ya 128 pixel sans valeur dans /mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_imageHH.raw
il ya 123 pixel sans valeur dans /mnt/porto/sde1/vanessa/tmp/essai_1_15/e2004_1_16_imageVV.raw
col=360 ligne=200
Image cree à partir de: 5774570 valeurs"
Je n'ai pas tout mis , c'est beaucoup trop long.
Quelque soit les paramètres que je tappe j'obtiens toujours la même chose, seul date_deb+nbjour change.
Je viens de remarquer que le nombre de valeur à partir de laquelle l'image est crée peut changer mais ceci ne se voit pas dans les images.....
Par exemple, en tapant 1 et 5 j'obtiens:
"Image cree à partir de: 2887285 valeurs"
Mais je ne sais pas si cela à de l'importance ou non.....
[
[^] # Re: :)
Posté par JaguarWan . Évalué à 2.
Par contre j'ai vérifié dans syntheseW.c, celui-ci n'utilise pas du tout les paramètres date_deb et nbjour. D'un autre côté, le programme travaille exclusivement à partir du résultat "appendfile" de MainScript, donc normalement les bonnes images... Tout ça est assez mystérieux :)
Quels résultats devraient tu obtenir ? L'idéal serait de pouvoir comparer les résultats du programme sur un jeu d'essai au résultat connu, afin de déterminer si l'implémentation est correcte. Peut être est-ce normal d'obtenir des résultats proches pour différentes périodes de cet échantillon (données monotones) ? Les résultats sont-ils toujours similaires en faisant tourner le programme sur une série différente ?
[^] # Re: :)
Posté par vanessa15 . Évalué à 1.
Malheureusement je ne sais pas quels résultats je dois obtenir, puisque c'est l'objet de mon travail ; étudier des images satellites et obtimiser celles-ci en trouvant une période et une maille correcte. Je n'ai aucun moyen de comparaison, ces données n'ont jamais été utilisées auparavant.
Effectivement j'obtiens des résultats diffférents pour des périodes en entrée différentes (5j,10j...). Donc à priori le programme prend en compte tout ce qu'il ya dans mon fichier en entrée. Mais suis je bien sure qu'il prend TOUT en compte et que cela ne dépend pas (même peu) de mes paramètres date_deb et nbjour. Car je dois en avoir la certitude. De toute façon cela n'est pas très rigoureux d'avoir 2 paramètres "inutiles"....
En ce qui concerne le nombre de valeur à partir de laquelle l'image est crée le problème venait du fait que le fichier en sortie n'écrase pas ce qu'il y avait avant, je dois créer un nouveau fichier. Et alors quelque soit la valeur des paramètres tappés j'obtiens toujours la même valeur .
Il n'est pas possible de faire les choses à l'envers, c'est à dire de lancer sytheseV "manuellement"ou quelque chose dans le genre ?
[^] # Re: :)
Posté par JaguarWan . Évalué à 2.
Les paramètres date_deb et nbjour ne sont en fait utilisés que par MainScript, pour sélectionner toutes les images de la période donnée et les grouper dans le fichier "appendfile" (le programmeur original y fait référence par ce nom, c'est le fichier donné en entrée à syntheseV).
D'après ce que tu me dis sur la nature des traitements, je suppose que ces paramêtres ne devraient pas intervenir dans les calculs de syntheseV, et je peux t'assurer que c'est le cas :) Dans syntheseV, date_deb et nbjour sont lus mais ne sont jamais utilisé par la suite.
Tu fais référence aux messages comme "Image cree à partir de: 5774570 valeurs" ?
Sinon, pour utiliser syntheseV directement, il faudrait qu'il lise lui même les images traitées par MainScript, mais apparemment MainScript fait son travail correctement (donc ça serait une perte de temps). En fait, ça ressemble à un repentir du programmeur; au début, syntheseV aurait probablement du faire le travail de MainScript mais le codeur a probablement du trouver plus rapide et commode de déléguer la sélection des images à un script externe (d'où les paramètres inutilisés dans syntheseV).
[^] # Re: :)
Posté par vanessa15 . Évalué à 1.
Si ces paramètres n'interviennent pas dans les calculs de syntheseV alors c'est génial, je continue comme ça.
Merci beaucoup pour ton aide (encore une fois).
:)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.