Retour au blog

Générer un Hillshade global à partir des données SRTM (DEM → WebP tiles)

Publié le 04 mar. 2026

Les modèles numériques de terrain (DEM – Digital Elevation Model) permettent de représenter le relief terrestre. Une des représentations les plus utilisées en cartographie est le hillshade, qui simule l’ombre portée sur le relief pour donner une impression de volume.

Dans cet article, nous allons voir comment générer un hillshade global ou régional à partir des données SRTM, puis le convertir en tuiles raster WebP utilisables sur un serveur web cartographique.

La méthode utilisée s’inspire du projet suivant :
https://github.com/nst-guide/terrain

Actuellement, une grande partie de la topographie mondiale utilisée dans les applications web est générée à partir des données SRTM30. Ces données servent également à générer les courbes de niveau, dérivées du hillshade.

 

1. Télécharger les données topographiques

Les données de terrain proviennent principalement :

  • SRTM (Shuttle Radar Topography Mission)

  • EU-DEM pour l’Europe

Dans ce guide, nous utiliserons SRTM GL1 (30m de résolution).

Historiquement, les données étaient directement disponibles via la NASA, mais ce service n’est plus accessible. Elles sont maintenant disponibles via OpenTopography.

Accès aux métadonnées :

https://portal.opentopography.org/datasetMetadata

Pour télécharger uniquement une zone spécifique :

https://dwtkns.com/srtm30m/

Résolutions disponibles

  • SRTM GL3 : résolution de 90m

  • SRTM GL1 : résolution de 30m (taille totale d’environ 126 Go)

Les données sont stockées sur Amazon S3.

 

Installation de AWS CLI

Pour télécharger les données depuis le bucket S3 :

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install

Ensuite, se placer dans le répertoire de destination et lancer :

aws s3 cp s3://raster/SRTM_GL1/ . --recursive --endpoint-url https://opentopography.s3.sdsc.edu --no-sign-request

Cette commande télécharge :

  • l’ensemble des fichiers TIF SRTM

  • le fichier VRT global

Le fichier VRT utilise la valeur -32768 pour représenter les zones sans données (NoData).

 

Tracez votre propre parcours

MapPlanner vous aide à calculer les distances, le dénivelé, la durée et à planifier vos randonnées, courses à pied et sorties vélo sur une carte interactive.

  • Calcul automatique des distances et du dénivelé
  • Cartes topographiques, satellite et IGN
  • Export GPX/KML pour votre GPS
  • Suivi GPS en temps réel

2. Installer les outils nécessaires

Les données SRTM sont fournies au format GeoTIFF.
Pour les exploiter dans une application web cartographique, il faut :

  1. les reprojeter

  2. les transformer en tuiles raster

  3. les encoder en WebP

Plusieurs outils sont nécessaires.

 

Installer GDAL

GDAL est la bibliothèque principale pour manipuler les données raster et vectorielles.

sudo apt-get install gdal-bin

Installer rio-rgbify

L’outil rio-rgbify (développé par Mapbox) permet de convertir des données d’élévation en tuiles raster utilisables dans les moteurs de rendu cartographiques.

git clone git@github.com:mapbox/rio-rgbify.git cd rio-rgbify

Une correction doit être apportée dans le fichier :

nano ./rio_rgbify/mbtiler.py

Modifier la ligne suivante :

w, s, e, n = transform_bounds(*[src_crs, "epsg:4326"] + bbox, densify_pts=2)

Installer ensuite le package globalement.

sudo apt install python3-pip python3-setuptools sudo python3 setup.py install

3. Générer un VRT global

Lorsque les données sont réparties en plusieurs fichiers GeoTIFF, il est pratique de créer un VRT (Virtual Raster).

Un VRT agit comme une mosaïque virtuelle de tous les fichiers raster.

gdalbuildvrt -vrtnodata -32768 SRTM_GL1_srtm.vrt SRTM_GL1_srtm/*.tif

Ici :

  • -vrtnodata -32768 définit la valeur NoData

  • tous les fichiers .tif sont combinés dans un seul raster virtuel

 

4. Reprojection des données

Pour une utilisation web (notamment avec Mapbox GL ou MapLibre), les données doivent être projetées en EPSG:3857 (Web Mercator).

Pour l’Europe :

gdalwarp -r cubicspline -s_srs EPSG:4269 -t_srs EPSG:3857 -dstnodata 0 -co COMPRESS=DEFLATE data/data.vrt data/data_epsg3857.vrt

Explication :

  • -r cubicspline : interpolation pour un rendu plus lisse

  • -s_srs : système de coordonnées source

  • -t_srs : projection cible

  • -dstnodata 0 : valeur pour les zones vides

  • COMPRESS=DEFLATE : compression du raster

 

5. Générer les tuiles raster MBTiles

Les données doivent maintenant être transformées en tuiles raster pyramidales.

L’outil rio rgbify permet de générer directement un fichier MBTiles contenant les tuiles.

rio rgbify -b -10000 -i 0.1 --min-z 6 --max-z 12 -j 22 --format webp SRTM_GL1_srtm.vrt data_hillshade.mbtiles

Paramètres principaux :

  • --min-z 6 : zoom minimum

  • --max-z 12 : zoom maximum

  • -j 22 : parallélisation

  • --format webp : compression des tuiles

  • -b et -i : paramètres de codage de l’élévation

 

6. Génération par zones

Pour éviter les traitements trop lourds, il est possible de générer les données par régions.

Chaque région génère un fichier MBTiles, puis tous les fichiers peuvent être fusionnés avec tippecanoe :

tile-join -pk -o europe.mbtiles *.mbtiles

Option :

  • -pk : empêche l’outil de supprimer les tuiles supérieures à 500 kB

 

7. Performance et ressources nécessaires

Temps de génération

  • Amérique du Nord :

    • 40 Go de RAM

    • 15h de génération

    • 11 processus

  • Monde entier :

    • 37h

    • 12 processus

    • jusqu’à 200 Go de RAM

 

Espace disque

Pour un traitement global :

  • MBTiles final : 182 Go

  • WebP décompressé : 208 Go

  • Nombre de tuiles : 8 940 823

 

8. Limites de Tileserver

Un fichier MBTiles global est trop volumineux pour être servi efficacement par tileserver.

La solution consiste à extraire les tuiles raster dans une structure de fichiers.

 

9. Décompresser les MBTiles en tuiles WebP

Installer mb-util.

git clone https://github.com/mapbox/mbutil.git cd mbutil sudo python3 setup.py install

Décompresser les tuiles :

mb-util data_hillshade_12.mbtiles tiles --image_format=webp

Structure générée :

tiles/{z}/{x}/{y}.webp

10. Déployer les tuiles sur le serveur

Copier les tuiles dans :

/home/www/hillshade/data

Créer ensuite un fichier TileJSON.

nano /home/www/hillshade/data/data_hillshade_12.json

Contenu :

{"tiles":["https://hillshade.map-planner.com/data/{z}/{x}/{y}.webp"],"name":"Europe Hillshade 25m WEBP","format":"webp","basename":"europe_hillshade_12","id":"europe_hillshade_12","description":"Europe Hillshade 25m WEBP","version":"1","type":"baselayer","minzoom":6,"maxzoom":12,"center":[2.8125,46.779279304705625,9],"attribution":"EU-DEM","tilejson":"2.0.0"}

Ce fichier décrit :

  • l’URL des tuiles

  • les niveaux de zoom

  • les métadonnées

 

11. Configurer le serveur web (Caddy)

Exemple de configuration Caddy :

sudo nano /etc/caddy/Caddyfile

Configuration :

hillshade....com { root * /home/www/hillshade file_server header { Access-Control-Allow-Origin "*" Access-Control-Allow-Methods "POST, GET, OPTIONS, PUT, DELETE" Access-Control-Allow-Headers "*" X-Content-Type-Options nosniff X-XSS-Protection "1; mode=block;" X-Robots-Tag none X-Frame-Options SAMEORIGIN Cache-Control "public, max-age=5184000" } @blocked { path *.mbtiles } respond @blocked 403 # encode gzip log { output file /var/log/caddy/maps_access.log } }

Cette configuration :

  • sert les tuiles statiques

  • active le cache navigateur

  • bloque l’accès direct aux fichiers .mbtiles

 

12. Ajouter la source dans Maputnik pour vérifier

Dans Maputnik, ajouter une source de type :

Raster DEM

avec l’URL TileJSON (déclaré dans le fichier Caddyfile) :

https://hillshade....com/data/europe_hillshade_12.json

Les tuiles peuvent ensuite être utilisées pour :

  • hillshade dynamique

  • rendu relief

  • analyse terrain

Essayez toutes les fonctionnalités gratuitement

Profitez de 7 jours d'essai gratuit avec un accès complet à toutes les fonctionnalités Explorer. Sans engagement — découvrez la planification d'itinéraires, le suivi GPS, les exports illimités et bien plus.

  • Planification d'itinéraires illimitée
  • Position GPS en temps réel
  • Exports GPX/KML/FIT illimités
  • Import de fichiers depuis vos appareils GPS

Articles similaires

Ce que disent nos utilisateurs Explorer

⭐⭐⭐⭐⭐

Grâce à MapPlanner, j’ai planifié un parcours de jogging de 8 km autour de chez moi en quelques minutes. La distance et le temps estimé étaient parfaits pour ma séance matinale avant le travail.

Claire M. Nouvelle joggeuse
⭐⭐⭐⭐⭐

Grâce au mode isochrone, je planifie mes randos en un clin d'œil ! Je vois directement où je peux aller avec mon temps disponible. Le suivi GPS est top pour ne jamais me perdre en montagne.

Marie L. Randonneuse passionnée
⭐⭐⭐⭐⭐

On a préparé une boucle vélo de 40 km entre amis et exporté la trace en GPX. Tout le monde a pu suivre le même parcours sur sa montre, sans se perdre. Organisation parfaite !

Julien R. Sortie vélo du dimanche
⭐⭐⭐⭐⭐

Avant une randonnée en forêt, j’ai vérifié le dénivelé et la durée. Le tracé a suivi les vrais sentiers, ce qui m’a évité de mauvaises surprises. Très fiable !

Sophie L. Randonneuse débutante
⭐⭐⭐⭐⭐

Je voulais une balade facile pour mes enfants. J’ai défini 5 km max et MapPlanner m’a permis de tracer une boucle idéale. On a passé un super moment en famille.

Nicolas D. Balade en famille
⭐⭐⭐⭐⭐

J’aime planifier mes sorties à l’avance. J’ai sauvegardé plusieurs tracés pour les week-ends. Je gagne un temps fou.

Martine G. Randonneuse par intermittence
⭐⭐⭐⭐⭐

En explorant les parcours autour de chez moi, j’ai découvert de super itinéraires que je ne connaissais pas du tout. MapPlanner m’a ouvert de nouvelles zones à explorer.

Olivier P. Découverte de parcours
⭐⭐⭐⭐⭐

Je garde un œil sur mon évolution grâce à l’historique. Je compare mes vitesses et distances de course au fil des mois, c’est motivant !

Anaïs T. Suivi des performances
⭐⭐⭐⭐⭐

Pour notre sortie VTT en club, on a créé le parcours et envoyé le GPX à tout le monde. Résultat : aucun écart, tout le groupe ensemble du début à la fin.

Romain B. Sortie en club
⭐⭐⭐⭐⭐

J’adore prendre des photos en randonnée. MapPlanner place automatiquement mes photos sur la carte. C’est génial pour revoir le parcours et partager avec mes amis.

Laetitia F. Sortie découverte
⭐⭐⭐⭐⭐

Selon l’activité, je change la carte : topo pour la montagne, rue pour la ville, satellite pour repérer les zones. Ça rend la préparation super intuitive.

Hugo S. Randonneur expérimenté
⭐⭐⭐⭐⭐

MapPlanner estime désormais mes temps selon mon propre rythme. Je sais précisément combien de temps durera ma prochaine sortie. Parfait pour m'organiser au dernier moment.

Isabelle J. Joggeuse en devenir