Fr/Utiliser TerraGear

From FlightGear wiki
Jump to navigation Jump to search
Organigramme de TerraGear

Le projet logiciel TerraGear participe au projet FlightGear en créant les fichiers utilisés par celui-ci pour représenter le relief et la texture de la Terre, ce qui comprend les aéroports, villes, champs, forêts, rivières, routes, etc. Le logiciel TerraGear lit des fichiers de données contenant l'élévation du sol, le positionnement et l'agencement des aéroports, les données géographiques d'occupation du sol, entre autres et produit les fichiers de scènes utilisés par Flightgear pour représenter la surface de la planète.

Par simplicité et commodité, la plupart des utilisateurs de FlightGear téléchargent simplement les fichiers plug-and-play des scènes à partir du serveur de scènes de FlightGear, ou utilisent TerraSync pour télécharger automatiquement les scènes à la demande. Mais il peut y avoir des cas où vous voudriez utiliser TerraGear pour générer vos propres fichiers terrain, plutôt que de télécharger les scènes standard de FlightGear.

Par exemple, si vous utilisez WorldEditor pour modifier/améliorer les information concernant un taxiway/une aire de trafic d'un aéroport, vous pourriez avoir envie de visualiser à quoi ressemblerait cet aéroport modifié dans les scènes avant de décider que les résultats vous conviennent. Peut-être que les scènes officielles sont trop détaillées pour votre machine un peu ancienne, et que vous voudriez construire un terrain avec un modèle numérique de d'élévation (DEM) de plus faible résolution, afin de diminuer le nombre de polygones et ainsi augmenter votre taux de rafraîchissement d'image. Soit vous avez une machine ultra-rapide, et vous voulez construire votre propre terrain avec des données vectorielles de plus haute résolution (vmap1, Tiger, osm) pour obtenir de meilleures routes/rivières. Pour toutes ces raisons, apprendre à utiliser TerraGear est une bonne idée.

Obtenir TerraGear

Vous pouvez soit compiler TerraGear vous-même, ou bien télécharger un binaire pré-compilé, cette dernière démarche étant plus aisée et donc recommandée pour les débutants.

  • Option 1 - Télécharger TerraGear pré-compilé (recommandé aux débutants) sur Windows
    1. Téléchargez la dernière version de TerraGear sur le Serveur de compilation de FlightGear.
    2. Créez ou choisissez un répertoire pour contenir les outils TerraGear.
    3. Dé-zippez le paquetage et déplacez les fichiers de archive/install/msvc100/TerraGear/bin dans un sous-répertoire nommé Terragear/ dans le répertoire de base.
  • Option 1b - Télécharger les paquetages ppa pour Ubuntu Linux

https://launchpad.net/~saiarcot895/+archive/ubuntu/flightgear-edge/+index?batch=75&memo=75&start=75

  • Option 2 - Compiler TerraGear à partir du code source, comme expliqué dans cet article.
Note  Vous pourriez avoir besoin du fichier default_priorities.txt qui peut être obtenu à partir du dépôt Git ou à partir de l'archive téléchargée à partir du serveur de compilation (dans le sous-répertoire archive/install/msvc100/TerraGear/share). Voir ce lien du forum pour les détails.

Interface graphique

L'interface graphique TerraGear GUI est disponible pour ceux voudraient utiliser TerraGear sans avoir à connaître/utiliser les options de ligne de commande.

Utilisation de TerraGear

Tout d'abord, choisissez les limites de la zone de scène que vous voulez construire, en termes de latitude et de longitude. Plus la zone à générer sera restreinte, plus la quantité de données et le temps CPU nécessaire seront limités. Par exemple, si vous voulez juste générer une nouvelle disposition d'aéroport à la position 12°3 Ouest et 34°4 Nord, la génération des scènes entre 34°N 12°O et 35°N 13°O sera suffisante.

Notez la boîte de délimitation (longitudes et latitudes minimum et maximum) pour la scène que vous voulez générer. Rappelez-vous que Ouest et Sud sont négatifs - c'est-à-dire que 4° Ouest 10° Sud doit être -4, -10. Essayez de ne pas vous mélanger les pinceaux, sinon la scène ou l'aéroport que vous créez se retrouvera de l'autre côté de la planète !

Vous aurez affaire avec différents types de données utilisant des formats variés. Créez un nouveau répertoire pour votre travail de scène. A l'intérieur de ce répertoire, créez les sous-répertoires suivants:

data/
Pour les données brutes et pré-calculées (par exemple, les fichiers d'élévation)
output/
Pour les fichiers de scènes que vous créerez
work/
Pour les données qui ont été calculez (par exemple par shape-decode) et qui sont prêtes à être intégrées dans la scène

Obtenir et traiter les données

Terragear utilise trois sortes d'informations différentes pour générer une scène :

  1. L'élévation du terrain (fournie par SRTM)
  2. L'emplacement et la disposition des aéroports (fournis par apt.dat ou un fichier .dat personnalisé)
  3. Si une lat/lon donnée correspond à la mer, la terre, une ville, une forêt, un village, une route, un chemin de fer (fourni par VMAP0, CORINE, etc. ou par des fichiers personnalisés de formes)

Cet article décrit comment obtenir et traiter chacun de ces types de données dans l'ordre, et les fournir ensemble, pour que FlightGear les utilise. L'ordre de ces étapes est important. Par exemple, l'étape des données d'un aéroport a besoin des données d'élévation pour déterminer l'élévation des aéroports. Ainsi, vous commencerez par préparer les données d'élévation.

Attention  Pour l'inclusion dans les scènes officielles de FlightGear, toutes les données doivent provenir de sources compatibles avec la licence GNU GPL!

Données d'élévation

Les meilleures données d'élévation actuellement disponibles proviennent du projet Shuttle Radar Topography Mission (SRTM). Il y a deux types de données SRTM :

  • Données de haute précision (résolution 1-arc seconde), ou SRTM-1, pour les USA
  • Données de précision moindre (résolution 3-arc second), ou SRTM-3, pour le reste du monde.

A partir de maintenant, nous supposerons que vous utilisez les données SRTM-3. Sauf mention contraire, le processus est identique pour SRTM-1.

Vous pouvez télécharger les données appropriées à partir du site http://dds.cr.usgs.gov/srtm/version2_1/. Vous devrez récupérer tous les fichiers .hgt.zip couvrant la région qui vous intéresse. Selon la taille de votre scène, cela peut représenter un grand nombre de fichiers. Téléchargez les vers l'emplacement data/SRTM-1/ (ou SRTM-3/SRTM-30 en fonction du type de données que vous téléchargez) dans votre répertoire de base. (Genapts recherche les données d'élévation parmi un ensemble de noms de répertoires prédéfinis dans son répertoire de travail. SRTM-30 est l'un d'eux, c'est le moins déroutant dans cette liste. Notez que, à compter du 31 juillet 2010, l'outil genapts prend également en compte l'existence de répertoires SRTM-1/SRTM-3. Si vous utilisez une version plus ancienne, pensez à fournir les répertoires en utilisant --dem-path).

Maintenant que nous avons les données, nous devons les convertir pour qu'elles puissent servir à TerraGear. Tout d'abord, dézippez chacun des fichiers .hgt. Ensuite, ouvrez la ligne de commande (Sous Windows: Démarrer > Exécuter > cmd.exe) et placez-vous dans le répertoire de base (cd .../.../TerraGear).

Note  Selon TerraGear_Documentation, hgtchop est remplacé par gdalchop.
Note  Pour les données SRTM-1, remplacez le 3 par un 1 dans le premier argument fourni à hgtchop
Conseil  Si vous voulez créer un fichier batch, remplacez %f avec %%f, voir à ce sujet : [1]

Pour Windows :

for %f in (.\data\SRTM-3\*.hgt) do .\Terragear\hgtchop.exe 3 %f .\work\SRTM-3

ou

for %f in (.\data\SRTM-3\*.hgt) do .\Terragear\hgtchop.exe 3 .\data\SRTM-3\%f .\work\SRTM-3

Pour Linux :

for f in ${PWD}/data/SRTM-3/*.hgt; do ./Terragear/hgtchop 3 "${f}" "${PWD}/work/SRTM-3"; done

Maintenant, vous allez obtenir une quantité importante de fichiers .arr.gz dans votre répertoire work/SRTM-3/. Il nous faut les convertir au format .fit.gz. Utilisez à nouveau la ligne de commande avec

Note  L'espace et le point à la fin sont importants!

Pour Windows :

.\Terragear\terrafit.exe work\SRTM-3

Pour Linux :

./Terragear/terrafit work/SRTM-3

Données d'aéroports

Maintenant que nous avons les données d'élévation, nous pouvons générer nos aéroports. Tout d'abord, créons un répertoire data/airports/ et copions-y votre fichier apt.dat. Celui-ci peut-être soit directement celui de votre paquetage de donnés FlightGear (bien que vous devrez le dé-zipper), soit un fichier que vous auriez modifié avec WorldEditor.

La commande pour créer les aéroports est "genapts850". Lancez-la sans aucun arguments afin de visualiser les différentes options de ligne de commande.

Si elle est simplement lancée avec un fichier apt.dat spécifié et le répertoire de travail, elle générera les agencements d'aéroports pour chaque aéroport contenu dans le fichier, ce qui peut être long. Vérifiez que l'entrée n'est pas le fichier apt.dat.gz, mais le fichier décompressé. Sinon genapts850 bloquera et ne produira aucune sortie.

Si vous créez juste un seul aéroport, et que vous connaissez son identifiant OACI (par exemple KSFO, EGPH, EG32), utilisez le comme suit à partir du répertoire racine des scènes (c'est à dire à partir du répertoire parent de vos répertoires data, work et output). Si vous utilisez un fichier apt.dat contenant un seul aéroport, vous pouvez omettre le paramètre --airport.

genapts850 --input=data/airports/apt.dat --work=./work --airport=<IDENTIFIANT_OACI_AEROPORT>

ou, si vous avez les données d'élévation disponible:

genapts850 --input=data/airports/apt.dat --work=./work --dem-path=SRTM-3

Si vous générez des scènes plus grandes, alors vous pouvez spécifier les longitudes et latitudes minimum et maximum.

Genapts va créer deux sous-répertoires dans votre répertoire work:

  • AirportArea/
  • AirportObj/

Ils contiennent les définitions des agencement de l'aéroport, et de tous les objets présents (par exemple les manches à air et balises).

Données d'utilisation du sol

Les dernières données que nous avons besoin de générer sont celles correspondant au type d'utilisation du sol. En général, elles proviennent du lot de données VMAP0 en tant que fichiers de formes en provenance du serveur de carte de la base de données des scènes, mais d'autres sources peuvent aussi être utilisées.

Les données d'utilisation du sol peuvent être séparées en différents types :

Landmass
Sépare la terre de la mer. Ces données peuvent être utilisées comme un masque pour toutes les autres données. Les plus couramment utilisées sont le Landmass VMAP0, mais GSHHS peut également être utilisé. Pendant l'exécution de tg-construct avec l'argument --ignore-landmass, toutes les entrées des fichiers de formes seront tenues en compte, ainsi le masque de Landmass n'est alors plus nécessaire.
Land use data
Définit si une portion de terrain correspond à une forêt, une zone urbaine, du sable, de la lave, des glaciers, etc. Ce sont généralement des données VMAP0, définies en tant que polygones.
Line data
Comprend les lignes de chemins de fer, les rivières, les routes. Typiquement VMAP0, mais aussi OpenStreetMap pour les routes.
Point data
Est actuellement uniquement utilisé pour définir les villes.

De loin, le moyen le plus facile pour obtenir ces données est de télécharger les fichiers de formes à partir du magnifique MapServer. Le MapServer vous permet de télécharger les fichiers de formes pour chaque région de scènes sélectionnée. Cliquez sur le lien "Download Shapefiles" (ou allez directement à : http://mapserver.flightgear.org/download.psp). Entrez dans la boîte de délimitation de la scène que vous désirez générer, sélectionnez le type de données de fichier de formes que vous voulez, et cliquez sur download.

Layers

v0
Couverture globale, faible niveau de détails. C'est "la dernière chance", mais malheureusement c'est la seul couche qui couvre le monde entier.
cs
C'est v0 avec la contribution d'un certain nombre de personnes dans le passé. Utilisez la au lieu de v0.
v1
Seulement des parties de certains pays sont disponibles, plus haut niveau de détails que v0.
clc06
Européen seulement. Très haut niveau de détails, c'est le choix préféré pour les pays européens.
osm
Couverture globale, haute résolution mais très bas niveau de détails.
Cela signifie: si vous êtes intéressés par une région en dehors de l'Europe et que les forêts sont définies dans OpenStreetMaps pour cette région, cela sera la meilleure source de données. Si les forêts ne sont pas définies, vous obtiendrez un terne, interminable DEFAULT landclass. OSM fournit le meilleur littoral et je vous encourage à utiliser ce littoral même en Europe. [2]

Téléchargez chaque fichier-forme dans un répertoire séparé (!) data/shapefiles/.... Ainsi, pour v0_landmass, vous obtiendriez data/shapefiles/v0_landmass/v0_landmass.shp, etc.

Vous pouvez charger ces fichiers-formes dans un éditeur SIG tel que QGIS ou GRASS pour les visualiser et les éditer. C'est une bonne idée pour vérifier que vous avez bien les bons fichiers ! Plus tard, vous pourrez expérimenter en remplaçant divers fichiers-formes avec d'autres versions (GSHHS pour la côte, OSM pour les routes, etc.).

L'étape suivante décode les fichiers-formes vers le format TerraGear en utilisant la commande ogr-decode (renommée poly-decode dans les versions récentes de TerraGear).

Il y a trois arguments de ligne de commande importants pour ogr-decode :

  • le répertoire de destination pour les données décodées,
  • la localisation du répertoire de fichiers-formes,
  • le type de matériau.

Chaque fichier-forme correspond avec un des types de matériau défini dans les fichiers materials.xml. La correspondance est assez évidente. Par exemple, v0_mixedcroppasturecover correspond à MixedCropPastureCover. Notez que les types de matériau sont sensibles à la casse, donc il est bon de se référer au fichier $FG ROOT/materials.xml pour vérifier. L'exception est v0_landmass, qui DOIT correspondre au type Default.

En complément, il existe de nombreux arguments optionnels pour indiquer la largeur des données linéaires (pour les routes, les rivières, les voies de chemin de fer), quelle largeur utiliser pour les données de type point (pour les villes) et quelle est la plus grande longueur acceptable pour une ligne droite.

Par exemple, pour décoder le fichier-forme v0_landmass, vous entrez la commande suivante :

ogr-decode --max-segment 500 --area-type Default work/Landmass data/shapefiles/v0_landmass

Pour créer des rivières de 10 mètres de large :

ogr-decode --max-segment 500 --line-width 10 --area-type Stream work/Stream data/shapefiles/v0_stream

Pour générer des villes d'environ 1 kilomètre de diagonale :

ogr-decode --point-width 500 --area-type Town work/Town data/shapefiles/v0_town

Lancez cette commande pour chaque fichier-forme du lot de données.

Générer les scènes

Vous avez maintenant un répertoire de travail, avec des sous-répertoires comme :

AirportArea
AirportObj
Bog
DryCropPastureCover
EvergreenBroadCover
GrassCover
IrrCropPastureCover
Lake
Landmass
Marsh
MixedCropPastureCover
MixedForestCover
Railroad
Road
Sand
ScrubCover
Shared
SRTM-3
Stream
Town
Urban

Nous pouvons maintenant générer les scènes en utilisant la commande fgfs-construct. Lancez la commande avec --help pour obtenir les informations d'utilisation.

Nous devons définir :

  • Les répertoires de travail (--work-dir) et de sortie (--output-dir) .
    • Notez, au sujet du répertoire de sortie : il doit pointer vers le répertoire Terrain/, sinon, les versions récentes FlightGear seront incapables de charger le terrain.
  • Le centre de la scène que nous voulons générer (--lat, --lon).
  • Le rayon (--xdist, --ydist) à partir duquel on génère.
  • Tous les répertoires de travail à inclure dans la scène.

Par exemple :

fgfs-construct --work-dir=./work --output-dir=./output/Terrain --lon=55 --lat=60 --xdist=3 --ydist=3 AirportArea SRTM-3 AirportObj Stream Bog IrrCropPastureCover Town Lake Urban Landmass Railroad DryCropPastureCover Road EvergreenBroadCover Marsh Sand MixedCropPastureCover ScrubCover GrassCover MixedForestCover

Lorsque cette commande se termine, le répertoire de sortie contiendra un sous-répertoire scenery. Pointez vers lui en paramétrant $FG_SCENERY ou en utilisant l'option de ligne de commande --fg-scenery à fgfs, et testez votre nouvelle scène !

Un soucis ?

Vous trouverez ci-dessous une liste de problèmes courants et leur solutions. Dans le doute, copiez/collez votre erreur dans Google. La plupart des problèmes (en particulier lors de la compilation de TerraGear) ont déjà été évoqués :

  • Crash de genapts. Quelquefois, genapts plante avec certains aéroports. Dans ce cas, essayez de le relancer avec l'argument --start-id pour démarrer à l'aéroport sur lequel il a planté, et l'argument --nudge pour essayer de remettre les calculs dans la bonne voie.
  • fgfs-construct tué. Le processus fgfs-construct peut se suicider s'il consomme trop de ressources système. L'augmentation des valeurs pour setrlimit dans src/BuildTiles/Main/main.cxx est la meilleure solution.
  • Les aéroports apparaissent au fond de trous, ou il y a des espaces entre les aéroports et la scène. Ceci arrive lorsque genapts est incapable de trouver la donnée d'élévation correcte, ou alors la donnée d'élévation a changé entre le lancement de genapts et celui de shape-decode. Essayez de générer un seul aéroport dans votre zone de scène en utilisant genapts, et visualisez la sortie. En particulier, soyez sûr que le répertoire work/SRTM-3 existe.
  • Seuls les aéroports apparaissent dans la scène. Il existe trois explications typiques :
    • vous n'avez pas téléchargé les fichiers-formes corrects de la zone;
    • vous n'avez pas lancé shape-decode sur le fichier-forme v0_landmass comme Default
    • vous n'avez pas inclus les répertoires corrects dans fgfs-construct.
  • La scène générée contient des données effacées des fichiers-formes. Si vous éditez des fichiers-formes, vous devez effacer le sous-répertoire work approprié avant de lancer shape-decode. Sinon, vos changements s'ajouteront à ceux qui existent déjà.
  • La scène entière est plate et au niveau de la mer. C'est généralement dû au fait que vous n'avez pas inclus les données d'élévation dans votre commande fgfs-construct. Assurez-vous qu'il existe un répertoire STRM-3 précisé dans la ligne de commande.
  • Tout terrain copie le matériel d'un fichier-forme. Vous avez probablement oublié de mettre chacun des fichiers-formes téléchargés dans un répertoire séparé à l'intérieur du répertoire Data/shapefiles.