#!/bin/ksh ################################################################## # extract_iasi.job # -------------------- # Objet : permet d'extraire des orbites IASI une liste de mot # predefinie en plus de ceux demandes par l'utilisateur. # # Usage : IASI_mot_2004_l1b -d Debut(aammjj),Fin(aammjj) # -iasi liste_de_mot_iasi (separes par ',' ou '-') # -amsu liste_de_mot_amsu (separes par ',' ou '-') # -s code_satellite (Metop, ...) # -lat latmin,latmax # -lon lonmin,lonmax # -idtm indice_terre_mer (0=mer,1=terre,2=mer+terre) # -idjn indice_jour_nuit (0=nuit,1=jour,2=nuit+jour) # [-c] (sortie format carto) # Remarques : # - ordre des options sans importance # - la virgule (',') est le seul separateur reconnu # - le tiret ('-') permet de definir une plage de mots # - les fichiers de sortie sont dans $PATH_Resu : # /IASI_mots.Code_SatVersion.Saammjj.Eaammjj.mNbrMots # /IASI_mots.Code_SatVersion.Saammjj.Eaammjj.mNbrMots.m15.info # [-c /IASI_mots.Code_SatVersion.Saammjj.Eaammjj.mNbrMots_IASI-n°mot ] # - par defaut, la zone geographique extraite est -90,90 en latitude # et -180,180 en longitude # - par defaut, l'extraction se fait pour mer+terre et jour+nuit # -------------------- # Exemple : # # IASI_mot_2004_l1b -d 910701,910730 -m 1,10-15,123 -s Metop # # -------------------- # 01/07/2007 - R. Armante (LMD/ARA/IPSL) : # erreur selection fichiers retenus en fonction # datedeb et fin demandees ==> parametres M_stop et J_stop ################################################################## ################################################################## # Variables d'environnement # ------------------- #PATH_Orbiasi_l1b="/data/sva/IASI_dev/lmd/New_version_v0.0/Data" #PATH_PROG="/data/sva/iasi_l1c/bin" #PATH_LOGS="/data/sva/iasi_l1c/logs" PROGRAMME="extract_iasi_words_all_spots" #PATH_Resu="/data/sva/IASI_dev/lmd/New_version_v0.0/Result" ################################################################## # Recupere les options - verifie leur nombre # -------------------- Carto="FALSE" Lati="-90,90" Long="-180,180" Indtm="2" Indjn="2" typeset -i NbrOptionOblig=0 while [ $# -ge 1 ] do case $1 in -d) shift 1;Date="$1"; NbrOptionOblig=$(($NbrOptionOblig+1));; -iasi) shift 1;Mot_iasi="$1"; NbrOptionOblig=$(($NbrOptionOblig+1));; -s) shift 1;Sat="$1"; NbrOptionOblig=$(($NbrOptionOblig+1));; -rd) shift 1;PATH_Resu="$1"; NbrOptionOblig=$(($NbrOptionOblig+1));; -lat) shift 1;Lati="$1";; -lon) shift 1;Long="$1";; -idtm) shift 1;Indtm="$1";; -idjn) shift 1;Indjn="$1";; -logs) shift 1;file_logs="$1";; -req) shift 1;req="$1";; -c) Carto="TRUE";; *) print 'Parameter ' $1 'is not defined in the script !!!'; echo "Parameter ' $1 'is not defined in the script !!!'" >> $PATH_LOGS/iasi_l1c_user_request_$req.txt; exit 1;; esac shift 1 done TMPDIR="$PATH_Resu/tmpdir" if [ $NbrOptionOblig -ne 4 ]; then echo $* echo "ERREUR: toutes les options obligatoires ne sont pas remplies" echo "USAGE : "$0" -d Debut(aammjj),Fin(aammjj) " echo " -iasi liste_de_canaux_iasi (separes par ',' ou '-')" echo " -s code_satellite (Metop, ...)" echo " -rd repertoire resultat" echo " [-lat] latmin,latmax" echo " [-lon] lonmin,lonmax" echo " [-idtm] indice_terre_mer (0=mer,1=terre,2=mer+terre)" echo " [-idjn] indice_jour_nuit (0=nuit,1=jour,2=nuit+jour)" echo " [-c] (sortie format carto)" exit 1 fi conf_file="./conf.txt" while read line do ll=${#line} if [[ -n $(echo $line | grep PATH_PROG) ]] ; then chem=`expr $ll - 11` temp=`echo $line | cut -c11-$ll` PATH_PROG=$temp fi if [[ -n $(echo $line | grep PATH_LOGS) ]] ; then chem=`expr $ll - 11` temp=`echo $line | cut -c11-$ll` PATH_LOGS=$temp fi if [[ -n $(echo $line | grep PATH_SUN_WEB_SERVICES) ]] ; then chem=`expr $ll - 23` temp=`echo $line | cut -c23-$ll` PATH_SUN_WEB_SERVICES=$temp fi if [[ -n $(echo $line | grep PATH_Orbiasi_l1b) ]] ; then chem=`expr $ll - 18` temp=`echo $line | cut -c18-$ll` PATH_Orbiasi_l1b=$temp fi if [[ -n $(echo $line | grep PATH_TEMP) ]] ; then chem=`expr $ll - 11` temp=`echo $line | cut -c11-$ll` PATH_TEMP=$temp fi done < $conf_file echo "PATH_Orbiasi_l1b=$PATH_Orbiasi_l1b" ################################################################## # affiche les valeurs passees # -------------------- echo " "$0 $* echo "Parametres choisis:" echo " Date : "$Date echo " Airs TBs : "$Mot_iasi echo " Satellite: "$Sat echo " Latitude : "$Lati echo " Longitude: "$Long echo " Ind T/M : "$Indtm echo " Ind J/N : "$Indjn echo " Carto : "$Carto if [ $Indjn -eq 0 ] ;then Filtre_jn='N';fi if [ $Indjn -eq 1 ] ;then Filtre_jn='J';fi if [ $Indjn -eq 2 ] ;then Filtre_jn='u';fi echo 'Filtre_jn' $Filtre_jn ################################################################## # Argument Date # -------------------- Date1=`echo $Date | cut -d, -f1` Date2=`echo $Date | cut -d, -f2` # Mise en place de l'environnement de travail # -------------------- if [[ ! -d $PATH_Resu ]]; then echo "creation du repertoire : " $PATH_Resu mkdir $PATH_Resu else echo "WARNING : " $PATH_Resu" existe deja." sleep 5 # echo " Ecraser les eventuels fichiers existant (o/n) ?" # read choix # case $choix in # [Yy]|[Oo]) echo " => Ecraser"; Ecrase="true";; # [Nn]) echo " => Conserver"; Ecrase="false";; # *) echo " => Mode par defaut = conserver"; Ecrase="false";; # esac fi cd $PATH_Resu if [[ ! -d $TMPDIR ]]; then echo "creation d'un repertoire temporaire" $TMPDIR mkdir $TMPDIR else echo "WARNING : "$TMPDIR" existe deja." sleep 5 fi cd $TMPDIR ################################################################## # Liste les archives correspondant a la demande # -------------------- # Date1=A1M1J1 et Date2=A2M2J2 A1=`echo $Date1 | cut -c1-2`;A2=`echo $Date2 | cut -c1-2` M1=`echo $Date1 | cut -c3-4`;M2=`echo $Date2 | cut -c3-4` J1=`echo $Date1 | cut -c5-6`;J2=`echo $Date2 | cut -c5-6` H1=`echo $Date1 | cut -c7-8`;H2=`echo $Date2 | cut -c7-8` typeset -i Lati1=0 typeset -i Lati2=0 typeset -i Long1=0 typeset -i Long1=0 Lati1=`echo $Lati | cut -d, -f1` Lati2=`echo $Lati | cut -d, -f2` Long1=`echo $Long | cut -d, -f1` Long2=`echo $Long | cut -d, -f2` echo "Lati1=$Lati1" echo "Lati2=$Lati2" echo "Long1=$Long1" echo "Long2=$Long2" typeset -i -Z2 aa=$A1 typeset -i -Z2 mm=$M1 typeset -i -Z2 jj=$J1 typeset -i -Z2 hh=$H1 typeset -i lat1=0 typeset -i lat2=0 typeset -i lon1=0 typeset -i lon2=0 if [[ -f Orbites_PRV_erreur ]]; then /bin/rm Orbites_PRV_erreur fi if [[ -f Orbites_PRV ]]; then /bin/rm Orbites_PRV fi M_stop=12 J_stop=31 H_stop=23 echo $aa$mm$jj $M_stop $J_stop $H_stop $A2 while [[ $aa -le $A2 ]]; do echo $aa $A2 if [[ $aa -eq $A2 ]]; then M_stop=$M2 ; fi while [[ $mm -le $M_stop ]]; do echo $mm $M_stop $M2 $A2 if [[ $mm -eq $M2 && $aa -eq $A2 ]]; then J_stop=$J2 ; fi while [[ $jj -le $J_stop ]]; do if [[ $jj -eq $J2 && $mm -eq $M2 ]]; then H_stop=$H2 ; fi while [[ $hh -le $H_stop ]]; do #Date_jul=`$PATH_PROG/date_to_quant $aa$mm$jj` #cd $PATH_Orbiasi_l1b cd $PATH_Orbiasi_l1b/20$aa/$mm/$jj print "$PATH_Orbiasi_l1b/20$aa/$mm/$jj" #echo ">>>>>>>>" #echo $PATH_Orbiasi_l1b #echo "$PATH_Orbiasi_l1b/20$aa/$mm/$jj" #echo ">>>>>>>>" #for fich in iasi_20$aa$mm$jj??.tar for fich in iasi_20$aa$mm$jj$hh.tar do cd $PATH_Orbiasi_l1b/20$aa/$mm/$jj tar tf $fich >> $TMPDIR/list_tar_temp cd $TMPDIR cat $TMPDIR/list_tar_temp |grep "_20$aa$mm$jj$hh" | grep ".f" | while read fichF ;do #cat list_tar_temp |grep "_20$aa$mm$jj" | grep ".f" | while read fichF ;do #test sur lat et lon lat1=`echo $fichF | cut -d_ -f3` lat2=`echo $fichF | cut -d_ -f5` lon1=`echo $fichF | cut -d_ -f4` lon2=`echo $fichF | cut -d_ -f6` lat1=$(($lat1-90)) lat2=$(($lat2-90)) lon1=$(($lon1-180)) lon2=$(($lon2-180)) test=1 if [[ $lat1 -ge $Lati1 && $lat1 -le $Lati2 || $lat2 -ge $Lati1 && $lat2 -le $Lati2 ]]; then if [[ $lon1 -lt $lon2 ]]; then if [[ $lon1 -ge $Long1 && $lon1 -le $Long2 || $lon2 -ge $Long1 && $lon2 -le $Long2 ]]; then test=0 fi else if [[ $lon2 -ge $Long1 || $lon1 -le $Long2 ]]; then test=0 fi fi fi if [[ $test -eq 0 ]]; then #echo "$fichF" cd $PATH_Orbiasi_l1b/20$aa/$mm/$jj tar xvf $fich $fichF cp $fichF $TMPDIR echo $TMPDIR"/"$fichF >> $TMPDIR/Orbites_PRV fi done /bin/rm $TMPDIR/list_tar_temp done #/bin/rm *.LT #cd $TMPDIR #ls $PATH_Orbiasi_l1b |grep $aa$mm$jj$hh | grep ".f" | while read fichF ;do # echo $PATH_Orbiasi_l1b/$fichF >> $TMPDIR/Orbites_PRV #done # ls $PATH_Orbiasi_l1b/??$aa$mm$jj*.asc 2>> Orbites_PRV_erreur >> Orbites_PRV if [[ $hh -eq $H_stop ]] ; then break fi #rq: certains fichiers n'existent pas d'ou la redirection d'erreur (( hh=$hh+1 )) done #raz compteur jour pour mois suivant hh=00 (( jj=$jj+1 )) done #raz compteur jour pour mois suivant jj=01 (( mm=$mm+1 )) done #raz compteur jour pour annee suivante mm=01 (( aa=$aa+1 )) done cd $TMPDIR if [[ ! -s Orbites_PRV ]]; then echo "Erreur : aucune archive ne correspond a la requete" # /bin/rm -R $TMPDIR exit 1 fi typeset -i Nb_Archives=0 Nb_Archives=`cat Orbites_PRV | wc -l` echo "Nombre d'archives correspondant a la requete: "$Nb_Archives ################################################################## # Traitement de la liste de mots # -------------------- # Remplace les virgules par des espaces # -------------------- set -A Mots_iasi `echo $Mot_iasi | sed y/,/' '/` # Complete la liste de mot si '-' rencontre # -------------------- echo "Mots_iasi="${Mots_iasi[*]} NbrMots_iasi=0 for elem in ${Mots_iasi[*]} do if [[ $elem != *-* ]]; then Liste_Mots_iasi[$NbrMots_iasi]=$elem NbrMots_iasi=$(($NbrMots_iasi+1)) else N1=`echo $elem | cut -d- -f1` N2=`echo $elem | cut -d- -f2` if [[ $N1 -ge $N2 ]]; then echo "erreur mots:" $N1 ">=" $N2 exit 1 fi typeset -i nb=$N1 while [[ nb -le $N2 ]] ; do Liste_Mots_iasi[$NbrMots_iasi]=$nb NbrMots_iasi=$(($NbrMots_iasi+1)) nb=nb+1 done fi done echo ${Liste_Mots_iasi[*]} # Ajout des mots par defaut (29 30 31 35 36 37 39 228) # pour affichage uniquement, le Fortran les ajoute en "dur" # -------------------- Liste_Mots=${Liste_Mots_iasi[*]} NbrMots=$(($NbrMots_iasi)) echo $NbrMots ${Liste_Mots[*]} ################################################################## # Fichier sortie # -------------------- File=`echo "IASI_mots_all_spots_"$req"."$Sat$Version".S"$Date1".E"$Date2".m"$NbrMots` ################################################################## # Affiche les arguments traites # -------------------- echo "req=$req" cat > $File".info" < Orbites_PR $PATH_PROG/$PROGRAMME $Carto $FlagHeader $Lati $Long $Indtm $Indjn Orbites_PR temp_file ${Liste_Mots[*]} for fichF in $(> $File # ==================== # Si option carto # ==================== if [[ $Carto = "TRUE" ]]; then for j in ${Mots_desire[*]}; do #extract_iii complete les indices des mots par des zeros (ex:IASI-005) #carto comprend l'indice sans completion (ex:IASI-5) typeset -i -Z3 JJJ=$j cat temp_file*$JJJ > $File"_IASI-"$j done #on desactive l'option carto pour la prochaine etape #(evite de creer des fichiers trop long inutiles) Carto="FALSE" echo "WARNING : Option carto desactivee pour archives suivantes" fi # ==================== # Efface les fichiers temporaires # -------------------- #/bin/rm temp_file* #/bin/rm Orbites_PR # Passe a l'archive suivante # -------------------- (( CptPRV=$CptPRV+1 )) done < Orbites_PRV ################################################################## # Sauvegarde des resultats # -------------------- if [[ $Ecrase = "true" ]]; then /bin/mv -f $File* $PATH_TEMP/ else /bin/mv -fu $File* $PATH_TEMP/ fi echo "Les fichiers resultats se trouvent dans : "$PATH_Resu ################################################################## # Suppression du repertoire temporaire # -------------------- echo "suppression du repertoire temporaire" #/bin/rm -r $PATH_Resu