Fr/TerraGear CORINE

From FlightGear wiki
Revision as of 19:46, 9 July 2012 by F-EFEL (talk | contribs) (Created page with "{{Main article|CORINE}} = '''Constructions de scènes européennes avec les données SRTM v4, Corine landclass et OpenStreetMap''' = Ceci a pour but de compléter ou d'ajout...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

1rightarrow.png Consultez la page CORINE à ce sujet.

Constructions de scènes européennes avec les données SRTM v4, Corine landclass et OpenStreetMap

Ceci a pour but de compléter ou d'ajouter des informations de mise à jour sur le tutorial Using TerraGear.

Note importante: Au cas ou vous voudriez contribuer au "FlightGear Scenery" officiel: Certaines data sources mentionnées dans ce tutorial sont non compatibles avec FlightGear GPL licence. Les scènes créées avec les données d'élévation SRTM 4 de CGIAR (pas d'usage commercial) et les données de carte OSM (CC-BY-SA licence) ne peuvent être faites sous les termes GPL, donc, malheureusement ne peuvent apparaître dans les versions officielles de "scenery".

Supposons que vous ayez la version Linux de TerraGear. Pour les instructions de compilation et d'installation voir Building terragear-cs in Ubuntu 64 Remplacez tous les chemins le cas échéant.

Première chose après avoir fini de compiler terragear: aller dans le fichier BuildTiles/Main/main.cxx et assurez-vous que CPU rlimit est un nombre élévé. Je propose 600000, celà donnera un délai de construction de presqu'une semaine. Si vous ne précisez pas, fgfs-construct vous virera avec message d'erreur en peu de temps. Soyez sûr que vous éditez les bonnes valeurs, il y a deux l'une sous l'autre, les premières sont inutiles.

Acquisition des données

I. Elevation

Note: SRTM version 4 est un ensemble de données à jour et gratuit, par CGIAR. Malheureusement, incompatible avec FlightGear GPL licence, donc, impossible à ajouter aux versions "scenery" officielles. Lorsque vous souhaitez utiliser des données compatibles GPL, téléchargez les données d'élévation de USGS (SRTM 3, version 2_1).

Téléchargement de SRTM 4 : ce fichier à ouvrir dans Google Earth. Dans Lieux Temporaires, sélectionnez l'élévation, et choisissez les tuiles 5x5 degrés ou les subtuiles 1x1 degré. Soyez sûr que vous téléchargez les fichiers GEOTIFF. Je suggère de faire des zones de 10x10 degrés, soit 4 fichiers. C'est plus long que de compiler les scènes, mais c'est plus efficace. Vous comprendrez pourquoi plus loin.

II. Landmass

VMAP0 landmass avec ici (v0_landmass) pour les zones de terrain 10x10 degrés que vous selectionnez. Sinon, utilisez d'autres sources pour les zones de landmass (lesquelles?).

III. Corine landclass

Installez le Corine complet ici

IV. Données pour Routes, Chemins de fer, et rivages

Note: Malheureusement, encore incompatible avec FlightGear GPL licence, donc, impossible à ajouter aux versions "scenery" officielles.. Mais, cette année, OSM va changer sa licence et la nouvelle sera compatible avec notre licence GPL.

Téléchargez les fichiers de formes seulement pour les pays à l'intérieur de tuile 10x10 ici Vous aurez routes et chemins de fer. Pour le rivage, allez à ce site téléchargez les mêmes fichiers pour votre pays, mais utilisez le rivage seulement pour les ajustements de landmass.

Autres sources de données ici:

Préparation des données

I. Elévation

En supposant que vous suivez la structure du répertoire de Using TerraGear, lancez srtmchop sur chaque fichier TIF depuis data/srtm.

Il y a un piège ici: work/SRTM-3 doit être nommé exactement comme ça. Sinon,genapts ne trouvera pas l'élévation requise pour les surfaces d'aéroports. Ce nom est gravé dans le programme.

Je propose de démarrer srtmchop manuellement pour chaque fichier, pour vérifier les erreurs. Ne pas tenir compte des avertissements peut faire que certains "en-tête" ne soient pas décodés correctement, mais cela ne change rien au résultat.

Sur certains fichiers TIF, srtmchop terminera avec un message d'erreur (manque de mémoire). Nous ignorons encore la cause de ce message seulement pour certains fichiers. Jusqu'à ce que GIT ait permis un correctif, vous pouvez démarrer srtmchop dans valgrind:
valgrind --leak-check=yes ./srtmchop <file> <output dir> 

Le programme ne quittera pas, le travail sera fait, mais dix fois plus lentement.

La genèse des fichiers arr étant terminée, vous pouvez démarrer terrafit.py:
./terrafit.py -m 50 -x 4000 -e 2 work/SRTM-3

II. Aéroports

Voici une étape fastidieuse. genapts doit être lancé poour chaque aéroport dans votre zone 10x10 degrés. Copiez apt.dat.gz dans fgdata/Airports sur data/airports. Sortez le. Pour savoir rapidement quels aéroports sont dans votre zone, ouvrez ce fichier dans Google Earth et retirez tous les autres marqueurs, vérifiez aussi view -> grid dans le menu.

kmz with ICAO Il est préférable de faire une liste et de parcourir chacun des éléments. Assurez-vous que vous avez tous les fichiers .arr et .fit dans work/SRTM-3.

#!/bin/sh
for i in LROP LRBS LRSB
do
   ./genapts --input=./data/airports/apt.dat --work=./work --airport=$i
done


III. Couverture végétale

Ouvrir d'abord les fichiers SRTM comme couche raster dans QGis. Editez les propriétés du projet, à mettre sur la transformation fly CRS.

SRTM servira d'aide au découpage, et vous pourrez découper les autres couches à la taille voulue.

Éditez les propriétés pour chaque couche SRTM et réglez la transparence bien au dessus de 50% de façon à voir les autres couches. Ensuite, ouvrez chaque fichier de forme Corine et assurez vous que la couche a réellement des éléments dans votre zone. Toutes les couches n'en ont pas. Utilisez l'outil select pour sélectionner un rectangle autour des limites SRTM. Click droit sur layer et choisir Save Selection As.

Après découpage des zones désirées, ouvrez les de nouveau, et re-projetez dans WGS84. Faites cette opération depuis le menu Vector -> Data management tools-> Export to new projection. Cette étape peut ne pas être nécessaire, comme j'ai pu en déduire du code source, mais il est plus facile de travailler avec toutes les données sur la même projection.


Ensuite, il faudra placer tous les fichiers d'une couche dans son propre répertoire à l'intérieur de data/shapefiles. Vous pouvez faire correspondre les classes Corine de cette façon également. Par exemple, j'ai mis tous les fichiers de forme pour "green urban area" dans "DeciduousBroadCover" et ainsi, les zones urbaines sont pleines d'arbres. Vous pouvez mettre plusieurs fichiers de formes à l'intérieur d'un répertoire data/shapefile/*** et ils seront traités de la même façon. Vous pouvez aussi être créatif avec les routes, mettre des polygones Corine pour routes, chemins de fer etc.. dans GrassCover ou DeciduousForest, ainsi les routes OSM auront une mémoire tampon autour, qui génerera arbres ou prairies.


Un problème avec Corine: "Continuous urban fabric" qui est lié à Urban n'est pas présent dans ma zone. Pour éviter d'avoir seulement Towns, vous pouvez créér une nouvelle couche dans QGis et ouvrir la couche (112) "Discontinuous urban fabric" en même temps. Selectionnez edit mode pour les deux couches, allez dans options et installez le programme pour montrer seulement les vecteurs de la zone choisie. Ensuite, sélectionnez les villes que vous aimeriez voir plaquées à Urban en tenant CTRL appuyé. Ceci fait, coupez les polys sélectionnés, et collez les dans la nouvelle couche. Vous avez maintenant Town et Urban en même temps.


Vous pouvez maintenant ouvrir routes et chemins de fer à partir de OSM, assurez vous que tout va bien et qu'il y a WSG84 comme CRS.

Un gros point à débattre: fgfs-construct ne peut gérer les grands réseaux de rues. Pour les éliminer et simplifier les scènes, il faut ouvrir la table attribuée au fichier de forme. Chercher les particularités de type "residential", "track", "path", "pedestrian", "footway", "service", "steps" et autres accessoires. Une fois sélectionnées, effacez ces lignes pour simplifier le fichier de forme. L'action d'effacer ces éléments peut durer très longtemps si leur nombre est élevé. Pendant ce temps, QGis peut apparaître gelé. Si vous voulez aller plus vite,(en particulier dans le cas de gros fichiers de forme) vous pouvez vous servir de l'utilitaire ogr2ogr pour sélectionner la forme que vous voulez garder:

./ogr2ogr -where "type in ('motorway','motorway_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','trunk','trunk_link','road','rest_area')" roads_new.shp roads.shp

Essayez de simplifier le fichier de forme Road autant que vous pouvez, en éliminant les zones à grande densité de rues. Vous diminuerez ainsi votre temps de construction. Les routes seront tout de même simulées par le shader urbain. Si vous devez corriger le rivage, ouvrez v0_landmass dans QGis et le shapefile de la côte à partir d'OSM. En mode édition, vous pouvez modifier la forme de landmass pour la conformer aux données OSM.

Lorsque tous les fichiers forme sont rangés dans le répertoire, vous pouvez lancer ogr-decode et mettre les matériels. Mais d'abord, vous pouvez avoir à éditer default_priorities.txt et usgsmap.txt dans share/TerraGear pour ajouter les landclasses manquantes. Vérifiez avec materials.xml et CORINE to materials mapping


Sur un polygone normal de fichiers forme, ogr-decode prend les paramètres habituels:

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

Pour routes et chemins de fer, ajoutez une troisième option: --line-width 10 Les fichiers seront couverts par Corine polys, donc, ne vous en faites pas.


Pour éviter un bug de donnée arrêtant ogr-decode, vous pouvez patcher le fichier suivant en deux endroits: terragear-cs/src/Lib/Polygon/chop-bin.cxx

Lignes 222 et 375 remplacées par:
if ( (dx > 2880) || (dy > 1440) )
        //throw sg_exception("something is really wrong in split_polygon()!!!!");
	return;

Les données de bug seront ignorées, ogr-decode continuera. Afin d'utiliser au maximum les données de OSM road, vous pouvez aussi utiliser SQL-comme requêtes sur les données, en utilisant l'option --where. Ex:

 ./ogr-decode --max-segment 500 --line-width 12 --area-type Freeway --where "TYPE=trunk" work/Freeway data/shapefiles/road
./ogr-decode --max-segment 500 --line-width 14 --area-type Freeway --where "TYPE=motorway" work/Freeway data/shapefiles/road
./ogr-decode --max-segment 500 --line-width 10 --area-type Road --where "TYPE=primary" work/Road data/shapefiles/road
./ogr-decode --max-segment 500 --line-width 7 --area-type Road --where "TYPE!=primary AND TYPE!=motorway AND TYPE!=trunk" work/Road data/shapefiles/road

Ce sont les routes et autoroutes proposées pour l'Europe du SE. Votre kilométrage local peut varier. Actuellement, Road et Freeway sont rassemblées dans le même materials.xml mais cela peut changer, et construisez votre scène en gardant cette idée.


Selon les lignes écrites dans OSM data, vous pourriez même extraire des segments de pont et leur assigner une landclass spécifique, pouvant avoir ensuite le modèle physique d'un pont (ceci peut demander un codage en dur pour assurer une orientation convenable).

Afin de procéder au mappage de votre landclass, vous aurez aussi à éditer les fichiers suivants: install/terragear-cs/share/TerraGear/default_priorities.txt and install/terragear-cs/share/TerraGear/usgsmap.txt

(les chemins locaux peuvent varier selon votre installation personnelle)

Processus de construction

Si toutes les données ont été préparées sans erreur, vérifiez chaque répertoire en fonction, et effacez les dossiers qui ne conviennent pas à vos tuiles 10x10 degrés. C'est le moment de lancer fgfs-construct et de génerer la scène. Cela peut être très long, cela dépend de votre machine; donc, lancez ça la nuit.

./fgfs-construct --work-dir=./../work --output-dir=./../output --lon=XX --lat=XX --xdist=5 --ydist=5 \
AirportArea AirportObj BarrenCover BuiltUpCover CropGrassCover \
CropWoodCover DeciduousBroadCover DryCropPastureCover EvergreenBroadCover \
GolfCourse GrassCover HerbTundraCover IrrCropPastureCover Lake Landmass Marsh MixedCropPastureCover\
MixedForestCover OpenMining  \
Road Railroad Rock Sand ShrubCover SRTM-3 Stream Town Urban Freeway

Le processus complet peut prendre 2-3 jours. L'Europe entière peut s'obtenir en 2 ou 3 mois.