Skip to Content

GRASS GIS pas à pas pour les débutants: 5 - le module nviz et la création de modèles 3D multicouches

Niveau Débutant
Logiciels utilisés GRASS GIS
Plateforme Windows | Mac | Linux | FreeBSD

Un des éléments les plus attirants lorsqu'on débute avec GRASS GIS, est la possibilité de visualiser des objets 3D (couches de GRASS GIS) avec le module nviz (ou NVIZ). Malheureusement, c'est dans ce cas que le manque de documentation pour les débutants (que j'étais il y a quelques années) est le plus criant, surtout en langue française. Il y a quelques tutoriels disponibles en anglais et en italien, mais ils l'abordent par des cas pratiques, sans expliquer les fondements, ceux qui permettent de se lancer seul, en dehors de l'exemple fourni.

En pratique, il est nécessaire d'avoir une connaissance des principes de GRASS GIS avant de se lancer, surtout la notion de région qui est fondamentale (elle a été expliquée dans GRASS GIS pas à pas pour les débutants: 3 - importer des couches matricielles (raster) et importance de la région et Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...).

Je vais donc essayer de le faire en vous expliquant les principes qui permettent d'arriver aux exemples suivants (géologiques, puisque c'est mon métier):

 

Dans cette modélisation géologique dont la plus grande longueur fait environ 40 km et la ligne rouge la plus au sud (sondages géologiques), 2400 m,  il y a plusieurs objets représentés:

  • 8 surfaces (rasters 3D = MNT  et surfaces de failles, coloriées suivant la profondeur);
  • 1 couche de « drapage » (raster 2D = couleur du MNT + transparence);
  • 1 couche vectorielle  point (point 3D = localisation absolue,x,y, z de la tête d'un sondage);
  • 8 couches vectorielles lignes (2D = en bleu, traces des failles sur le MNT, en orange, isohypses de la faille qui ont permis de construire la surface, en rouge et verticales, les sondages qui ont recoupé la surface);
  • 1 couche surfacique (2D = en noir, limites de la région)

ou dans celle-ci:

  • 3 surfaces (rasters 3D = MNT et 2 surfaces de failles qui recoupent le MNT)
  • 1 couche de « drapage » (raster 2D = carte géologique sur le MNT);
  • 1 couche vectorielle point (point 3D =  têtes des sondage et position des failles dans les sondages);
  • 2 couche vectorielles ligne (2D =  limites des 2 failles sur la carte géologique, lignes verticales, les sondages)

C'est bien beau (peut-être pas...), mais comment faire en pratique ?

Nous nous focaliserons ici sur la composition d'un modèle en superposant plusieurs objets plutôt que des simples manipulations présentées dans les tutoriels (voir un MNT en 3D, etc., www.ing.unitn.it/~grass/docs/tutorial_64_en/htdocs/esercitazione/nviz/index.html) de la manière suivante:

  • que peut-on représenter dans nviz ?
  • les limites de nviz;
  • lancement de nviz à partir de GRASS GIS;
  • visualisation et superposition des couches matricielles (raster 2D et surfaces 3D) avec l'importance du concept de région dans GRASS GIS;
  • visualisation et superposition des couches vectorielles de type point (2D et 3D);
  • visualisation et superposition des couches vectorielles de type ligne ou polygone;
  • quelques traitements suppléméntaires;
  • sujets non abordés car trop complexes pour des débutants, volumes, animations;
  • exportation des modèles.

Quels objets peuvent-ils être représentés ?

C'est la première question à se poser avant de commencer. Il est évident qu'il faut, à la base, un objet qui soit en 3 dimensions dans GRASS GIS:

En théorie, tout objet, vecteur ou matriciel, peut être transformé en objet 3D dans GRASS GIS mais en pratique, tous ne peuvent pas être représentés de manière satisfaisante dans nviz. Ceux qui ne posent pas de problème sont:

Et les autres comme les polygones normaux, me direz-vous ? Il y a toujours moyen d'essayer de les tester, mais gare aux surprises...

La solution est alors de s'appuyer sur une surface existante (« drapage » possible pour tous les objets, mais dans le cas des rasters 2D, ça va plus loin puisque c'est la table des couleurs du MNT utilisé qui va être remplacée pixel par pixel par celle du raster 2D, d'où, encore une fois, l'importance de la notion de région avec sa résolution):

ou sur l'extrusion (v.extrude):

En résumé

Comme toujours GRASS GIS offre plusieurs possibilités pour traiter les données:

  • Nviz est, à la base, clairement destiné a représenter des grilles ou surfaces 3D (couches matricielles, les couches vectorielles sont arrivées après).
  • Un raster 2D peut toujours être utilisé comme couleur d'un MNT;
  • Un vecteur peut être transformé en vecteur 3D de 2 manières:
    • v.to.3d: dont le z est basé sur une valeur absolue, fixée dans l'interface ou disponible dans un champ de la table attributaire;
    • v.drape: dont le z est basé sur une surface 3D
    • de plus, NVIZ offre la possibilité de draper un vecteur 2D sur une surface.

  • Les volumes sont créés à partir de plusieurs grilles ou raster 3D (avec une surface basale et une surface sommitale).

Limites de nviz

Les limites résident dans la sémiologie des objets vectoriels. Seuls les vecteurs de type point permettent de « jouer » avec les attributs. Dans les autres cas, nviz ne permet qu'une représentation mono couleur, sans étiquette.

Mais comme le dit Michael Barton dans osgeo-org.1560.n6.nabble.com/How-to-create-polygon-from-two-selected-contour-line-td4505579.html

"The trick for many things in GRASS is to "think raster" instead of thinking vector."

C'est particulièrement vrai lorsqu'on veut attribuer une symbologie à des couches vectorielles.

Une couche vecteur de type ligne ne permettra que cette représentation:

Alors que si elle est transformée en couche raster (v.to.rast) en prenant en compte un des attributs, on obtient une couche raster dont on peut choisir la symbologie en fonction de cet attribut:

Cet attribut peut être obtenu comme s'il s'agissait d'une couche vectorielle (voir plus loin, requêtes sur les couches de type raster). Cette possibilité est une de grandes forces de GRASS GIS.

De plus, nviz a des limites dans le nombre d'objets qui peuvent être visualisés en même temps (10 et 15 surfaces, par exemple), sinon:

 

Mais ne vous méprenez pas, nviz n'est pas un logiciel 3D genre Blender, par exemple. Ce n'est pas son but, il se contente de pouvoir représenter des couches géoréférencées, rien de plus, rien de moins.

Lancement de nviz

Nviz se lance depuis le menu File. L'interface permet de choisir les divers éléments à utiliser (couches rasters ou vecteurs) et là, il y a un petit problème sémantique: ce que l'interface appelle 3d raster map correspond aux volumes constitués de voxels (pixel en 3D) alors que les grilles 3D (surfaces, etc.) sont appelées rasters.

ou de démarrer « à vide » (sans rien à montrer), entre autres options:

Après lancement, on se retrouve avec une interface réalisée en Tcl/Tk (la future interface, en développement, est programmée en Python avec wxPython)

Les menus importants à connaître sont les suivants:

  • le menu Files permet d'ouvrir/enregistrer une composition ou d'enregistrer la composition comme une image;
  • le menu Appearance permet de placer des légendes diverses (pas très belles, il faut le dire), de modifier la position ou l'éclairage de l'objet;
  • le menu Visualisation est le plus important, il permet de charger les objets dans nviz.

Couches matricielles (de type surface)   

simple « drapage »

Le simple « drapage » d'une couche 2D sur une couche surface 3D comme un MNT a déjà été traité sur le Portail (Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...). C'est une manipulation de base (basée sur le sous-menu color de la figure suivante) sur laquelle nous ne reviendrons pas, avec en particulier les rapports entre la région définie dans GRASS GIS et la Résolution dans nviz.

Résultats:

surface

figures tirées de Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...

Il y a aussi moyen de placer des couches planes (module r.plane) créées à partir d'un angle, d'une direction et de points limites

limites de couches géologiques (lignes bleue et rouge et plans des couches construits à partir de leurs pendages et de leurs directions).

Démarche avec plusieurs surfaces

Une fois la première surface chargée, nous disposons d'un menu qui permet de spécifier sa représentation:

  • topographie, c'est la surface 3D choisie;
  • couleur: c'est la couleur de la surface, soit celle d'origine, soit une couleur uniforme, soit une couleur issue d'une autre couche raster (c'est comme ça qu'est réalisé le « drapage » des autres couches sur la surface);
  • masque: un peu trop complexe pour débuter... (voir plus loin)
  • transparence;
  • réflectivité de la surface;
  • émission de la surface.

Superposition d'une 2e couche et réglage de la transparence d'une des couches:

Résultat:

Changement de couleur d'une des couches (c'est en choisissant New Map, que le « drapage » est créé, ici j'ai choisi une couleur uniforme, New constant):

Couches vectorielles de type point ou point 3D 

Après chargement de la couche:

  • si elle est en 3 dimensions (avec un z absolu pour chaque point) -> 3D points

  • si elle est en 2 dimensions -> display on surface avec choix des surfaces

sur une des surfaces

sur l'autre

Il y a moyen de discriminer la représentation en fonction de la table d'attribut de la couche points suivant divers critères -> thematic mapping for vector points (difficile à maîtriser, voir geomatica.como.polimi.it/workbooks/n6/articoli/riade_acs_en.pdf)

extrusion en fonction d'un des champs de la table d'attributs

C'est bien une ligne, comme énoncé précédemment, mais elle doit aussi s'appuyer sur une surface:

Couches vectorielles de type ligne ou polygone 

C'est le même principe après chargement de la couche, hormis le fait qu'il n'y a qu'une seule possibilité, appuyer les couches sur une surface (même pour les couches 3D, mais le z reste absolu et non relatif, c'est-à-dire qu'il n'est pas mesuré à partir de la surface). 

les couches 3D (en rouge) doivent aussi s'appuyer sur une surface (mais valeur z absolue):

Il y a toujours moyen de déplacer la couche vecteur pour améliorer sa visibilité:

extrusion en fonction d'un des champs de la table d'attributs

L'extrusion d'un polygone donnera comme résultat des polygones 3D à faces (agrandis ici pour la visibilité):

C'est comme cela que seront représentés dans nviz les fichiers 3D dxf ou VTK (après importation dans GRASS GIS), pour autant qu'ils aient des faces.

figure tirée de Grass Gis et Paraview: la modélisation géologique 3D pour les démunis, ou les enthousiastes..

Traitements complémentaires

Nviz permet d'effectuer divers traitements complémentaires:

introduction de plans constants (horizontaux ou verticaux)

 

coupes dans le modèle

Il y a moyen de les faire suivant plusieurs critères avec la possibilité de combiner plusieurs plans de coupes:

modification de l'éclairage du modèle

toujours suivant divers critères:

requêtes sur les couches vectorielles

Ici sur la couche vectorielle orange, qui représente les courbes de niveau drapées sur la surface:

requêtes sur les couches de type raster

 Sujets non abordés

Nous n'aborderons pas ici, car beaucoup trop complexe pour un débutant:

  • le traitement des volumes (très, très complexe):

sous forme de rubans 3D (avec une épaisseur)


sous forme de véritables volumes (le plus difficile), voir figure « limites de couches géologiques »

sans parler des résultats obtenus par les « vrais » professionnels de GRASS GIS (comme le géologue polonais Maciej Tomaszczyk, opengeology.pl/index.php)

  • la création de masques avec les couches de type raster et volumes;
  • la création d'animations comme :

gif animé provenant de istgeo.ist.supsi.ch/site/projects/dambreak, réalisé avec un nouveau module expérimental, non standard

  • ou la possibilité de créer des scripts de traitements divers.

Exportation

Attention au format Maximum Resolution PMM car les images obtenues peuvent être de très grande taille...

Conclusions

Je pense que ces quelques notes vous seront utiles pour vous lancer. Le secret est ensuite de prendre son temps pour « jouer », en procédant par erreurs et réussites avant d'obtenir des résultats satisfaisants.

Vous comprendrez maintenant, j'espère, comment sont créées les images de grass.fbk.eu/screenshots/viz.php qui me faisaient tant saliver en débutant...

Bien que ce n'est pas un logiciel à la Blender, certaines enjolivures sont possibles, comme la création d'arbres avec le module v.trees3d  (grass.osgeo.org/wiki/GRASS_AddOns#v.trees3d, voir les-ejk.cz/skoleni/grass/vektory/_images/stromy.png), mais rien encore de très concluant... Plus intéressante est la possibilité d'exporter les couches 3D au format VTK (et autres), ce qui offre de nombreuses possibilités supplémentaires (voir Grass Gis et Paraview: la modélisation géologique 3D pour les démunis, ou les enthousiastes...)

Tous les traitements ont été effectués sur Mac OS X avec GRASS GIS 6.4.2  et Inkscape pour les figures.

Site officiel : GRASS GIS
Site officiel : nviz
Autres Liens : GRASS GIS pas à pas pour les débutants: 3 - importer des couches matricielles (raster) et importance de la région
Autres Liens : Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...
Autres Liens : Grass Gis et Paraview: la modélisation géologique 3D pour les démunis, ou les enthousiastes...Grass Gis et Paraview: la modélisation géologique 3D pour les démunis, ou les enthousiastes...


Creative Commons License
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique Commerciale 2.0 France

Commentaires

Blender

Je suis étonné du résultat, surtout sous Blender - Combien de temps pour modéliser ?

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.