BDNB — Base de Données Nationale des Bâtiments
32 M bâtiments CSTB : année de construction, matériaux, nombre de logements, usage. Croisés avec DVF par proximité spatiale.
Source et provenance
La BDNB est produite par le CSTB (Centre Scientifique et Technique du Bâtiment) sous Licence Ouverte 2.0 (Etalab). Elle est disponible librement sur data.gouv.fr et en téléchargement direct depuis le S3 CSTB.
Normi intègre le millésime 2025-07-a, publié en juillet 2025. Il couvre la France métropolitaine (96 départements, hors DOMTOM). Les données BDNB sont mise à jour annuellement par le CSTB.
Couverture
Jointure DVF × BDNB
Normi relie chaque transaction DVF au bâtiment BDNB le plus proche par proximité spatiale KNN (k=1, distance ≤ 200 m). L'algorithme est identique à celui utilisé pour la jointure DVF×DPE : tri binaire par latitude par département, puis filtrage par fenêtre de longitude (~200 m), puis calcul Haversine exact.
match_distance_m indique la distance exacte de correspondance — une valeur > 50 m peut indiquer une imprécision de géolocalisation DVF ou un bâtiment démoli/reconstruit.La jointure a été réalisée localement en Python/numpy en 22 minutespour 17 M×32 M paires — équivalent à 30h+ en Postgres (KNN sur géographie).
Géométrie
Les polygones BDNB sont fournis en Lambert 93 (EPSG:2154) sous forme de WKT MultiPolygon. Normi calcule le centroïde de chaque polygone et le reprojette en WGS84 (EPSG:4326) via shapely + pyproj. Les coordonnées latitude / longitude dans bdnb_batiments sont ces centroïdes reprojetés.
Champs exposés
La table bdnb_batiments est une dénormalisation de 4 tables sources BDNB, jointurées sur batiment_groupe_id.
| Champ | Type | Description |
|---|---|---|
| batiment_groupe_id | string | Identifiant BDNB unique du groupe de bâtiments (ex. bdnb-bg-XXXX-XXXX-XXXX) |
| code_commune_insee | string | Code INSEE de la commune (5 chiffres) |
| libelle_commune | string | Nom de la commune en majuscules |
| latitude / longitude | number | Centroïde du polygone de bâtiment reprojeté en WGS84 (EPSG:4326) |
| annee_construction | number | Année de construction (source FFO/BD TOPO) |
| nb_logements | number | Nombre de logements dans le groupe de bâtiments |
| nb_etages | number | Nombre de niveaux |
| mat_mur | string | Matériau des murs extérieurs (PIERRE, BRIQUES, BÉTON, etc.) |
| mat_toit | string | Matériau de toiture (TUILES, ARDOISES, ZINC, etc.) |
| usage_principal | string | Usage BDNB : Résidentiel collectif, Résidentiel individuel, Tertiaire, Mixte… |
| usage_niveau_1 | string | Classification FFO de niveau 1 |
| dvf_nb_mutations | number | Nombre de mutations DVF 2014–2021 pré-jointures par BDNB |
| dvf_prix_m2_median | number | Prix médian/m² agrégé par BDNB sur 2014–2021 |
Tables sources (4 sur ~50)
Normi extrait uniquement 4 tables des ZIPs BDNB par département :
batiment_groupe.csv— identifiant, géométrie Lambert 93, communebatiment_groupe_ffo_bat.csv— année, matériaux, nb logements (source FFO/BD TOPO)batiment_groupe_dvf_open_statistique.csv— stats DVF agrégées 2014–2021 pré-calculées par CSTBbatiment_groupe_synthese_propriete_usage.csv— usage principal BDNB
Les autres tables (DPE, parcelles, relations, etc.) ne sont pas chargées dans Normi mais restent disponibles dans les ZIPs CSTB originaux.
Endpoints disponibles
- API REST BDNB — 4 endpoints : contexte bâtimentaire, stats par âge, score rénovation, stock commune
- Outils MCP BDNB — get_building_context, get_age_adjusted_stats, get_renovation_score, get_bdnb_stats