BD TOPO en pratique : les bâtiments en 3D avec MapLibre

Hauteurs, usages, altitudes et identifiant RNB des bâtiments de la BD TOPO : y accéder par WFS ou tuiles vectorielles et les extruder en 3D dans MapLibre.

La BD TOPO de l'IGN décrit tout le territoire français, objet par objet : bâtiments, routes, cours d'eau, végétation, limites administratives… Gratuite depuis 2021, elle contient pour chaque bâtiment sa hauteur, ses altitudes et souvent son usage. De quoi construire une carte 3D réaliste d'une ville en quelques lignes de MapLibre, ou calculer des volumes et des densités dans un SIG.

La BD TOPO en bref

  • Contenu : une dizaine de thèmes (bâti, transport, hydrographie, administratif, zones d'activité, végétation, services et activités…), avec une précision métrique.
  • Mise à jour en continu, avec des éditions régulières.
  • Licence Ouverte Etalab 2.0 : réutilisation libre, y compris commerciale, en citant l'IGN.
  • Téléchargement par département (GeoPackage, Shapefile) sur cartes.gouv.fr, ou interrogation à la demande par WFS et en tuiles vectorielles.

La couche « batiment »

AttributContenu
hauteurHauteur en mètres du sol jusqu'au bas du toit (la gouttière) : c'est exactement altitude_minimale_toit − altitude_minimale_sol
altitude_minimale_sol, altitude_maximale_toit…Altitudes du sol et du toit (NGF-IGN69)
nombre_d_etages, nombre_de_logementsIssus des fichiers fonciers, quand l'appariement a réussi
usage_1, usage_2Résidentiel, Commercial et services, Industriel, Agricole, Religieux, Sportif, Annexe… ou Indifférencié
nature, construction_legereType de construction (château, église, serre…), bâtiment léger ou non
identifiants_rnbIdentifiant du Référentiel national des bâtiments, pour croiser avec d'autres bases

Toutes les colonnes ne sont pas remplies. Sur un échantillon de 382 bâtiments du centre d'Annecy, la hauteur est connue pour 375, le nombre d'étages pour 166 seulement, et 170 ont un usage « Indifférencié ». Prévoyez une valeur par défaut. Quand la hauteur manque, une estimation à 3 m par étage est l'usage courant.

Accéder aux bâtiments

En tuiles vectorielles : idéal pour la 3D

La Géoplateforme diffuse la BD TOPO en tuiles vectorielles, sans clé, avec tous les attributs du bâti à partir du zoom 15 :

https://data.geopf.fr/tms/1.0.0/BDTOPO/{z}/{x}/{y}.pbf     (couche « batiment », zooms 15 à 19)

En WFS : pour récupérer les objets

https://data.geopf.fr/wfs/ows?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature
  &TYPENAMES=BDTOPO_V3:batiment&OUTPUTFORMAT=application/json&SRSNAME=EPSG:4326
  &BBOX=45.8985,6.1255,45.9015,6.1300,urn:ogc:def:crs:EPSG::4326

Comme pour le cadastre, l'emprise s'écrit latitude d'abord avec ce code de système.

Extruder les bâtiments dans MapLibre

Le type de couche fill-extrusion élève chaque polygone à une hauteur lue dans ses attributs :

map.addSource('bdtopo', {
  type: 'vector', minzoom: 15, maxzoom: 19,
  tiles: ['https://data.geopf.fr/tms/1.0.0/BDTOPO/{z}/{x}/{y}.pbf'],
  attribution: '© IGN – BD TOPO'
});

map.addLayer({
  id: 'batiments-3d', type: 'fill-extrusion', source: 'bdtopo', 'source-layer': 'batiment',
  minzoom: 15,
  paint: {
    // Hauteur connue, sinon 3 m par étage, sinon 3 m
    'fill-extrusion-height': ['coalesce', ['get', 'hauteur'], ['*', 3, ['get', 'nombre_d_etages']], 3],
    'fill-extrusion-base': 0,
    'fill-extrusion-color': ['match', ['get', 'usage_1'],
      'Résidentiel', '#f2c14e',
      'Commercial et services', '#e07a5f',
      'Industriel', '#8d99ae',
      'Religieux', '#9b5de5',
      /* autres */ '#cfd8dc'],
    'fill-extrusion-opacity': 0.9
  }
});

map.easeTo({ pitch: 60, bearing: -20 });   // inclinaison pour voir le relief des bâtiments

Jusqu'au faîtage. hauteur s'arrête à la gouttière : sur le centre d'Annecy, le point le plus haut du toit est en moyenne 2,8 m plus haut. Pour une silhouette plus fidèle, extrudez jusqu'à ['-', ['get', 'altitude_maximale_toit'], ['get', 'altitude_minimale_sol']] quand ces deux altitudes sont renseignées.

Pour colorer selon la hauteur plutôt que l'usage, remplacez le match par une interpolation : ['interpolate', ['linear'], ['get', 'hauteur'], 0, '#fff3c4', 10, '#f6904c', 30, '#8e1d2c']. Le générateur Palettes et styles de carte produit ce type d'expression.

Analyses classiques

  • Volume bâti : emprise au sol × hauteur, sommé par îlot ou par commune.
  • Densité : emprise bâtie rapportée à la surface de la parcelle (coefficient d'emprise au sol), à comparer avec le règlement du PLU.
  • Ombres et vues : avec les altitudes du sol et du toit, on peut simuler l'ensoleillement ou les co-visibilités.
  • Dans QGIS, le rendu « 2,5 D » de la symbologie donne un effet de volume. L'extension Qgis2threejs exporte une vraie scène 3D pour le web, et la vue cartographique 3D intégrée à QGIS extrude directement la couche.

Démonstration

Les bâtiments du centre d'Annecy, extrudés en direct à partir des tuiles vectorielles de la BD TOPO.

À essayer : faites pivoter la vue (clic droit ou Ctrl + glisser), passez de la couleur par usage à la couleur par hauteur, puis cliquez un bâtiment pour lire sa hauteur, ses altitudes et son identifiant RNB. Les bâtiments gris sont d'usage « indifférencié ».

Licences : textes et schémas sous licence CC BY-SA 4.0 (réutilisation libre en citant CartoForge et en partageant à l'identique) ; extraits de code sous licence MIT, à copier librement dans vos projets.
Liens, services et noms de couches vérifiés le 15/10/2026. Un lien cassé ? Signalez-le.