Visualiser la population sur une carte avec Aerialod, rasteriser des vecteurs, grouper des rasters et tricher sur QGIS

Christophe Le-Bas
11 min readOct 30, 2021

--

Ici, une carte de la population en France (et les pays limitrophes) grâce à la fusion de deux rasters.

Comment faire apparaître en 3D la population sur une zone du globe ? Comment obtenir des rasters de la population, comment les grouper, comment les manipuler si cela est nécessaire ? Comme rasteriser un vecteur dans QGIS ? Comment tricher et faire un tracé de routes en 3D ? Voilà le programme !

C’est donc la suite de notre série sur la visualisation de données en 3D. Dans un premier temps, nous avons évoqué le logiciel Aerialod lui-même, ses fonctionnalités, ses avantages et ses limites. Puis, nous avons abordé les Modèles numériques de terrain, la façon de travailler avec et comment en récupérer. Il est temps de penser à autre chose : comment conférer du volume à nos données. Pour cela, nous aurons besoin de QGIS, d’Excel et d’Aerialod.

Cette publication va être divisée en trois grandes sections. D’abord, utiliser un raster matérialisant la population sur une zone du globe. Cette section sera une libre traduction d’Alasdair Rae. Puis, nous verrons la fonction Rasteriser, disponible dans QGIS. Elle permet de transformer une couche vecteur avec des données sur la population des communes, par exemple, en une image Raster utilisable dans Aerialod. Enfin, nous allons tricher : adapter des vecteurs pour qu’Aerialod les utilisent.

1. Un raster qui a du volume

Un raster est une image composée de pixels. Chaque pixel dispose de sa propre valeur et c’est cette valeur qui va dicter sa hauteur, dans un outil comme Aerialod. Dans le cadre de cet exercice, nous allons utiliser tout d’abord les données librement disponibles sur le site de la Commission européenne. Avec ce lien, nous avons accès à une carte du monde, découpée selon des carreaux. Testons donc le téléchargement d’une tuile au hasard, en Amérique du nord.

On obtient un fichier Zip avec à l’intérieur un document au format Tif et un pdf d’explication. Bien sûr, le pdf ne va pas nous être d’une grande utilité. En revanche, le Tif se glisse-dépose directement Aerialod pour obtenir, déjà, une image en 3D de la population du secteur concernée. Bien sûr, on ajustera l’esthétique de notre carte pour avoir un rendu le plus intéressant possible.

A gauche, la version Aerialod + Inscape et à droite, la source.

On voit ici les contours de notre tuile et les pics de population, qui représentent les villes. Bien sûr, il est possible de télécharger plusieurs tuiles et de les fusionner pour n’en créer qu’une. Pour cela, QGIS est notre ami (comme souvent) et grâce à sa fonction Raster =>Divers => Fusionner, on peut assembler deux blocs et ainsi créer un visuel plus vaste. Si besoin, voici un lien vers un tuto expliquant comment fusionner des rasters.

A gauche, une fusion de deux rasters. A droite, l’interprétation dans Aerialod.

Jusqu’ici, tout va bien. Cependant, il est possible que vous soyez gêné par la taille des pics… Ce sera notamment le cas avec les données disponibles sur le site WorldPop. Voici le lien vers ce site et ses données. On trouvera la population par pays en 2020.

https://www.worldpop.org/geodata/listing?id=75

Admettons le téléchargement du Gabon (mais les autres pays fonctionnent bien pour notre exemple). Si on glisse-dépose le fichier Tif téléchargé, voici ce qu’il se passe :

Le Gabon.

C’est bien mais pas top. Le problème vient de la valeur des pixels. Ouvrons QGIS, ouvrons le raster du Gabon et regardons ce qu’il y a dedans (clic droit, propriétés). La valeur des pixels est comprise entre 0.005 et 3651, et Aerialod va extruder le pixel à 3651 de haut. Fort heureusement, il existe plusieurs solutions pour résoudre ce souci. Tout d’abord, la plus rapide est d’enregistrer notre raster au format image. Tout simplement.

Dans QGIS, on clic droit sur le raster, Exporter => Enregistrer sous. On nommera le fichier à sa convenance, ce qui compte est d’enregistrer au format Image, et non pas “Donnée brute”.

Voilà à quoi cela doit ressembler.

Une fois ceci fait, QGIS va générer un nouveau raster, strictement identique au précédent. Strictement ? Non ! Si on fait un clic droit sur ce nouveau raster et que l’on regarde ses propriétés, nous verrons un changement intéressant. Sa valeur maximale a changé, elle a fortement diminué.

La valeur maximale est désormais de 210.

Si on glisse-dépose notre fichier dans Aerialod, le résultat est moins pire que tout à l’heure. Mais ce n’est pas parfait. Il n’y a pas de terre…

C’est moins mauvais.

Pourquoi la terre est absente de cette visualisation ? Car notre échelle de pixels commence à 0 et que ces pixels sont noirs, donc vides dans Aerialod. Il n’affiche donc rien. Nous allons donc devoir retourner dans QGIS pour faire apparaitre la terre !

Dans QGIS, il faut sélectionner le raster d’origine (celui qui va jusqu’à 3651.) On fait un clic droit, propriétés et on change alors le type de rendu vers Pseudo couleur à bande unique. On réglera le minimum et le maximum selon nos besoins (ici, 1–212) et on ajustera la palette (personnellement, elle était de blanc vers noir, j’ai inversé la palette de couleur du noir vers le blanc). On applique les changements et un nouveau raster apparaît. Comme tout à l’heure, on va l’enregistrer au format image.

Personnellement, j’ai modifié le raster d’origine selon ces critères.

Désormais, il faut glisser déposer le raster que nous venons d’enregistrer au format image dans Aerialod.

Voici mes spécifications.

On voit apparaître un pic du côté de Libreville, capitale du Gabon, sur la côte Atlantique. Puis, la population se répartit le long du fleuve Ogooué. A l’est, on aperçoit un autre pic de population qui correspond à Franceville, chef-lieu de la province du Haut-Ogooué et du département de la Mpassa.

Voici une façon pour faire apparaître la population si l’on a un pic anormal dans Aerialod. Il existe d’autres façons de faire en jouant, dans Propriétés, sur l’interpolation, le mode classement (continu, intervalle égale, quantile)… On peut aussi jouer sur la palette de couleurs elle-même, en désignant un noir moins noir pour la valeur minimale (et non pas un RVB à 0,0,0) et un blanc plus gris pour la valeur maximale.

Toute cette section était librement inspirée de la longue publication disponible, en anglais, sur le site d’Alasdair Rae. Voici le lien :

Une très belle mine d’informations ! Je vous invite aussi à lire la très bonne publication disponible sur le site d’Aurélien Chaumet. Voici désormais, le chapitre deux de ce guide.

2. Rasteriser ses données !

Voici donc une autre option pour donner du volume à ses données. C’est l’heure de la rasterisation, grâce à QGIS. Ici, nous allons partir d’un fichier vecteur pour en faire une carte choroplèthe avant de rasteriser ladite carte et l’injecter dans Aerialod. La démarche est fondamentalement la même que précédemment : on va donner des valeurs à des pixels, sauf qu’on va travailler à partir de vecteurs.

Pour cela, je vous invite à récupérer la base de données Admin express la plus récente disponible. Pourquoi ? Car on y trouve les contours des communes ainsi que certaines informations comme la population de ces villes. Théoriquement, cela devrait être relativement simple si vous avez regardé mes tutos précédents. Au cas où, les voici :

Ici, il est question d’importer une couche vecteur (celles des régions, des communes… comme vous voulez).

Personnellement, j’ai préparé une couche traitant des Hauts-de-France. Je n’ai fait qu’isoler les communes de la région dans une couche SHP.

Notez les deux rasters tests.

Une chose essentielle cependant pour que cela fonctionne. Vos données chiffrées doivent être au format Entier (Integer), sinon cela risque de poser un souci lors de la rasterisation.

Dans Raster, en haut, on sélectionnera Conversion => Rasteriser. Une boîte de dialogue s’ouvrira alors, nous demandant des informations.

La couche d’entrée est la source de vos données. Le champ à utiliser pour la valeur des pixels est la zone, dans le fichier, où sont vos données chiffrées, l’unité de raster du résultat j’avoue ne pas trop savoir, la largeur et la hauteur ajusteront la résolution. Enfin l’emprise : la zone sur laquelle va s’étendre le raster créé.

Au cas où, voici un tuto vidéo !

Un tuto de la chaîne QGIS pour les piou piou.

Une fois que l’on a appliqué nos paramètres, eh bien on retourne en quelque sorte à l’étape 1 de cet article. Dans le raster créé, on va changer le type de rendu pour tenter de faire apparaître davantage les petites communes, sinon Lille va tout écraser.

Le raster est prêt.

Une fois que l’on a glissé et déposé cette image dans Aerialod, on obtient une carte de la population des Hauts-de-France, commune par commune, en 3D. Il faudrait l’annoter dans Inkscape, par exemple, afin de faire ressortir les éléments que l’on veut (Lille : combien d’habitants ? Amiens, Dunkerque, Beauvais, Saint-Quentin…) et le travail serait fait.

Si on a un souci avec la rasterisation, il reste une solution : la triche.

3. Du vecteur interprété comme un raster

Admettons une carte. Vous cherchez à joindre à votre élément cartographique un fichier de données au format CSV. QGIS peut le comprendre, à condition d’avoir également à disposition un fichier au format CSVT qui détaillera le type de format de chacune de vos colonnes dans ledit CSV. Est-ce un format Entier, Réel, Chaîne (texte) ? On le renseigne dans le CSVT.

Ici vous pouvez trouver un CSVT éditable ensuite dans le bloc-note de Windows.

Un fichier CSVT.

Car, pour une raison que je ne m’explique pas (si vous avez une astuce, merci de me la partager :) :) :) :) :) ), lorsque je réalise une jointure, mes chiffres au format décimal ne sont pas compris lors de la rasterisation. Qu’à cela ne tienne ! Je fais une carte en nuances de gris… Aerialod comprend les nuances de gris comme des valeurs, donc il réussira à organiser ma carte.

L’outil rasteriser qui bug.

Je réalise donc une carte en nuances de gris, selon mes spécifications. En l’occurrence, ce ne sont que des données aléatoires, donc rien de bien intéressant. Pour que cela fonctionne, il faut absolument enlever les contours autour des communes (l’option est disponible) dans Symbologie (clic droit sur la couche vecteur, Propriétés, Symbologie).

Ici, on enlève les contours des communes.

Ôter les contours sera utile par la suite, quand nous créerons notre fond de carte noir. Dans les propriétés, on changera également la palette de couleurs (ne pas démarrer le noir à 0,0,0).

Attention à bien enlever le contour.

Puis, dans Nouvelle mise en page (Projet => Nouvelle mise en page), on créera notre carte avec un fond noir (à 0,0,0 celui-là, pour ne rien avoir derrière la carte).

Le fond noir signifiera à Aerialod… le vide.

On exporte le projet au format Tif (je mets 1200 dpi pour une image de bonne qualité) et on glisse dans Aerialod.

Le résultat après cette ruse…

On a alors une carte très propre, dont les contours sont nets. Oui, l’Aisne a disparu, j’ai un bug dans mes données. DÉSOLÉ.

Les contours sont parfaits.

Ce genre d’astuce permet de créer rapidement une carte en 3D avec QGIS, même si ce dernier comprend mal le fichier CSV. Je pense notamment à la création de ceci :

Au final, on a un fichier qui reste un vecteur mais que l’on travaille comme un raster…

Le raster à gauche, le pseudo-raster (le vecteur quoi), à droite.

Oh, je ne suis pas fier mais bon… Quand on comprend pas tout, on s’adapte. Bien sûr, on peut jouer sur le niveau de gris de notre vecteur, et ainsi adapter notre pseudo-vecteur à nos besoins.

L’impossible révèle parfois les multiples chemins menant aux possibles.

En utilisant ce stratagème, il est possible d’utiliser n’importe quel vecteur comme un raster. Admettons le vecteur des cours d’eau d’une zone donnée. On grise ce vecteur, on crée une nouvelle mise en page avec un fond noir et voici un bout du marais de Saint-Omer (les lignes fines sont les cours d’eau, la plus épaisse est la limite entre le Pas-de-Calais et le Nord).

Un bout du marais de Saint-Omer.

Oui, la couleur n’est pas ultime j’en conviens. Voici autre chose : la carte des routes de Lille, enfin d’une zone de Lille, dont la hauteur est en rapport avec la largeur desdites routes. Même technique avec un fond noir et un nuancier de gris pour nos “valeurs” et un export en png plus tard.

La hauteur est selon la largeur de la route.

Avec cette technique, on peut représenter énormément de choses en 3D sans vraiment s’embêter !

Voilà, nous venons de voir trois façon de donner du volume à des données ! Bien joué si vous avez réussi à tout lire. N’hésitez pas à laisser un commentaire, des conseils… Ce genre de chose.

Merci de m’avoir lu !

--

--

Christophe Le-Bas

Journaliste vagabond, papier, web, data, etc. Ex-La Voix du Nord — Nord éclair — Courrier Picard — L’Aisne nouvelle. De retour à La Voix du Nord #data #dataviz