Vous n'êtes pas identifié(e).
Futur nouvel inscrit, tu dois au préalable lire l'intégralité des 10 articles des règles, s'il te plaît. Tout nouveau compte qui ne respecte pas les règles sera supprimé par l'administration.
Pages : 1
Salut,
ça faisait bien longtemps que j'avais installé LittleNavMap et je n'avais absolument plus aucun souvenir de comment je m'y était pris pour avoir toutes les infos nécessaires [1]. Mais il y a quelques semaines une mise à jour vers la version 2.8.10 a tout cassé à cause d'une feature dont je me serai bien passée: «Navigraph selection is now remembered for each simulator selection separately. This means that the Navigraph selection is automatically changed when switching between simulators. The simulator and Navigraph selection is reset on the first startup on update» que je traduis grosso-modo par «vas te faire voir ailleurs si t'as pas X-Plane ou MSFS» (traduction très approximative mais le sens est bien celui-là).
La base de données mise à zéro, et voilà qu'on me demande les chemins vers des X-Plane 18 ou des Flight Simulator machin, un gros message persistant en gros gras rouge pétard: «la base de données est vide», plus possible de faire le moindre plan de vol, la moindre recherche d'un piste, ou d'aéroports voisins, plus rien sauf l'affichage de la carte (ce que fgmap fait très bien tout seul, merci).
Je pouvais pas décemment écrire à l'auteur de LNM sans proposer une solution, lui qui dit que seuls X-Plane, MSFS et des trucs proprio que je connais pas sont supportés. Et puis j'avoue un peu l'agacement de me dire qu'un logiciel libre (LNM est sous licence GPL3) n'est pas au moins un peu compatible avec un autre logiciel libre du même domaine (FG est sous licence GPL2). Bref tout ça ne m'a pas rendu le personnage sympathique.
Aussi j'ai essayé de faire un truc moche en shell et awk qui n'aurait pas du avoir d'autre vocation que de naître dans un cerveau malade, lequel cerveau malade espérait naïvement pouvoir remplir les bases de données correctement à partir des données que nous avons à dispo dans FG, de son intuition en lisant les noms des tables et champs des bases de données de LNM et renifler dans le code source de LNM.
C'est alors que je découvris un poil par hasard juste à côté de LNM sur son dépôt git, un truc au nom évocateur: navdatareader avec une courte description dessous: «Navdatareader is a command line tool that uses the atools fs/bgl and fs/writer to store a full flight simulator scenery database into a relational database like Sqlite or MySql» qui peut se traduire approximativement par «ce ne serait pas une solution à ton problème de bases de données ça ? un outil en ligne de commande pour transformer les données de tes scènes dans le format qui va bien à LNM»
Pas plus de suspense, voici comment faire pour donner à manger à LNM les données qui lui conviennent (explication sous le script qui n'est qu'une doc pour détailler la procédure):
#!/bin/bash
set -e
APROJECTS=APROJECTS
if test -z "$FGROOT"; then
exit 1
fi
function mkdir_cd () {
mkdir -p $1
cd $1
}
mkdir_cd /dev/shm/$APROJECTS
git clone https://github.com/albar965/atools.git
mkdir_cd navdatareader
wget https://github.com/albar965/navdatareader/archive/refs/tags/v1.0.30.tar.gz
tar --strip-components=1 -xzf v1.0.30.tar.gz
rm v1.0.30.tar.gz
cd /dev/shm/$APROJECTS
build () {
mkdir_cd build-$1-release
qmake ../$1/$1.pro CONFIG+=release
make > /dev/null
cd /dev/shm/$APROJECTS
}
build atools
build navdatareader
mkdir -p ~/.x-plane
touch ~/.x-plane/x-plane_install_11.txt
mkdir -p "X-Plane 11/Custom Scenery"
mkdir -p "X-Plane 11/Resources/default data"
mkdir -p "X-Plane 11/Resources/default scenery/default apt dat/Earth nav data"
gunzip --to-stdout $FGROOT/Airports/apt.dat.gz > "X-Plane 11/Resources/default scenery/default apt dat/Earth nav data/apt.dat"
for data in fix awy nav; do
gunzip --to-stdout $FGROOT/Navaids/$data.dat.gz > "X-Plane 11/Resources/default data/earth_$data.dat"
done
cat > "X-Plane 11/Custom Scenery/scenery_packs.ini" << eof
I
1000 Version
SCENERY
eof
sed -i '1s/^/I/;2s/^810 Version/850 Version/' "X-Plane 11/Resources/default data/earth_nav.dat"
sed -i '2s/^640 Version/850 Version/' "X-Plane 11/Resources/default data/earth_awy.dat"
sed -i '2s/^600 Version/850 Version/' "X-Plane 11/Resources/default data/earth_fix.dat"
if ./build-navdatareader-release/navdatareader -f XP11 -b "X-Plane 11"; then
if test -r navdata.sqlite; then
if cp navdata.sqlite ~/.config/ABarthel/little_navmap_db/little_navmap_xp11.sqlite; then
echo données copiées
echo /dev/shm/$APROJECTS peut être viré sans peur
else
echo impossible de copier les données où il faut
fi
else
echo trouve pas navdata.sqlite
fi
else
echo erreur
fi
cd /dev/shm
En gros ça récupère les sources, ça compile le bousin [2], ça se prépare pour faire croire au bousin que X-Plane 11 est là, et ça met les fichiers qu'il faut là où il faut et au format qu'il faut, avant de lancer la moulinette.
Et twingo! une base de données toute fraîche (69Mo) avec que des bonnes infos en provenance directe de FG, et LNM qui repart comme avant: recherches OK, les plans de vols nickel, tout bien.
Voilà, tant mieux si ça peut servir à quelqu'un
[1] probablement des trucs moches quand j'ai vu qu'il fallait s'inscrire à des sites commerciaux et faire chauffer la carte bleue juste pour avoir des données dans un [bip] de simulateur sur un petit ordi ! alors que tout est déjà là
[2] j'avais déjà toutes les dépendances (Qt5, qmake au moins probablement liées à l'époque où je compilais LNM moi-même, chose que je ne fais plus)
[edit]j'oubliais ! je colle ici un bout du code que j'avais commencé pour les scripts de population des BDD de LNM (c'est du awk ici, des fonctions pour calculer des distances et des directions)
function degrees_to_radians(degrees) {
pi = 3.141592653589793
return (degrees * pi / 180.0);
}
function radians_to_degrees(radians) {
pi = 3.141592653589793
return (radians * 180.0 / pi);
}
function asin(x) {
return atan2(x, sqrt(1-x*x));
}
function haversine(lat1, lon1, lat2, lon2) {
EARTH_RADIUS_IN_METRES = 6372797;
deltalat = (lat2 - lat1) / 2.0;
deltalon = (lon2 - lon1) / 2.0;
sin1 = sin( degrees_to_radians(deltalat) );
cos1 = cos( degrees_to_radians(lat1) );
cos2 = cos( degrees_to_radians(lat2) );
sin2 = sin( degrees_to_radians(deltalon) );
x = sin1*sin1 + cos1*cos2 * sin2*sin2;
metres = 2 * EARTH_RADIUS_IN_METRES * asin( sqrt(x) );
return metres;
}
function heading(lat1, lon1, lat2, lon2) {
X = cos(lat2) * sin(lon2 - lon1)
Y = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2-lon1)
h = atan2(X, Y)
h = radians_to_degrees(h)
return h
}
[/edit]
@+
bons vols
zakh
Dernière modification par zakharov (8/05/2023 0:47:09)
le zkv1000
Debian Bookworm sur i7-9750H, 16G, NV GeForce GTX 1660 Ti MaxQ 6Go
FG next compilé à la mano
Joystick TM T. Stick X avec fichier de conf perso
Hors ligne
J'ai tout lu, et pas compris grand chose, c'est normal pour mon état de comprenoire.
Mais en tout cas j'ai bien ri
Bon zakh c'est zakh, on ne le changera pas, et c'est tant mieux
André. anciennement taureau89_9
Debian Testing Amd64. CM Sabertooth 990FX, FX8350, 32 Go Ram DDR3 1866 Mhz, GTX 1060 6Go, DD 2To Sata 3, THRUSTMASTER T.Flight StickX, FG 2020.4.0 Git.
Hors ligne
Pages : 1