bash pour importer textures satellites dans fligthgear

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
Reprise du message précédent
Ami age :testé, ça fonctionne, encore merci Jynz
en tout cas, c'est bien plus pratique de faire 2 copier coller sans se poser de question de l'ordre des valeurs longitude ....
je vais poster une photo de la région de Brest (que je viens de tester) dans le sujet flightgear.
question complémentaire, comment supprimer en toute sécurité tous les fichiers .png dans le dossier sous le dossier dans lequel est dans le script.
le script est dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/
et les .png dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/Orthophotos/
En chemin relatif, c'est idéal, car c'est plus facile car ça s'adapte pour n'importe qui.
si un bonne âme passe par ici.
Je pense peut être pouvoir aider (en effet, j'ai 'conçu' un fichier qui supprime des fichiers, melanger avec d'autres qu'il ne doit surtout pas toucher) ***
mais en lisant ceci : > question complémentaire, comment supprimer en toute sécurité tous les fichiers .png dans le dossier sous le dossier dans lequel est dans le script.
Là je ne suis plus sur 8|
Je comprend pas le sens de la question 8|
>question complémentaire, comment supprimer en toute sécurité tous les fichiers .png [jusque là ok !]...
dans le dossier sous le dossier [??? euhhhhhhhhhh là je comprend pas

Alors avant de te donner n'importe quoi, j'prefere etre sur !?!
*** j'ai l'impression de pas etre clair là, alors j'explique...
J'ai 'conçu' un fichier bash qui, dans un sous repertoire ou se trouve des fichiers jpg, svg, .journal, etc etc
Ne supprime QUE les fichiers svg (par exemple), MAIS ne touche surtout pas les autres...
C'est cà qu'il te faudrais ?
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
le script doit être dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/
et les .png sont dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/Orthophotos/
Édité par Ami age Le 08/01/2024 à 22h12
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
Ami age :
le script est dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/
et les .png dans /home/s/Jeux/fgc/sources/flightgear-photoscenery/Orthophotos/
si toutes les png sont dans /Orthophotos/
Est ce que quelques choses dans le genre de :
ATTENTION : REMPLACER =>shred -n 35 -z -u PAR RM (par exemple)
shred -n 35 -z -u /home/s/Jeux/fgc/sources/flightgear-photoscenery/Orthophotos/*.* [OU *.jpg]
ou alors :
shred -n 35 -z -u /home/s/Jeux/fgc/sources/flightgear-photoscenery/Orthophotos/*.*
Ne t'aiderais pas ???
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Premier indice :
Code BASH :
#!/bin/bash echo ${0} echo $(readlink -p ${0})
Deuxième indice
Code BASH :
var=/un/long/chemin/fichier.ext echo ${var%/*}
Troisième indice
Code BASH :
varA=/path varB=subfolder/subsub echo ${varA}/${varB}
Dernier indice : oublie shred, c'est un outil qui ne répond pas à ton besoin, tu n'es pas une banque avec un système informatique bancale.
Code BASH :
touch ${HOME}/tmp/{fichier1,fichier2}.{customExtension,cUsTomeXtenSiON} mkdir $HOME/tmp/dossier.customExtension find /home/${USER}/tmp -mindepth 0 -maxdepth 2 -type f -iname '*.customExtension' -delete -print find /home/${USER}/tmp -iname '*.customExtension'
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
Je ne connais pas la console, je n'ai que la logique pour moi.
alors juste en regardant le code, sachant que je ne comprends quasiment pas l'anglais, sans aller voir la traduction
1er indice pas compris (essayé en console, j'ai une erreur
s@localhost tmp]$ echo ${0}
/bin/bash
[s@localhost tmp]$ echo $(readlink -p ${0})
readlink : option invalide -- 'p'
Saisissez « readlink --help » pour plus d'informations.
second indice , on peut mettre, dans une variable, un chemin dans les répertoire.
troisième indice pas testé mais j'imagine que path est le répertoire dans lequel on est (depuis lequel le script est lancé)
et subfolder/subsub le dossier juste en dessous.
dernier indice pas tout compris. On recherche les fichiers selon leur extensions.
puis on efface tout les fichiers avec une certaine extension, on affiche ce qui a été effacé ?
et après ?
Moi, j'aurais imaginé
va dans le dossier de dessous => cd subfolder/subsub
puis efface tous les dossier avec une extenion .png => soit rm *.png
Édité par Ami age Le 09/01/2024 à 19h43
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Ami age :Jybz, tu ne sais pas devant quelles difficultés tu te présentes.
Ah? Je ne penses pas me mettre en difficulté. Ne t'inquiète pas, c'est la dernière itération!
Ami age :Je ne connais pas la console, je n'ai que la logique pour moi.
alors juste en regardant le code, sachant que je ne comprends quasiment pas l'anglais, sans aller voir la traduction
J'avais commencé comme ça

Ami age :
1er indice pas compris (essayé en console, j'ai une erreur
s@localhost tmp]$ echo ${0}
/bin/bash
[s@localhost tmp]$ echo $(readlink -p ${0})
readlink : option invalide -- 'p'
Saisissez « readlink --help » pour plus d'informations.
J'ai raté le premier indice. Le shebang (#!/bin/bash) servait à définir un script, donc a être lancé, par exemple dans la console, appeler le script "./script.sh".
La variable interne a bash ${0} vaut l'appel, soit "./script.sh". Mais s'il y a un changement de répertoire, difficile de suivre et garantir le chemin vers les fichiers a supprimer. Donc on peut convertir un chemin relatif en absolue avec la commande readlink -f (second ratage j'avais écrit -p). Ainsi, il n'y a plus de script dépendant du système de fichier, ni du nom de l'utilisateur, ni d'un chemin a respecter.
Ami age :
second indice , on peut mettre, dans une variable, un chemin dans les répertoire.
Pas seulement, surtout réutiliser ce qui a été fait avec les coordonnées, c'est à dire tronquer la chaine de caractères à partir du dernier / afin de récupérer le chemin du script et non le script lui même.
Ami age :
troisième indice pas testé mais j'imagine que path est le répertoire dans lequel on est (depuis lequel le script est lancé)
et subfolder/subsub le dossier juste en dessous.
Je voulais simplement montrer que la concaténation est possible, entre le chemin du script et le sous-dossier désiré.
Ami age :
dernier indice pas tout compris. On recherche les fichiers selon leur extensions.
puis on efface tout les fichiers avec une certaine extension, on affiche ce qui a été effacé ?
et après ?
Je montrais que find était puissant, cet exemple n'est rien comparé à ce qu'il peut faire.
L'exemple crée 4 fichiers avec des extensions respectant la casse et d'autres ne la respectant pas, mais aussi un dossier respectant la même extension qui n'est pas à supprimer ! Car ce n'est pas une image.
Puis, l'utilisation de find avec le type f pour fichier, qui supprime et affiche ce qui est supprimé.
Enfin, encore find pour prouver que le dossier n'a pas été supprimé.
Ami age :
Moi, j'aurais imaginé
va dans le dossier de dessous => cd subfolder/subsub
puis efface tous les dossier avec une extenion .png => soit rm *.png
Sauf que, si tu es dans Documents depuis ce dossier parent appeles ./mon-dossier-flightgear/mon-script.sh, il ce peut que le "cd subfolder" ne le trouve pas, donc ne l'ouvre pas, et la commande suivante supprime toutes les images png situées dans document. C'est plutôt risqué de perdre des images. D'ailleurs une bonne pratique est de toujours commencer un script avec l'instruction "set -exo pipefail" qui a pour effet quitter le script à la première erreur, par exemple "cd subfolder" n'existe pas car on n'a pas appelé le script depuis le bon répertoire.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
mais déjà, ce script est surper pratique.

_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
y a t'il une âme charitable, Jybz ? , pour m'indiquer comment supprimer tous les fichiers .png, dans les dossiers se trouvant en dessous d'où est le script ?
(voir post 1)
Édité par Ami age Le 17/01/2024 à 22h38
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

gerard-ll Membre non connecté
-
- Voir le profil du membre gerard-ll
- Inscrit le : 09/12/2011
- Groupes :
Ami age :bon, je télécharge, mais c'est assez pénible d'aller supprimer les images.
Salut Ami age, ben moi je trouve qu'avec Dolphin c'est tout simple!
Mais bon oui, si on peut le faire directement avec le script c'est bien aussi.
Pal mal Mageia!
@+
Gérard
@+
Gérard

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Code BASH :
#!/bin/bash #à placer au début de script currentScript="$(readlink -f ${0})" scriptDir="${currentScript%/*}" echo 'ton script ici' # suppression des images existantes find ${scriptDir}/Orthophotos/ -mindepth 0 -maxdepth 1 -type f -iname '*.png' -delete -print echo 'reste du script ici'
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
voici comment se termine le script
conversion en cours
./Orthophotos/e000n40/e005n43/3039577.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039577.dds)
./Orthophotos/e000n40/e005n43/3039569.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039569.dds)
./Orthophotos/e000n40/e005n43/3039560.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039560.dds)
./Orthophotos/e000n40/e005n43/3039568.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039568.dds)
./Orthophotos/e000n40/e005n43/3039552.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039552.dds)
./Orthophotos/e000n40/e005n43/3039578.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039578.dds)
./Orthophotos/e000n40/e005n43/3039576.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039576.dds)
./Orthophotos/e000n40/e005n43/3039553.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039553.dds)
./Orthophotos/e000n40/e005n43/3039554.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039554.dds)
./Orthophotos/e000n40/e005n43/3039570.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039570.dds)
./Orthophotos/e000n40/e005n43/3039561.png: convert to dds (dxt5:./Orthophotos/e000n40/e005n43/3039561.dds)
Suppression des images .png existantes
tel_tuiles_fg_justeffacepng.sh: ligne 81: fin de fichier (EOF) prématurée lors de la recherche du « ' » correspondant
[s@localhost flightgear-photoscenery (master)]$
--------------------------------------------------------------------
et voici donc le script complet
#!/bin/bash
#télécharge les tuiles par paquet
#à placer au début de script pour effacer les .png
currentScript="$(readlink -f ${0})"
scriptDir="${currentScript%/*}"
echo ""
echo ""
echo ""
echo "* ** *** **** ***** Téléchargement automatique des images satelittes pour FLIGHTGEAR ***** **** *** ** *"
echo ""
echo ""
echo ""
echo "Ouvrir firefox à cette adresse <a class="offload" href="https://scenery.flightgear.org/static/map/index.html"">https://scenery.flightgear.org/static/map/index.html"</a>
echo ""
echo ""
echo "Sélecionner la zone à couvrir en avec un clic droit avec get coordinate sur la carte pour relever le coin inférieur gauche "
echo "puis le coin supérieur droit"
echo ""
echo ""
echo "Attention, le téléchargement peut-être long, limiter le nombre de tuiles à une dizaine dans un premier temps"
echo "Si besoin, un CTRL+c interrompra ce script"
echo ""
echo "Entrer les coordonnées du coin inférieur gauche (Longitude et lattitude en même temps soit par exemple : 5.030708 44.012077)"
read pointA
echo "Entrer les coordonnées du coin supérieur droit (Longitude et lattitude en même temps soit par exemple : 5.488701 44.243969) :"
read pointB
Long_coin_inf_gauche=${pointA% *}
Lat_coin_inf_gauche=${pointA#* }
Long_coin_sup_droit=${pointB% *}
Lat_coin_sup_droit=${pointB#* }
#Vous pouvez télécharger automatiquement une série de vignettes, plutôt qu'une à la fois, à l'aide du script create_bbox.pl . Perl est requis.
#Spécifiez le cadre de délimitation souhaité avec les options --latLL, --lonLL, --latUR et --lonUR, où
#\"LL\" signifie coin inférieur gauche et
#\"UR\" signifie coin supérieur droit.
#Après ces options, ajoutez un --puis les options vers lesquelles passer creator.py.
#telecharge les tuiles :
echo ""
echo "Téléchargement en cours"
echo ""
./create_bbox.pl --latLL $Lat_coin_inf_gauche --lonLL $Long_coin_inf_gauche --latUR $Lat_coin_sup_droit --lonUR $Long_coin_sup_droit -- --cols 2 --scenery_folder /home/s/Jeux/fgc/sources/flightgear-photoscenery
# Convertit les fichiers .png en .dds :
echo ""
echo "Conversion en cours"
echo ""
#!/bin/bash
#for file in *.png
#do
# convert "$file" "$(basename "$file" .png).dds"
#done
find . -name '*.png' | while IFS= read file;
do dir=$(dirname $file); name=$(basename $file .png);
echo -n "$file: ";
if [ -f ${dir}/${name}.dds ]; then
echo "dds already there";
else
echo "convert to dds (dxt5:${dir}/${name}.dds)";
convert $file -define dds:compression=DXT5 dxt5:${dir}/${name}.dds;
fi;
done;
# suppression des images .png existantes
echo ""
echo "Suppression des images .png existantes"
echo "
find ${scriptDir}/Orthophotos/ -mindepth 0 -maxdepth 1 -type f -iname '*.png' -delete -print
echo ""
echo ""
echo "c'est terminé"
Édité par Ami age Le 19/01/2024 à 19h35
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

gerard-ll Membre non connecté
-
- Voir le profil du membre gerard-ll
- Inscrit le : 09/12/2011
- Groupes :
Ami age :Suppression des images .png existantes
tel_tuiles_fg_justeffacepng.sh: ligne 81: fin de fichier (EOF) prématurée lors de la recherche du « ' » correspondant
[s@localhost flightgear-photoscenery (master)]$
C'est bizarre Ami age, ça cause d'un numéro de ligne 81 alors que ton script n'en comporte que 69 visiblement.
![:]](/images/smileys/8.gif)
Pal mal Mageia!
@+
Gérard
@+
Gérard

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
L'erreur, ça doit-être dans cette ligne
find ${scriptDir}/Orthophotos/ -mindepth 0 -maxdepth 1 -type f -iname '*.png' -delete -print
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.

gerard-ll Membre non connecté
-
- Voir le profil du membre gerard-ll
- Inscrit le : 09/12/2011
- Groupes :
Je n'en vois que 69 de ligne.
Si l'erreur est dans la ligne que tu cites, elle se trouve à la ligne 66 alors que ton erreur est dite à la ligne 81.
C'est quoi "tel_tuiles_fg_justeffacepng.sh"?
Pal mal Mageia!
@+
Gérard
@+
Gérard

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
set -exo pipefail
Dès la 2e ligne du script
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Ami age Membre non connecté
-
- Voir le profil du membre Ami age
- Inscrit le : 18/08/2012
- Site internet
- Groupes :
-
Modérateur
puis j'ai lancé un script juste avec l'effacage de png, (j'avais mis en rouge la ligne en erreur et le code pour mettre en rouge s'est mélangé dans le code, donc j'ai refait, tout ça pour dire ne tiens pas compte du numéro de ligne)
le nom tel_tuiles_fg_justeffacepng.sh" est celui d'un script test
_______________________________________________________________________

___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.



___________________________________ Un petit clic pour Mageia ? =>> CLIQUEZ I C I :
.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie