Comment créer une carte monochrome hachurée dans QGIS

Tutoriel détaillé sur la création d’une carte de relief hachurée en utilisant les dernières fonctionnalités de QGIS (3.20)

Introduction

En cartographie, les hachures ont servi à indiquer les reliefs sur les cartes d’État-Major qui étaient imprimées en taille-douce. Leur usage, codifié au fil des années, permettait de lire facilement une carte, les hachures disposées dans le sens de la plus forte pente reliaient les lignes de niveau, et étaient d’une épaisseur proportionnelle à l’inclinaison de la pente, selon un « diapason » déterminé par calcul.

Nous n’allons pas, ici, reproduire cette technique en suivant scrupuleusement les calculs de l’époque. Mais nous allons obtenir un, résultat comparable visuellement, suffisamment proche.

Pour une explication détaillée de la technique de hachurage des cartes anciennes, voir https://fr.wikipedia.org/wiki/Carte_d%27%C3%A9tat-major#La_technique_des_hachures

Dans cet article nous allons suivre trois étapes:

  • 1- La préparation des données nécessaires (mnt, courbes de niveau,…)
  • 2-La réalisation de la carte de relief hachurée
  • 3-L’habillage avec l’ajout d’éléments du paysage (cours d’eau, routes, toponymes,…)

Pour la partie technique de hachurage nous avons repris le tutoriel publié par Robin Hawkes (https://robinhawkes.com)

Préparation des données

Obtention d’un MNT (modèle numérique de terrain)

Si vous disposez déjà d’un MNT pour votre zone d’intérêt, vous pouvez l’utiliser directement. Si non, vous pouvez télécharger un mnt à partir de plusieurs sources.

Pour la France, vous pouvez utiliser la BD ALTI de l’IGN. Pour d’autres régions, QGis vous propose le plugin SRTM downloader pour télécharger le mnt de la NASA.

Ici nous allons utiliser les données de l’IGN. Pour les télécharger vous devez disposer d’un outil pour ouvrir les liens ftp, de type Filezilla (https://filezilla-project.org/download.php?type=client)

Allez sur la page de téléchargement des données BD ALTI (https://professionnels.ign.fr/bdalti#telechargement).

application ftp de téléchargement

Téléchargez le ou les départements qui correspondent à votre zone de travail

téléchargement du fichier départemental

Décompressez le fichier téléchargé

décompression du fichier téléchargé

Les données sont contenues dans un sous-répertoire sous la forme de fichiers avec l’extension .asc

données au format .asc

Pour simplifier le travail, il est conseillé de créer un seul fichier avec l’ensemble des données. pour cela, ouvrez QGis et chargez l’ensemble des fichiers .asc

tuilage des images asc

Pour fusionner l’ensemble des fichiers, nous allons créer un raster virtuel. Allez dans le menu Raster -> Divers -> Construire un raster virtuel

construction d'un raster virtuel avec qgis

Cliquez sur l’icône … correspondant à Input Layers

Sélectionnez tous les fichiers, puis cliquez sur Exécuter

fichiers en entrée du raster virtuel

Vous avez maintenant un raster virtuel contenant le mnt de tout le département.

résultat du raster virtuel

Pour conserver ce fichier, qui pour l’instant est virtuel, cliquez droit sur la couche -> Exporter -> Enregistrer sous

enregistrement de la couche

Dans format, vous pouvez choisir à votre guise, mais si vous optez par GeoPackage, vous pourrez enregistrer les autres couches que nous allons générer dans cet article dans le même fichier.

Le raster virtuel n’ayant pas par défaut de définition du SRC, n’oubliez pas de mettre EPSG:2154 dans le champ SRC

sélection du format geopackage

Gardez dans la liste des couches seulement le dernier fichier.

Extraction du MNT de la zone de travail

Pour la suite, nous allons garder le mnt seulement pour la zone de travail. Zoomez sur votre zone de travail. Pour vous aider, vous pouvez charger la couche OSM

chargement d'OSM

emprise de la zone de travail

Pour extraire le mnt correspondant seulement à la zone affichée, allez sur le menu Raster -> Extraction -> Découper un raster selon une emprise

découpage du mnt pour la zone de travail

Dans Étendue de découpage, sélectionnez Utiliser l’emprise du canevas de carte

Cliquez sur Exécuter

utilisation de l'emprise du canevas de la carte

Si vous avez, comme ci-dessus, stocké votre MNT sans un fichier GeoPackage, vous pouvez garder l’extrait dans ce même fichier.

Cliquez sur la nouvelle couche (Découpe) -> Exporter -> Enregistrer sous

enregistrement du mnt extrait

Dans Format sélectionnez GeoPackage

Dans Nom de fichier sélectionnez le fichier gpkg que vouysd avez créé avec l’ensemble du département

Dans nom de la couche rentrer un nom pour votre zone de travail. Puis, cliquez sur OK.

création d'une table dans gpkg

Gardez pour la suite,dans la liste des couches raster, seulement cette dernière couche.

résultat du découpage

Pour construire les hachures nous aurons besoin de trois informations:

  • Les courbes de niveau
  • Les valeurs de pente
  • Les valeurs d’Exposition

Calcul des courbes de niveau

L’espacement de calcul des courbes doit être ajusté en fonction de la topographie de la zone. En effet, chaque courbe de niveau sera transformé en hachures. Si les courbes sont trop proches ou trop éloignées, le résultat ne sera pas très esthétique.

L’image suivante montre une densité correcte de courbes de niveau. Dans ce cas précis le choix d’espacement est de 200 m.

densité des courbes de niveau

Calcul du raster Exposition

Allez dans le menu Raster -> Analyse -> Exposition

menu raster, analyse, exposition

Indiquez la couche du MNT de la zone comme Couche source. Comme le raster est une étape de calcul intermédiaire, vous pouvez laisser l’option de création d’un fichier temporaire.

calcul de l'exposition

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul d'exposition

Calcul du raster Pente

Allez dans le menu Raster -> Analyse -> Pente

menu raster analyse pente

Indiquez la couche du MNT de la zone comme Couche source. Comme le raster est une étape de calcul intermédiaire, vous pouvez laisser l’option de création d’un fichier temporaire.

calcul de la pente du mnt

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul de pente

Placement des points le long des contours

Nos hachures seront tracées à partir de différents points le long de chaque ligne de contour en échantillonnant les valeurs de l’aspect et de la pente que nous venons de générer. Nous allons donc passer des lignes de contour à des points placés le long de ces lignes.

Vous aurez besoin de la Boîte à outils de traitement ouverte pour cela, donc si vous ne la voyez pas déjà, vous pouvez l’ouvrir via le menu Boîte à outils de traitement.

Vous pouvez maintenant générer les points le long des contours :

Allez dans l’item Géométrie vectorielle -> Points le long d’une géométrie

Définissez comme couche source la couche des contours.

La distance correspond à la séparation entre deux points. Ce sera donc la séparation entre chaque hachure. Vous devrez l’ajuster en fonction de l’étendue de votre zone. Ici notre zone fait 35 km de large et nous avons choisi une distance de 100 m.

calcul de point le long des lignes de niveau

Le résultat est affiché dans la fenêtre cartographique

résultat du calcul des points le long des courbes de niveau

Affectation de la pente et de l’exposition à chaque point

Pour construire les hachures nous avons déjà dans les attributs des points le long des lignes de contour l’angle de la ligne à chaque point

attributs de la couche de points

Nous avons maintenant à ajouter dans les attributs la valeur de pente et d’exposition pour chacun des points.

Il y a plusieurs façons de faire ceci, mais la plus simple est d’utiliser le plugin Point Sampling Tool de QGis.

Installez le plugin. Assurez vous que les rasters Pente et Exposition sont visibles, puis allez dans le menu Extensions -> Analyses -> Point Sampling Tool

lancement du plugin Point Sampling Tool

Définissez la couche vecteur contenant les points avec la couche « points interpolés » issus des lignes de contour.

Dans la fenêtre « Couches avec les champs d’où extraire les valeurs: cliques sur les attributs ID, ELEV, distance, angle de points interpolés, ainsi que sur Pente et Exposition.

Pour le fichier en sortie vous pouvez sélectionner le fichier gpkg créé plus haut. C’est cette couche que nous allons utiliser pour générer les hachures. Cliquez sur OK.

couches utilisés pour le plugin Points sampling Tool

Une fenêtre s’ouvre, donnez un nom à la table, par exemple pointshachures

La nouvelle couche est chargée. Vous pouvez voir dans la table d’attributs les valeurs qui ont été ajoutées.

table d'attributs mise à jour

Vous pouvez supprimer toutes les autres couches car elles ne seront plus nécessaires.

Nous avons fini la préparation des données, nous allons voir maintenant la réalisation de la carte de relief hachurée.

Réalisation de la carte de relief hachurée

Ouvrez la fenêtre de Propriétés de cette dernière couche et sélectionnez l’onglet Symbologie. Tout le travail de génération des hachures va se faire ici.

Ce travail va consister à remplacer la représentation ponctuelle des entités par des représentations linéaires. Nous allons utiliser pour cella l’opérateur de QGis « générateur de géométries » pour :

  • utiliser le point existant comme point de départ de chaque hachure
  • utiliser l’angle de la courbe de niveau originale pour déterminer la direction perpendiculaire à la courbe de niveau
  • utiliser la valeur de pente pour déterminer la longueur de la ligne (plus longue en fonction de la pente plus forte)
  • donner une forme à chaque hachure (plus épaisse à la base, plus fine à son extrémité)

Pour finir et améliorer le rendu final, nous allons affecter une transparence aux hachures en fonction de leur exposition , par exemple plus transparentes quant elles font face au Nord et plus foncées quand elles sont orientées au Sud.

Pour commencer, cliquer sur le Type de symbole et sélectionnez « Générateur de géométrie » à la place de « Symbole simple »

type de symbole générateur de géométrie

Dans type de géométrie, sélectionnez Poliligne/Multi-polyligne, car ce que nous voulons générer c’est des lignes de hachure.

options du générateur de géométries

La fenêtre affiche $geometry. C’est à dire la valeur de géométrie contenue dans la couche. Nous allons remplacer ce texte par une expression qui construise les lignes de hachure.

Cette expression est la commande make_line(point de départ, point d’arrivée)

Comme nous connaissons le point de départ, c’est à dire le point déjà présent dans la couche, l’expression commencera par

make_line ( $ geometry ,

Pour calculer le point d’arrivée nous allons utiliser la commande project(point de départ, distance,direction)

Le point de départ est le point de la couche : $geometry.

Pour la distance, c’est à dire la longueur de notre hachure, nous voulons changer la longueur de la hachure en fonction de la pente à ce point – plus longue pour une pente plus raide, plus courte pour une pente plus faible. Les valeurs de pente sont un angle entre 0 et 90, 0 étant un sol plat et 90 une paroi verticale. Nous pouvons donc utiliser la pente pour trouver une valeur de distance dynamique.

Tout d’abord il faut convertir la valeur de la pente dans une plage comprise entre 0 et 1, que nous pourrons ensuite utiliser comme facteur multiplicatif d’une distance standard que nous définirons.

Étant donné que nous savons que les valeurs de pente sont entre 0 et 90, nous allons diviser la valeur par 90 pour obtenir une plage d’unités entre 0 et 1.

« Pente » / 90

Il faut compléter cette formule avec une valeur minimale de longueur de hachure quand la pente est nulle, ici nous allons utiliser la valeur de 100 m. Et la longueur maximale à ajouter quand la pente est de 90°, ici 200 m. Notre expression sera alors :

100 + 300 * « Pente »/90

Quand la pente sera de 0° la longueur de la hachure sera de 100 m et quand la pente sera de 90° la longueur sera de 400 m. Bien évidement, vous devrez ajuster ces valeurs en fonction de votre zone de travail.

Trouver la direction est relativement simple car nous avons déjà l’angle des points échantillonnés le long de la ligne du contour. Nous voulons que l’angle soit perpendiculaire au contour, donc tout ce que nous avons à faire est de soustraire 90 degrés à l’attribut « angle ».

Nous ajouterons également un peu de bruit aux lignes en ajoutant une valeur aléatoire entre 0 et 10 degrés. Tout ce qu’il reste à faire est de convertir la direction en radians, nécessaire pour la fonction project().

radians ( « angle » – 90) + rand(0,10)

La fonction complète sera donc:

make_line(
	$geometry,
	project(
		$geometry, 
		100 + 300 * "Pente" / 90, 
		radians(("angle" - 90) + rand(0, 10))
	)
)

Rentrez ce code dans la fenêtre correspondante

fonction de génération des hachures

Cliquez sur Appliquer pour voir le résultat et modifier si nécessaire les valeurs utilisées.

résultat de la génération de géométries pour les hachures

Changer l’épaisseur de chaque hachure

Nous pouvons aller un peu plus loin et réduire les hachures afin qu’elles soient légèrement plus épaisses à la base du contour, diminuant jusqu’à un point lorsqu’elles s’éloignent du contour.

Sélectionnez la ligne simple dans le générateur de géométrie pour la couche hachure. Nous allons utiliser une nouvelle fonctionnalité dans QGIS 3.20 appelée lignes interpolées, donc sélectionnez-la dans le menu déroulant du type de symbole.

utilisation de la fonction qgis 3.20 ligne interpolée

Nous voulons que les lignes soient plus épaisses à une extrémité, alors sélectionnez Largeur variable dans la liste déroulante de la largeur de trait.

paramétrer la largeur variable

Rentrez les valeurs suivantes :

  • Valeur de départ = 1 , pour que la base soit la partie la plus épaisse
  • Valeur d’arrivée = 0
  • Valeur min = 0
  • Valeur max = 1
  • Largeur min= 0
  • Largeur max = 30
  • Changez la valeur de Millimètres en mètres à l’échelle.

Comme pour le reste, vous serez peut-être amené à changer la valeur de largeur max en fonction de votre zone de travail.

paramétrage de la ligne interpolée

Il ne nous reste qu’à voir comment changer l’opacité en fonction de l’exposition.

Modifier la transparence en fonction de l’exposition

Pour définir l’opacité de la ligne interpolée nous devons modifier le type de couleur. Ouvrez le menu déroulant du mode de couleur et sélectionnez Couleur variable.

changer en couleur variable

Rentrez les valeurs suivantes:

  • Pour valeur de départ et valeur d’arrivée rentrez l’expression 1 – abs(« Exposition » – 180)/ 180
  • Pour Valeur min rentrez 0
  • Pour Valeur max rentrez 1
  • Laissez le mode d’interpolation à Linéaire

paramétrage de la couleur variable

Dans la fenêtre des classes, sélectionnez les classes 0.25, 0.5 et 0.75 et cliquez sur le signe – pour les effacer

garder que les deux classes extrêmes

Double cliquez sur la couleur correspondante à la classe 0 et définissez une couleur Noire et transparente

paramétrage couleur noire transparente

Double cliquez sur la couleur correspondante à la classe 1 et définissez une couleur Noire et transparente à 75%

paramétrage couleur noire 75% transparente

Vous devez avoir une fenêtre comme suit

fenêtre finale de paramétrage

Cliquez sur OK et le résultat final apparaît

résultat final du hachurage

Habillage avec l’ajout d’éléments du paysage

Le relief hachuré est terminé. Reste à ajouter des éléments de paysage pour rendre la carte plus attractive.

En principe vous devez disposer d’autres couches permettant d’ajouter les cours d’eau, etc. Si ce n’est pas le cas, il y a la possibilité d’ajouter rapidement des éléments à partir d’OpenStreetMaps.

Pour cela vous avez besoin du plugin QuickOSM. Installez le plugin si ce n’est pas déjà le cas.

Il est possible de télécharger tous les éléments OpenStreetMap dont nous avons besoin avec une seule grande requête. Mais dans ce cas tous les différents types d’éléments seront mélangés dans une seule couche et ceci rendra le travail de symbologie plus ardu.

Ici nous chargerons chaque type d’élément pas séparé pour simplifier la mise en place de la symbologie.

Ajout d’entités

Cliquez sur le bouton QuickOSM

bouton QuickOSM

La fenêtre de requête s’ouvre

fenêtre de requêtes QuickOSM

Pour chaque type d’élément que vous souhaitez vous devez sélectionner une Cle et une Valeur. Les menus déroulants vous seront utiles pour retrouver les élément recherchés. Vous pouvez rentrer plusieurs couples Clés/Valeur en une seule requête en cliquant sur le signe + dans la colonne Ajouter. Dans ce cas pensez à modifier la première colonne en remplaçant le AND par défaut par OR.

Avant d’exécuter la requête vous devez définir l’étendue de téléchargement. Modifier la condition « Dans » par « Emprise d’une couche » et assurez vous que la couche utilisée soit la couche avec le hachurage.

étendue de la zone de requête

Cliquez alors sur Exécuter la requête. Chaque requête, quand elle est exécutée, génère une couche virtuelle. Elle porte le nom de la première paire Clé/Valeur de la requête.

Par exemple, voici le résultat pour obtenir les zones forestières (Clé=natural, Valeur= forest).

Si vous voulez garder cette information (les couches virtuelles sont perdues à la fermeture de QGis), vous devez Enregistrer la couche dans un fichier permanent (par exemple le gpkg du MNT).

enregistrement du résultat de la requête QuickOSM dans un gpkg

Vous pouvez alors définir la symbologie souhaitée pour la couche et l’enregistrer comme symbologie par défaut dans le fichier gpkg.

Par exemple, si on défini une couleur noire pour les forêts avec une transparence de 20% nous aurons le rendu suivant:

ajout des zones forestières

Pour garder cette symbologie par défaut, ouvrez la fenêtre de propriétés de la couche -> symbologie, cliquez sur le bouton Style->Enregistrer par défaut

enregistrement de la symbologie par défaut

Puis cliquez sur le bouton « Base de données source pour qu’il soit enregistré dans le fichier gpkg.

choix de l’enregistrement dans le fichier gpkg

En plus des forêts, nous allons ajouter, en suivant les mêmes étapes:

Les cours d’eau avec deux paires Clé/valeur:

waterway/river et

waterway/stream

Nous appliquerons un symbole en ligne trait-pointillé noir avec une transparence de 60%

ajout des cours d'eau à la carte

Les lacs et étangs avec la paire Clé/valeur

natural/water

auxquels nous appliquerons un symbole noir avec une opacité de 60%

ajouts des lacs et étangs à la carte

Les routes avec deux paires Clé/Valeur

highway/primary et

highway/trunk

auxquels nous appliquerons un symbole de ligne noire avec une épaisseur de 0.75

ajout des routes à la carte

Les zones rocheuses à nu avec deux paires de Cle/valeur

natural/bare_rock et

natural/scree

Auxquelles nous affecterons un symbole SVG de roches éparses

symbole rochers nus svg

ajout des zoners de rochers nus à la carte

Pour finir nous allons ajouter des points de toponymie: villages et pics remarquables avec les Clé/valeur natural/peak et place/village

Et nous avons notre résultat final

ajout des villages et pics remarquables à la carte

Et voici une vue zoompée de cette carte finale :

zoom sur une zone de la carte finale

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *