Nous allons créer un modèle 3d du canton de Neuchâtel. Nous utiliserons, pour cela, le module Qgis2threeJS créé par Minoru Akagi. Ce module permet d’exporter aisément (sans connaissance de langages de programmation) des modèles 3d sous forme d’un système de fichiers du framework three.js. Ce dernier permet de présenter des objets interactifs dans les navigateurs web majeurs en fonction à la date d’écriture du présent article, y compris les navigateurs des téléphones portables.

Qgis2threejs permet aussi d’exporter des objets dans le format portable glTF, lisible aussi bien par le logiciel de modélisation 3d Blender que par nombre d’imprimantes 3D.

Voici, d’abord, un aperçu du modèle que nous allons créer. La roulette de la souris (ou geste équivalent du trackpad) permet de l’agrandir; maintenir le bouton droit enfoncé et déplacer le pointeur déplace le point d’observation.

Installation du module

Ouvrez qGIS et installez le module Qgis2threejs à l’aide du gestionnaire de modules. Activez le module lorsqu’il est installé.

Importation des données

Téléchargez l’archive zip contenant toutes les couches des données nécessaires pour la construction du modèle.

Ouvrez QGIS et créez un nouveau projet.

Avant toute importation de données dans QGIS, vérifiez que le système de projection de votre projet soit en EPSG 21781. Ce numéro de projection EPSG renvoie à la projection nationale suisse CH 1903 / LV 03, désormais ancienne, mais utilisée pour les données utilisées dans cet exercice. Si vous ne spécifiez pas la projection cartographique correcte, Qgis2threejs ne parviendra pas à superposer correctement les couches d’information géographiques et générera des erreurs.

Ensuite, glissez-déposez, l’un après l’autre, les fichiers suivants dans QGIS :

  • NE_combinedraster2.tif : ceci est le modèle numérique du terrain (MNT) que la terminologie anglophone désigne comme digitial elevation model (DEM).
  • ContourCantonNE.gpkg : ceci est le contour du canton, que nous allons utiliser pour découper le DEM. Notez que la géométrie spatiale est enregistrée sous forme de fichier GeoPackage. Ce format portable et non-propriétaire – contrairement au format shapefile, standard du marché mais propriétaire d’ESRI qui développe ArcGIS – est conçu pour être aussi léger que possible en termes de volume, et pour se présenter sous la forme d’un fichier unique et directement utilisable; la majorité des applications SIG, dont ArcGIS et QGIS sont capables de traiter ce format.
  • Population2011CantonNE.gpkg : ceci est la population du canton, enregistrée à une échelle hectométrique, en d’autres mot, le nombre de personnes par zone de 100 mètres carrés.

À ce stade vous devriez voir une variante de ceci:

Ajout d’une couche de données Open Street Map

Installer le module QuickMapServices

Avant de générer le modèle 3d, nous allons ajouter une quatrième couche d’information de type raster. Celle-ci sera directement chargée depuis le service en ligne OpenStreetMap (OSM).

Pour l’utiliser, installez le module QuickMapServices d’une manière identique à l’installation du module Qgis2threejs faite plus haut dans cet exercice.

Ajouter une couche de géoinformation OSM

Allez dans le menu Web > QuickMapServices et ajoutez la couche OSM standard.

Paramétrisation et exportation du modèle

Avant la suite, vérifiez que les couches s’affichent bien et qu’elles soient alignées, c’est-à-dire, par exemple, qu’il n’y a aucune couche où Neuchâtel s’afficherait au-dessus de Besançon plutôt qu’au dessus de l’emplacement de Neuchâtel sur les autres couches. Ensuite, cachez-les toutes, à l’exception de la couche OpenStreetMap. La raison pour cela est la suivante: tout ce que s’affiche dans votre fenêtre de carte QGIS s’affichera également en tant qu’image dans votre modèle 3d. Vous ne voulez pas que votre modèle numérique du terrain s’affiche comme image, mais qu’il serve comme base à la forme d’élévation du paysage 3d. Les couches vectorielles ContourCantonNE.gpkg et Population2011CantonNE.gpkg serviront à autre chose.

Allez dans le menu et sélectionnez Web > Qgis2threejs > Qgis2threejs Exporter. L’interface d’exportation Qfis2threejs doit s’ouvrir.

Cochez la case prévisualiser pour voir le modèle en cours de construction. Nous allons modifier quelques paramètres pour obtenir le modèle que nous souhaitons.

Les paramètres “Scene”

Modifiez les paramètre de la “scène” 3d, accessible depuis le menu Scene, comme suit:

Notez que la paramètre “Vertical exageration” détermine la hauteur de votre modèle. Plus ce paramètre est élévé, plus les montagnes le seront. N’hésitez pas à le changer et de voir ses effets.

Les paramètres du modèle numérique du terrain

Modifiez les propriétés du digital elevation model (DEM) en cliquant sur le nom de la couche avec le bouton droit de la souris.

Dans les paramètres, notez “Clip DEM with polygon layer“. Ceci limite l’affiche de la surface 3d à la surface du canton donnée par la couche ContourCantonNE.gpkg plutôt que d’afficher un rectangle.

Les paramètres de la couche vectorielle (points)

Nous allons utiliser la 3e dimension pour communiquer une nouvelle information: la population par hectomètre, contenue dans la couche Population2011CantonNE.gpkg. Il suffit donc de mapper cette information sur des variables visuelles dans l’espace 3d. Cliquez sur le nom de la couche avec le bouton droit de la souris.

Et utilisez les paramètres suivants:

Pour comprendre ce que vous êtes en train de faire, testez d’autres paramètres et observez leur influence sur l’apparence du modèle.

  • Qu’arrive-t-il lorsque la coordonnée Z n’est pas relative à la couche “NE_combinedraster2”?
  • Qu’arrive-t-il lorsque vous changez de type d’objet, c’est-à-dire si vous choisissez autre chose qu’un cylindre?
  • Qu’arrive-t-il lorsque vous changez l’expression pour Radius?
  • Qu’arrive-t-il lorsque vous changer le paramètre de multiplication de B11BTOT (par exemple *100 au lieu de *10)?
  • etc.

Votre modèle peine à s’afficher?

NB: ne faite ceci que si vos cylindres construits à partir des points de population ont de la peine à s’afficher.

Il est possible que votre ordinateur ne soit pas assez puissant pour traiter les données de population en 3d. Dans ce cas, nous pouvons limiter les informations, par exemple en effaçant tous les points dont la population totale (B11BTOT) est inférieure à 10:

Passez en mode édition

Sélectionnez les points dont la valeur B11BTOT est inférieure à 10:


Une fois ces points sélectionnés, appuyez sur Delete pour les effacer, sauvegardez la couche d’information, et quittez le mode d’édition. Si vous ne savez plus comment activer ou quitter le mode d’édition ou comment sauvegarder une couche d’information rapportez vous à l’exercice Créez votre pays imaginaire avec QGIS.

Modéliser de lignes (optionnel)

Notez, à ce stade, qu’ici nous venons de maîtriser l’aspect de rendu 3d de points. Une couche de lignes pourrait aussi être ajoutée et paramétrée de la même manière. Pour l’essayer, ajoutez une couche de type “lignes” sur votre carte et dessinez quelques vecteur ligne sur cette couche. Modélisez ces lignes en 3D.

Si vous ne savez plus comment créer une couche de géoinformation de type “lignes”, rapportez vous à l’exercice Créez votre pays imaginaire avec QGIS.

Une flèche 3d pour indiquer le nord

Ceci peut aider à se repérer sur une carte vouée à être manipulée et tournée dans tous les sens: Ajoutez une flèche 3d indiquant la direction du nord:

Exportez le modèle pour le web

Exportez le modèle pour le web à l’aide du menu suivant, en spécifiant le répertoire où vous souhaiter sauvegarder ces données. Sauvegardez-les dans un nouveau répertoire vide, car plusieurs fichiers seront générés; ils se mélangeraient sinon aux fichiers déjà présents dans le répertoire.

N’oubliez pas de cocher la case « Enable the Viewer to Run Locally » si vous voulez ouvrir le modèle dans un navigateur web sur votre propre ordinateur ; ceci sera très probablement le cas. En effet, par défaut, le programme JavaScript généré par Qgi3threejs accède aux données 3D du modèle par l’intermédiaire d’appels asynchrones (AJAX) qui sont bloqués pour les fichiers html locaux (ouverts sur votre propre machine) sur des navigateurs plus récents que 2016 pour des raisons de sécurité (un programme javascript malveillant pourrait sinon accéder au contenu de votre disque dur et l’envoyer n’importe où en ligne). Les programmes contenant des appels AJAX sont destinées plutôt à interagir avec des données déposées sur un serveur web. Il n’est pas difficile de démarrer un serveur web local (c’est-à-dire tournant sur votre propre machine), mais autant s’éviter cette contrainte supplémentaire… Donc : cochez la case « Enable the Viewer to Run Locally ».

Ouvrez le fichier idex.html créé à l’emplacement que vous avez désigné. Vous devriez voir le modèle 3D. Appuyez le bouton gauche de la souris et déplacez le pointeur pour changer de point de vue.

Exportez le modèle pour Blender et autres dans le format glTF

Le format glTF (Graphics Library Transmission Format) est un format de fichier permettant d’échanger des scènes et des modèles 3D, utilisant, à l’interne, la structure de données JSON. Le format glTF est, depuis 2015, un standard utilisé par nombre de logiciels et d’imprimantes 3d. Blender fait partie de ces logiciels. Depuis 2017, des acteurs commerciaux majeurs, comme Google et Microsoft, ont aussi annoncé l’usage du format glTF dans leur gamme de produits.

Dans Qgis2threejs, utilisez le menu File > Save Scene as > glTF pour exporter le modèle 3D en format glTF.

Il peut être utile de comprendre la structure d’un fichier glTF. Ouvrez le fichier dans un éditeur de texte pur (comme Visual Studio Code) pour y jeter un coup d’oeil.

En fonction de la puissance de votre ordinateur et de sa carte graphique, un fichier contenant 6935 cylindres isolés pourrait poser un défi à l’affichage dans Blender. Pour cette raison, cachez (en la décochant), la couche de points, en ne conservant que le modèle numérique et exportez cette seconde version allégée dans un autre fichier glTF.

Passez à l’exercice suivant, où nous utiliserons soit le premier fichier que vous avez créé, soit sa variante plus légère.

Join the Conversation

2 Comments

Your email address will not be published. Required fields are marked *

  1. Bonjour,
    Merci beaucoup pour ces explications aussi claires qu’utiles.
    Une petite question, où avez-vous trouvé le fichier «Population2011CantonNE.gpkg»? Je recherche ces mêmes données, mais pour la Suisse entière.
    Cordialement,
    Mathias Rota