Ajouter un Modèle Numérique de Terrain

Et oui, avec Therion, nous pouvons ajouter le relief (Modèle Numérique de Terrain ou de Surface – MNT/MNS) au dessus de notre cavité. Mais pour cela, il faut préparer un MNT au format Therion.

Ainsi, sur les exports 3D, nous aurons le relief au-dessus de notre cavité. L’ajout de ce MNT permet aussi de drapper une image  (aérienne, satellite, carte,…) sur le MNT, et ainsi, de visualiser le modèle en 3D avec une image sur le relief. Mais plus encore, avec cette image, nous allons pouvoir la mettre en arrière plan de la carte en plan, avec plus ou moins de transparence !

Une approche semi-automatique : TerrainTool

C’est la solution de facilité. TerrainTool est un petit utilitaire pour télécharger un MNT correspondant à la zone que nous voulons, et le formater pour Therion. Cet utilitaire se trouve ici : http://ubss.org.uk/terraintool/terraintool.php.

Il va générer un MNT à partir de données Aster ou SRTM (à choisir), qui toutes deux sont à 30 m de résolution.

Construire le MNT pour Therion à partir de sa propre base de données de relief

Générer soit-même un MNT pour Therion peut être difficile car cela demande quelques connaissances en SIG (Système d’Information Géographique). Un logiciel libre utile pour faire toutes ces étapes est QGIS.

Les topographies en Shapefiles

Pour nous repérer dans le logiciel SIG, nous allons avoir besoin de la position des cavités topographiées. Pour cela, il faut exporter les cavités au format shapefile, avec, dans le thconfig, cette commande export:

export map -fmt esri -layout monlayout -o MaGrotte

Cette commande va créer un dossier MaGrotte, avec plusieurs fichiers à l’intérieur. Les fichiers qui vont nous intéresser sont les fichiers avec l’extension .shp.

Idéalement, pour faire cet export, dans le layout monlayout, il faudrait avoir défini la projection de l’export avec la commande cs.

Où trouver des MNTs ?

Aujourd’hui, il n’est pas évident de trouver librement des MNTs de qualité, pour toutes les régions du monde, avec une très bonne résolution. Les MNT ASTER et SRTM sont corrects et ont une résolution globale de 30 m, c’est à dire qu’un pixel du MNT correspond en vrai à un carré de 30 m sur 30 m.

Obtenir des MNT de meilleure résolution est difficile. En France, à condition d’y mettre le prix, il est possible d’obtenir auprès de l’IGN un MNT de 1 à 5 m de résolution.

Il faut quand même être conscient que plus la résolution est bonne, pour une surface donnée, plus les fichiers sont gros et gourmands en mémoire, temps et énergie pour les travailler.

Pour le téléchargement, les fichiers geotiffs sont compressés et donc moins lourds à utiliser que les fichiers Esri ASCII.

Charger le MNT dans un logiciel SIG (ici, QGIS)

D’abord, ouvrir QGIS puis Créer un nouveau document. Ce sera notre projet de travail.

Il nous faut définir la projection dans laquelle nous souhaitons travailler. Pour cela, cliquer en bas à droite sur la case « EPSG:xxxxx » où xxxxx est une série de nombre correspondant au code EPSG de la projection actuelle. La liste des systèmes de projection s’affiche (liste des SCR), recherchez la projection que vous utilisez dans votre projet topographique [la commande cs du layout] (le plus souvent, WGS84/UTM zone 30/31/32N ou un des lambert), la sélectionner, cliquer sur Apply puis OK. En bas à droite, le numéro EPSG devrait avoir changer. Enregistrer le projet (Projet –> Enregistrer Sous).

Choix du SCR du projet sous QGIS.

Faire ensuite un glisser-déposer du MNT Téléchargé dans l’explorateur de couches, ça devrait le charger. Sinon faites Couche –> Ajouter une couche Raster. Vous devriez voir votre MNT en noir et blanc.

Normalement il devrait avoir été re-projeté à la volée, vérifier quand même que la projection du projet n’ait pas changée. Mais pour que le travail soit fait proprement et pour éviter les erreurs de projection, il faut reprojeter le MNT dans le système de projection du projet. Cela se fait avec Raster –> Projection –> Projection (warp). Remplissez les champs non optionnels.

Une fois le MNT chargé, vous pouvez importer le fichier vectoriel shapefile MaGrotte/outlines2D.shp (vous pouvez aussi essayer les autres, mais celui-ci, c’est le contour des galeries). Si vous ne le voyez pas apparaître ou si le logiciel QGIS se plaint, c’est que la projection du shapefile n’est pas définie. En ce cas, double-cliquer sur la couche vecteur dans le panneau de Couches. Les propriétés de la couche s’affichent, aller dans l’onglet « Source », et ici, vous pouvez configurer le système de coordonnées (il faut mettre le même que celui utilisé pour l’export, celui imposé par la commande cs du layout).

Choix du système de projection du MNT. Si le système de projection du MNT n’est pas dans le menu déroulant, alors, cliquer sur le petit bouton à gauche (cercle rouge) pour afficher toute la base de données des systèmes de projection.

Si la couche vecteur est en dessous du MNT, elle ne va pas se voir non plus. Il faut donc la remonter au dessus du MNT ( la souris, dans le panneau Couches). Pour zoomer dessus, sélectionner dans le panneau Couches le shapefile, puis faire un clic-droit –> zoomer sur la couche.

Extraire la partie du MNT qui nous intéresse

Une fois que le MNT et les trous sont visibles sur notre plan de travail, nous allons découper le MNT.

Pour cela :

  • aller dans Raster –> Extraction –> Découper un raster selon une emprise.
  • Sélectionner la bonne couche source
  • cliquer sur le petit bouton à droite de la case « Etendue de découpage »
  • Choisissez « Selectionner l’emprise du canevas »
  • sur la carte, cliquer sur un des coins de la zone que nous voulons, puis glisser la souris en maintenant appuyé, vers le coin opposé, la fenêtre de découpe s’affiche de nouveau avec les coordonnées de l’emprise à découper,
  • A droite de la case « Découpé », cliquer sur le bouton avec les petits points –> enregistrer sous et choisisser le dossier et le nom du nouveau raster
  • Cliquer sur « Exécuter »

Outil de découpe d’un raster sous QGIS, avec choix de la zone de découpe.

Et voila, c’est fait ! Le nouveau raster se rajoute au projet dans les Couches. Vous pouvez enregistrer !

Exporter le MNT

L’étape précédente a enregistré un Raster au format .tif (géotiff). C’est très bien, sauf que ce format n’est pas transformable en tant que tel pour Therion. Il faut donc exporter ce MNT dans le format ESRI ASCII non compressé :

  • Aller dans Raster –> Conversion –> Convertir
  • La fenêtre de conversion d’ouvre
  • Choisir la bonne couche d’entrée (le MNT découpé)
  • Cliquer à droite de Converti sur le petit bouton –> Enregistrer dans un fichier
  • Un fenêtre s’affiche avec un explorateur de fichier
  • En bas, choisir le type de fichier « ASC files (*.asc)
  • Donner un nom a votre fichier (et choisir le dossier d’exportation)
  • Cliquer sur Enregistrer pour revenir à la fenêtre précédente
  • Cliquer sur « Paramètres avancés »
  • Dans « Profil », choisir « No Compression » (= pas de compression, option fondamental pour notre utilisation)
  • Exécuter

Conversion d’un Raster dans un autre format. Dans notre cas, bien penser à ne pas utiliser de compression (grand ovale rouge).

Normalement, cela va produire un fichier .asc. Si vous l’ouvrez avec un éditeur de texte, vous devriez le lire sans problèmes. Les premières lignes donnent :

  • le nombre de colonnes (ncols) =  nombre de pixels dans la direction x
  • le nombre de lignes (nrows) = nombre de pixel dans la direction y
  • la coordonnée x du coin inférieur gauche (ll = lower-left) dans la projection utilisée pour ce MNT ; Attention, cette projection n’est pas indiquée…
  • la coordonnée y du coin inférieur gauche
  • la taille du pixel dans l’unité de projection (si la projection est géographique, l’unité est le degré, si c’est un UTM ou un Lambert, l’unité devrait être du mètre)
  • La valeur utilisée pour dire que ce pixel n’a pas de données (NODATA_value)

Par exemple, en en-tête, nous obtiendrons :

ncols 302
nrows 189
xllcorner 324833.651685020013
yllcorner 5105639.090404500253
cellsize 26.514313645002
NODATA_value -9999

Si en l’éditant vous avez des signes bizarres, si c’est illisible, c’est que vous n’avez pas mis dans le « Profil » le « No compression »

Modifier le MNT pour l’adapter à Therion

Nous avons notre MNT dans un format texte, formaté de façon à ce que Therion le comprenne. Il nous reste à le modifier légèrement pour que Therion puisse le comprendre.

Il faut donc éditer le fichier .asc dans un éditeur de texte. Avant de le modifier, nous pouvons modifier son extension en .th à la place de .asc. Sinon, une fois ouvert dans un éditeur de texte, nous pouvons l’enregistrer sous mnt.th, par exemple.

Pour therion la définition de la surface (MNT) est inclue dans un bloc

surface
endsurface

Nous devons donc rajouter une première ligne

surface

puis naviguer à la fin du fichier et rajouter en dernière ligne du fichier

endsurface

Ensuite, nous l’avons vu, le fichier original est constitué d’un préambule donnant les caractéristiques de la grille MNT, et du tableau de la grille MNT. Therion ne le comprend pas, mais nous avons besoin des valeurs pour calibrer la surface. Il nous faut donc commenter (rajouter le # en début de ligne) toutes les lignes du préambule.

Ensuite, nous allons passer à la calibration de la surface, en rajoutant quelques lignes entre le préambule que nous avons commenté et le tableau de données :

  • D’abord, nous devons indiquer la projection du MNT (généralement un UTM ou un Lambert pour la France) avec la commande cs, par exemple ici avec l’UTM32N :
    • cs UTM32N
  • Ensuite, il nous faut indiquer l’unité de la grille. Pour l’UTM ou le Lambert, elle devrait être en mètres, et c’est la valeur par défaut. Nous l’indiquons avec la commande
    • grid-units m
  • Il nous faut ensuite calibrer la grille, avec la commande
    • grid <origine x> <origine y> <espacement x> <espacement y> <nombre colonne> <nombre ligne>
      • <origine x> et <origine y> sont les coordonnées (x, y) du coin inférieur gauche,
      • <espacement x> et <espacement y> sont la taille du pixel en x et en y (le pixel peut ne pas être carré),
      • <nombre colonne> et <nombre ligne> est le nombre de colonne et le nombre de ligne de la grille, c’est à dire du tableau de données qui suit
    • vous l’avez compris, toutes ces données se trouvent dans le préambule que nous avons commenté, il suffit de faire un copier-coller des bons nombres !
    • Il se peut que la grille ne soit pas au format classique (ça dépend des logiciels utilisés pour produire le MNT), et qu’elle soit en miroir, soit par rapport à la verticale, soit par raport à l’horizontale. Vous le verrez vite à l’export du 3D ! Pour corriger, il suffit d’utiliser la commande
      • flip horizontal/vertical

Nous rajouterons ensuite la commande de drappage de l’image, voir ci-dessous.

Par exemple, notre fichier MNT mnt.th ressemblera ainsi à :

surface

# Début du préambule original commenté
#NCOLS         44
#NROWS         31
#XLLCORNER     233915.20256810292
#YLLCORNER     9346251.195786513
#CELLSIZE      30.760091552522432
#NODATA_VALUE  -9999
# fin du préambule original commenté

   cs UTM18S  # Utilisation de la projection WGS84 - UTM 18 Sud
   bitmap Sat_Bellavista.jpg [0 0 233883 9346185 3508 2479 235299 9347167] # Insertion de l'image Sat_Bellavista (voir plus loin)
   grid-units meter  # Définition de l'unité de la grille
   grid 233915.20256810292 9346251.195786513 30.760091552522432 30.760091552522432 44 31 # Définition de la grille pour Therion

[Notre tableau de données]

endsurface
Et voila, le MNT est prêt pour être compris et utilisé dans Therion.
Pour l’utiliser, il suffit de rajouter, dans le fichier de compilation .thconfig, son importation :
import mnt.th   # Import du MNT pour le 3D

Drapper une image sur le MNT

Pour drapper une image sur un MNT pour Therion, nous devons utiliser un format d’image compris par Therion, par exemple le format .jpg. Malheureusement, le format geotiff ne convient pas. Il faut donc exporter notre image de drappage en .jpg.

Effectuer ses opérations tiennent plus de la bidouille qu’autre chose. En gros, ce qu’il nous faut, c’est :

  • produire une image, d’emprise égale ou plus grande à celle du MNT
  • projeter l’image dans la même projection que le MNT
  • connaître la dimension en pixel de l’image,
  • Connaître les coordonnées des coins inférieur-gauche et supérieur-droit de l’image dans le système de projection du MNT

Ce que nous proposons ici fonctionne bien, mais il y a peut-être des manières de faire plus robuste.

Charger une image géoréférencée dans le projet QGIS

Dans QGIS, charger le projet correspondant à la zone étudiée (le projet construit pour produire le MNT).

Vérifier que la projection du projet corresponde bien à la la projection du MNT utilisée.

Pour charger une image, il va falloir utiliser une image géoréférencée. Si vous en avez une sous la main (par exemple, des photos aériennes de l’IGN pour la France, où une photo aérienne que vous avez ortho-rectifiée puis projetée), alors, c’est le moment de la charger dans le projet.

Sinon, avec QGIS, avec un accès à internet, nous pouvons charger des images de fond, qui peuvent être (liste non exhaustive) :

  • les cartes Open Street Maps (libre)
  • Les cartes et images satellites de Bing
  • Les cartes et images satellites de Google
  • Et beaucoup d’autres…

Pour pouvoir les charger, dans QGIS, il faut installer le plugin QuickMapService (Pour installer un plugin, aller dans Extension –> Installer/Gerer les extensions et chercher l’extension QuickMapService). Une fois l’extension installée, aller dans Internet –> QuickMapService –>Settings. Aller dans l’onglet « More Services » et cliquer sur « Get Contributed Pack ».

Voila, maintenant, une fois le projet chargé, vous pouvez choisir un fond dans Internet –> QuickMapService

Insertion d’une image Google hybride comme image de fond, avec l’outil QuickMapService.

Extraire l’image

Dans les couches de votre projet, vous devriez avoir le MNT exporté pour Therion. Faire un clic-droit –> zoomer sur la couche. Ainsi, tout l’écran est occupé par ce MNT.

Ensuite, faites remonter l’image de fond que vous voulez utiliser en drappage en premier plan (la faire remonter à la souris dans le panneau des couches).

Passer en mode de mise en page : Projet –> Nouvelle Mise en page. Lui donner un nom.

Par défaut, la souris est dans le mode de sélection. La page blanche, c’est la page qui sera imprimée.

Il nous faut passer dans définition du cadre à mettre en page, pour dire où nous voulons notre image sur la page. Pour cela, dans les onglets à gauche, cliquer sur le bouton représentant une page blanche, avec une petite croix rouge dans le coin inférieur droit. C’est le bouton « Ajouter une nouvelle carte à la mise en page« .

Mode Mise en Page de QGIS avec une carte en cours de travail.

Pour faire un cadre dans lequel sera notre image, il suffit de cliquer où nous voulons un premier coin, de laisser appuyé, puis de déplacer le pointeur vers le coin opposé. Vous pouvez faire ceci n’importe où dans la page, mais moins il y aura de blanc autour de l’image, meilleure sera la résolution finale, et plus facile sera le travail de traitement. Faisons donc ce cadre, en essayant d’être le plus au bord possible de la page blanche.

Une fois fait, nous voyons dans ce cadre ce que nous avions dans notre plan de travail, avec tous les objets. Si besoin, vous pouvez jouer sur beaucoup d’option avec le panneau de droite.

Si l’image vous convient, aller dans Mise en page –> Exporter au format pdf

Voila, nous avons une belle image au format pdf, mais le problème, c’est que cette image est bordée par un cadre blanc, qu’il nous faut supprimer.

Ouvrir le pdf avec une application de gestion d’image, comme Gimp ou Adobe Photoshop. Si vous n’y arrivez pas, avant, exporter votre pdf dans un format image non destructif (.tif par exemple, ou alors, un jpg de grande qualité). Ouvrir cette image là.

Avec le cadre de sélection, sélectionner juste l’image, sans les bords blancs, mais en essayant de ne pas perdre de parties de l’image.

Faites un copier-coller dans une nouvelle image de cette sélection, normalement, vous ne devriez pas perdre en qualité d’image, et vous ne devriez plus avoir de bords blancs.

Enregistrer au format jpg d’excellente qualité. Nous allons utiliser cette image là.

Trouver les données locales et géographiques de l’image

Nous trouvons les données locales de l’image dans ses propriétés : il faut récupérer le nombre de pixels en x, et de nombre de pixels en y. Les propriétés de l’image peuvent être visualisée soit avec un clic droit sur l’image, ou mieux, avec un éditeur d’image type Gimp (Libre) ou Adobe Photoshop par exemple.

Il nous faut aussi les coordonnées géographiques de l’image, dans sa projection. C’est plus difficile à obtenir.

Un manière de faire, approximative, est de retourner sur notre projet QGIS, au zoom exact auquel nous avons extrait l’image. En déplaçant le pointeur de la souris sur l’image, nous pouvons lire dans le bandeau inférieur les coordonnées de la localisation du pointeur sur l’image, dans la projection du projet (qui devrait être la même que celle de l’image extraite). Il suffit donc de repérer les pixels de l’image correspondant au coin inférieur gauche et au coin supérieur droit, et de noter leur coordonnées sur une feuille. C’est approximatif, mais si vous êtes consciencieux, l’erreur de localisation devrait être inférieure aux autres erreurs (GPS, de topographie,…).

Insérer le tout dans le MNT therion

Cela ce fait avec la commande

bitmap <nom_de_image> <calibration>

où :

  • <nom_de_image> est le nom de l’image que nous voulons drapper ; Si l’image est dans un autre dossier, alors, rajouter le chemin devant
  • <calibration> permet d’ortho-rectifier l’image, et de la localiser pour pouvoir la coller sur le MNT. Cette calibration peut avoir deux formes :
    • [X1 Y1 x1 y1 X2 Y2 x2 y2 [units]] où :
      • X1 et Y1 sont les coordonnées en pixel de l’image du coin inférieur gauche (0, 0)
      • x1 et y1 sont les coordonnées géographiques réelles du coin inférieur gauche
      • X2 et Y2 sont les coordonnées en pixel de l’image du coin supérieur droit, soit X2 = nombre de pixels dans la direction x et Y2 = nombre de pixels dans la direction y
      • x2 et y2 sont les coordonnées géographiques réelles du coin supérieur droit
      • [units] est l’unité des coordonnées vraies, c’est optionnel, si ce n’est pas indiqué, c’est pas défaut en mètres, ce qui est valable pour les projections UTM et Lambert.
      • En fait, nous pourrions utiliser n’importe quel couple de points sur l’image, mais il est plus facile de connaître les coordonnées de l’image en pixel pour les coins
    • [X1 Y1 station1 X2 Y2 station2] où
      • station 1 correspond à une station topographique de référence (par exemple une entrée bien visible sur l’image), que nous pouvons retrouver aux coordonnées X1 et Y1 e(n pixel) sur l’image
      • station 2 correspond à une station topographique de référence (par exemple une autre entrée bien visible sur l’image), que nous pouvons retrouver aux coordonnées X2 et Y2 e(n pixel) sur l’image

Cette commande bitmap doit être insérée dans un bloc « surface – endsurface » (voir plus haut).

L’utiliser dans un layout pour un plan

Plusieurs commandes, dans un layout dédié à la mise en page d’un plan, permettent de gérer l’image de fond, dans le cas où le fichier de surface est importé.

Pour afficher ou non l’image de fond, il faut utiliser l’option

surface <top/bottom/off>

avec :

  • top signifiant que nous voulons l’image au dessus de tout le reste
  • bottom signifiant que nous voulons l’image au dessous de tout le reste
  • off signifiant que nous ne voulons pas d’image

Et nous pouvons choisir de rendre la surface plus ou moins transparente avec l’option

surface-opacity 70

70 est la valeur par défaut, nous pouvons jouer avec cette valeur, sachant que 100, correspond à l’image originale sans transparence, et que 0 correspond à une image entièrement transparente et donc non visible.