Files
geo/cron/batiments.md
pierre 2f5946a184 feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 18:26:27 +01:00

1353 lines
43 KiB
Markdown

# Documentation BDNB - Base de Données Nationale des Bâtiments
## Vue d'ensemble
La Base de Données Nationale des Bâtiments (BDNB) est une base de données géographique exhaustive qui agrège de nombreuses sources sur les bâtiments français :
- **Source** : CSTB (Centre Scientifique et Technique du Bâtiment) / ADEME
- **Couverture** : Département 03 (Allier)
- **Total lignes** : ~6,08 millions de lignes
- **Taille totale** : ~1,1 Go
- **Format** : CSV avec géométries WKT (Well-Known Text)
- **Projection** : EPSG:2154 (Lambert 93)
### Principes de structuration
La BDNB s'articule autour de 3 niveaux géographiques :
1. **batiment_groupe** : Groupe de bâtiments (échelle de l'adresse)
2. **batiment_construction** : Bâtiment individuel (empreinte au sol)
3. **parcelle** : Parcelle cadastrale
Les données thématiques sont attachées principalement au niveau `batiment_groupe`.
---
## Tables principales
### 1. batiment_groupe.csv ⭐ (Table centrale)
**Rôle** : Table pivot contenant les groupes de bâtiments identifiés à l'échelle de l'adresse.
**Statistiques** :
- Lignes : 271 795
- Taille : 78 Mo
- Clé primaire : `batiment_groupe_id`
**Colonnes** :
```
geom_groupe Géométrie MULTIPOLYGON en WKT
batiment_groupe_id Identifiant unique (ex: bdnb-bg-11HT-AKW6-6RW8)
code_departement_insee Code département (03)
s_geom_groupe Surface du groupe en m²
code_iris Code IRIS INSEE
code_commune_insee Code commune INSEE (5 caractères)
libelle_commune_insee Nom de la commune
code_epci_insee Code EPCI (intercommunalité)
contient_fictive_geom_groupe Indicateur de géométrie fictive (0/1)
```
**Exemple** :
```
batiment_groupe_id: bdnb-bg-11HT-AKW6-6RW8
code_commune_insee: 03300
libelle_commune_insee: Vaumas
s_geom_groupe: 257 m²
```
**Usage** : Point d'entrée pour toutes les jointures avec les données thématiques.
---
### 2. batiment_construction.csv
**Rôle** : Détails sur chaque construction individuelle composant un groupe de bâtiments.
**Statistiques** :
- Lignes : 405 196
- Taille : 97 Mo
- Clé primaire : `batiment_construction_id`
- Clé étrangère : `batiment_groupe_id`
**Colonnes** :
```
WKT Géométrie MULTIPOLYGON
batiment_construction_id Identifiant unique (ex: bdnb-bc-CK5L-44YF-S14M)
batiment_groupe_id Lien vers batiment_groupe
code_departement_insee Code département
code_iris Code IRIS
code_commune_insee Code commune
s_geom_cstr Surface de construction en m²
hauteur Hauteur du bâtiment en mètres
altitude_sol Altitude du sol en mètres
fictive_geom_cstr Indicateur de géométrie fictive
```
**Relation** : 1 batiment_groupe → N batiment_construction (1,5 constructions par groupe en moyenne)
---
### 3. adresse.csv ⭐ (Lien avec BAN)
**Rôle** : Référentiel des adresses issues de la Base Adresse Nationale (BAN).
**Statistiques** :
- Lignes : 182 132
- Taille : 26 Mo
- Clé primaire : `cle_interop_adr`
**Colonnes** :
```
WKT Géométrie POINT (coordonnées de l'adresse)
cle_interop_adr Clé d'interopérabilité BAN (ex: 03001_0013_00004)
code_departement_insee Code département
numero Numéro dans la voie
rep Répétition (bis, ter, etc.)
type_voie Type de voie (rue, avenue, place, etc.)
nom_voie Nom de la voie
libelle_adresse Adresse complète formatée
code_postal Code postal
code_commune_insee Code commune INSEE
libelle_commune Nom de la commune
source Source des données (BAN)
```
**Exemple** :
```
cle_interop_adr: 03001_0013_00004
libelle_adresse: 4 Place des Anciens Combattants 03200 Abrest
```
**Usage** : Jointure avec votre base d'adresses via `cle_interop_adr` ou `libelle_adresse`.
---
### 4. parcelle.csv
**Rôle** : Parcelles cadastrales du département.
**Statistiques** :
- Lignes : 733 568
- Taille : 497 Mo
- Clé primaire : `parcelle_id`
**Colonnes** :
```
geom_parcelle Géométrie MULTIPOLYGON de la parcelle
parcelle_id Identifiant parcelle cadastrale (ex: 03001000ZC0568)
code_departement_insee Code département
code_commune_insee Code commune
s_geom_parcelle Surface de la parcelle en m²
```
**Format parcelle_id** : CODE_COMMUNE (5) + SECTION (3) + NUMERO (4)
- Exemple : `03001000ZC0568` → commune 03001, section 000ZC, numéro 0568
---
## Tables de relations (rel_*)
Ces tables établissent les liens many-to-many entre les entités principales.
### rel_batiment_groupe_adresse.csv ⭐ (Lien BAN)
**Rôle** : Association entre bâtiments et adresses BAN.
**Statistiques** :
- Lignes : 209 054
- Taille : 34 Mo
**Colonnes** :
```
WKT Géométrie MULTILINESTRING (ligne entre bâtiment et adresse)
batiment_groupe_id Référence batiment_groupe
cle_interop_adr Référence adresse BAN
code_departement_insee Code département
classe Classe de relation (non renseigné)
lien_valide Validité du lien (1=valide)
origine Origine du lien (ex: "Association Geometrique")
```
**Usage critique** : Cette table permet de faire le pont entre vos adresses BAN et les bâtiments BDNB.
**Exemple de jointure** :
```sql
SELECT
bg.*,
a.libelle_adresse
FROM batiment_groupe bg
JOIN rel_batiment_groupe_adresse rel ON bg.batiment_groupe_id = rel.batiment_groupe_id
JOIN adresse a ON rel.cle_interop_adr = a.cle_interop_adr
WHERE rel.lien_valide = 1
```
---
### rel_batiment_groupe_parcelle.csv
**Rôle** : Association entre bâtiments et parcelles cadastrales.
**Statistiques** :
- Lignes : 293 578
- Taille : 13 Mo
**Colonnes** :
```
batiment_groupe_id Référence batiment_groupe
parcelle_id Référence parcelle cadastrale
code_departement_insee Code département
parcelle_principale Indicateur de parcelle principale (1=oui, 0=non)
```
**Note** : Un bâtiment peut être à cheval sur plusieurs parcelles. Le flag `parcelle_principale` indique la parcelle principale.
---
### rel_batiment_groupe_dpe_logement.csv
**Rôle** : Association entre bâtiments et DPE individuels.
**Statistiques** :
- Lignes : ~186 000
- Taille : 12 Mo
**Colonnes** :
```
batiment_groupe_id Référence batiment_groupe
identifiant_dpe Référence vers dpe_logement
code_departement_insee Code département
fiabilite_rattachement Qualité du rattachement
score_rattachement Score de confiance
```
**Usage** : Lier les bâtiments aux DPE détaillés de la table `dpe_logement.csv`.
---
### Autres tables rel_*
| Table | Lignes | Rôle |
|-------|--------|------|
| rel_batiment_construction_adresse.csv | ~620k | Lien constructions ↔ adresses |
| rel_batiment_construction_rnb.csv | ~480k | Lien constructions ↔ RNB (référentiel bâtiments) |
| rel_batiment_groupe_bdtopo_bat.csv | ~464k | Lien bâtiments ↔ BDTOPO |
| rel_batiment_groupe_dvf_open.csv | ~72k | Lien bâtiments ↔ transactions DVF |
| rel_batiment_groupe_merimee.csv | ~306k | Lien bâtiments ↔ monuments historiques |
| rel_batiment_groupe_proprietaire.csv | ~21k | Lien bâtiments ↔ propriétaires |
| rel_batiment_groupe_rnc.csv | ~3,3k | Lien bâtiments ↔ copropriétés |
---
## Tables thématiques
### Données énergétiques
#### batiment_groupe_dpe_representatif_logement.csv ⭐
**Rôle** : DPE représentatif agrégé par bâtiment (le plus complet).
**Statistiques** :
- Lignes : 32 559
- Taille : 27 Mo
- **102 colonnes** (très détaillé)
**Colonnes principales** :
```
batiment_groupe_id Référence bâtiment
identifiant_dpe ID du DPE représentatif
arrete_2021 DPE nouvelle méthode (0/1)
type_batiment_dpe maison / appartement
periode_construction_dpe Période de construction
annee_construction_dpe Année de construction
nombre_niveau_logement Nombre d'étages du logement
nombre_niveau_immeuble Nombre d'étages de l'immeuble
surface_habitable_logement Surface habitable en m²
conso_5_usages_ep_m2 Consommation énergie primaire (kWh/m²/an)
conso_5_usages_ef_m2 Consommation énergie finale (kWh/m²/an)
emission_ges_5_usages_m2 Émissions GES (kg CO2/m²/an)
classe_bilan_dpe Classe DPE (A à G)
classe_emission_ges Classe GES (A à G)
# Chauffage
type_energie_chauffage Énergie (électricité, gaz, fioul, bois, etc.)
type_generateur_chauffage Type de générateur
type_installation_chauffage individuel / collectif
# Eau chaude sanitaire (ECS)
type_energie_ecs Énergie ECS
type_generateur_ecs Type de générateur ECS
# Isolation
type_isolation_mur_exterieur ITI / ITE / non isolé
u_mur_exterieur Coefficient U des murs (W/m²K)
type_vitrage simple / double / triple vitrage
type_materiaux_menuiserie bois / pvc / métal / aluminium
type_isolation_plancher_bas Isolation du plancher
type_isolation_plancher_haut Isolation du toit
# Surfaces
surface_mur_exterieur Surface des murs en m²
surface_vitree_nord Surface vitrée nord en m²
surface_vitree_sud Surface vitrée sud en m²
surface_plancher_bas_totale Surface plancher en m²
```
**Couverture** : ~12% des bâtiments ont un DPE représentatif.
---
#### batiment_groupe_dpe_statistique_logement.csv
**Rôle** : Statistiques agrégées des DPE par bâtiment (plusieurs DPE moyennés).
**Statistiques** :
- Lignes : ~29k
- Taille : 1,9 Mo
**Usage** : Complète le DPE représentatif avec des moyennes statistiques.
---
#### dpe_logement.csv
**Rôle** : DPE individuels détaillés (1 ligne = 1 DPE).
**Statistiques** :
- Lignes : 69 370
- Taille : 56 Mo
- Clé primaire : `identifiant_dpe`
**Colonnes** : Identiques à `batiment_groupe_dpe_representatif_logement` mais sans lien direct au bâtiment.
**Usage** : Récupérer tous les DPE d'un bâtiment via `rel_batiment_groupe_dpe_logement.csv`.
---
#### batiment_groupe_dle_elec_multimillesime.csv
**Rôle** : Données Locales de l'Énergie (DLE) - Électricité par année.
**Statistiques** :
- Lignes : ~10k
- Taille : 897 Ko
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
millesime Année (2018, 2019, 2020, 2021, 2022)
nb_pdl_res Nombre de PDL résidentiels
nb_pdl_pro Nombre de PDL professionnels
nb_pdl_tot Total PDL
conso_res Consommation résidentielle (kWh/an)
conso_pro Consommation professionnelle (kWh/an)
conso_tot Consommation totale (kWh/an)
conso_res_par_pdl Consommation moyenne par PDL résidentiel
conso_pro_par_pdl Consommation moyenne par PDL professionnel
conso_tot_par_pdl Consommation moyenne par PDL
```
**Note** : Données agrégées par bâtiment et par année (5 lignes par bâtiment si données 2018-2022).
---
#### batiment_groupe_dle_gaz_multimillesime.csv
**Rôle** : Données Locales de l'Énergie (DLE) - Gaz par année.
**Statistiques** :
- Lignes : ~3k
- Taille : 287 Ko
**Colonnes** : Identiques à DLE électricité.
**Couverture** : Moins de bâtiments (gaz moins répandu que l'électricité).
---
#### batiment_groupe_dle_reseaux_multimillesime.csv
**Rôle** : DLE - Réseaux de chaleur/froid.
**Statistiques** :
- Lignes : ~30
- Taille : 3 Ko
**Note** : Très peu de données (réseau de chaleur peu développé dans l'Allier).
---
### Données immobilières
#### batiment_groupe_dvf_open_representatif.csv ⭐
**Rôle** : Transactions immobilières représentatives par bâtiment (DVF = Demandes de Valeurs Foncières).
**Statistiques** :
- Lignes : 52 666
- Taille : 5,5 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
id_opendata ID transaction DVF
valeur_fonciere Prix de vente en euros
date_mutation Date de la transaction
nb_locaux_mutee_mutation Nombre de locaux vendus
nb_maison_mutee_mutation Nombre de maisons vendues
nb_appartement_mutee_mutation Nombre d'appartements vendus
nb_dependance_mutee_mutation Nombre de dépendances vendues
nb_locaux_tertiaire_mutee_mutation Nombre de locaux tertiaires vendus
surface_bati_mutee_residencielle_individuelle Surface maisons vendues (m²)
surface_bati_mutee_residencielle_collective Surface appartements vendus (m²)
surface_bati_mutee_dependance Surface dépendances vendues (m²)
surface_bati_mutee_tertiaire Surface tertiaire vendue (m²)
surface_terrain_mutee Surface terrain vendue (m²)
nb_piece_principale Nombre de pièces principales
prix_m2_local Prix au m² du bâti (€/m²)
prix_m2_terrain Prix au m² du terrain (€/m²)
```
**Exemple** :
```
valeur_fonciere: 88000 €
date_mutation: 2021/02/11
nb_maison: 1
surface_bati: 86 m²
prix_m2_local: 1023 €/m²
```
**Période** : Transactions depuis 2014.
---
#### batiment_groupe_dvf_open_statistique.csv
**Rôle** : Statistiques DVF agrégées par bâtiment.
**Statistiques** :
- Lignes : ~46k
- Taille : 4,8 Mo
**Usage** : Moyenne des prix sur plusieurs transactions.
---
### Données copropriété
#### batiment_groupe_rnc.csv ⭐
**Rôle** : Registre National des Copropriétés (RNC).
**Statistiques** :
- Lignes : 2 065
- Taille : 261 Ko
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
numero_immat_principal Numéro d'immatriculation copropriété
periode_construction_max Période de construction
l_annee_construction Liste des années de construction [JSON]
nb_lot_garpark Nombre de lots garages/parkings
nb_lot_tot Nombre total de lots
nb_log Nombre de logements
nb_lot_tertiaire Nombre de lots tertiaires
l_nom_copro Liste des noms de copropriété [JSON]
l_siret Liste des SIRET syndics [JSON]
copro_dans_pvd Copropriété en plan de sauvegarde (0/1)
```
**Exemple** :
```
numero_immat: AH0968750
nb_log: 2
nb_lot_tot: 6
nb_lot_garpark: 0
l_nom_copro: ["25-27 rue du Vert Galant"]
```
**Couverture** : ~0,76% des bâtiments (seules les copropriétés).
---
### Données propriétaires
#### proprietaire.csv
**Rôle** : Propriétaires personnes morales (bailleurs sociaux, entreprises, etc.).
**Statistiques** :
- Lignes : 9 252
- Taille : 634 Ko
**Colonnes** :
```
personne_id Identifiant propriétaire
siren SIREN de l'entreprise
code_departement_insee Code département
forme_juridique SA, SAS, SARL, etc.
denomination Nom de l'entreprise
code_postal Code postal du siège
libelle_commune Commune du siège
dans_majic_pm Présent dans MAJIC (1/0)
nb_locaux_open Nombre de locaux possédés
```
**Exemple** :
```
siren: 552046484
denomination: CDC HABITAT SOCIAL SOCIETE ANONYME D'HABITATIONS A LOYER MOD
forme_juridique: SA
nb_locaux_open: 1491
```
**Note** : Uniquement les personnes morales (pas les particuliers).
---
### Données logements sociaux
#### batiment_groupe_rpls.csv
**Rôle** : Répertoire des Logements Locatifs des bailleurs Sociaux (RPLS).
**Statistiques** :
- Lignes : ~4,5k
- Taille : 297 Ko
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
rpls_open Présence dans RPLS (1)
nb_classe_ener_a/b/c/d/e/f/g Nombre de logements par classe DPE
classe_ener_principale Classe énergétique majoritaire
nb_classe_ges_a/b/c/d/e/f/g Nombre de logements par classe GES
classe_ges_principale Classe GES majoritaire
accessible_pmr Accessible PMR (0/1)
dans_qpv Dans QPV (0/1)
l_annee_construction Années de construction [JSON]
nb_log Nombre de logements
s_log_hab Surface habitable totale (m²)
type_construction Individuel / Collectif [JSON]
```
**Couverture** : Uniquement logements sociaux (~1,7% des bâtiments).
---
### Données géographiques et référentiels
#### batiment_groupe_adresse.csv ⭐
**Rôle** : Synthèse des adresses principales par bâtiment.
**Statistiques** :
- Lignes : 180 907
- Taille : 29 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
cle_interop_adr_principale_ban Clé BAN de l'adresse principale
libelle_adr_principale_ban Libellé complet de l'adresse principale
nb_adresse_valid_ban Nombre d'adresses valides BAN
fiabilite_cr_adr_niv_1 Niveau 1 de fiabilité
fiabilite_cr_adr_niv_2 Niveau 2 de fiabilité
```
**Exemple** :
```
batiment_groupe_id: bdnb-bg-11HT-AKW6-6RW8
cle_interop_adr_principale_ban: 03300_b144_00009
libelle_adr_principale_ban: 9 Les Jeandurets Hauts 03220 Vaumas
fiabilite_cr_adr_niv_1: données croisées à l'adresse fiables
fiabilite_cr_adr_niv_2: batiment sans voisin à l'adresse
```
**Usage** : Accès rapide à l'adresse principale sans passer par rel_*.
---
#### batiment_groupe_bdtopo_bat.csv
**Rôle** : Données BDTOPO (IGN) sur les bâtiments.
**Statistiques** :
- Lignes : ~463k
- Taille : 30 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
l_nature Liste des natures [JSON]: Indifférenciée, Religieux, etc.
l_usage_1 Liste des usages principaux [JSON]: Résidentiel, Commercial, etc.
l_usage_2 Liste des usages secondaires [JSON]
l_etat État [JSON]: En service, En construction, etc.
hauteur_mean Hauteur moyenne en mètres
max_hauteur Hauteur maximale en mètres
altitude_sol_mean Altitude moyenne du sol en mètres
```
**Note** : Source de référence IGN pour les hauteurs et usages.
---
#### adresse_metrique.csv
**Rôle** : Métrique complémentaire sur les adresses (distances, etc.).
**Statistiques** :
- Lignes : ~51k
- Taille : 3,5 Mo
---
### Données environnementales et risques
#### batiment_groupe_argiles.csv
**Rôle** : Aléa retrait-gonflement des argiles (risque sécheresse).
**Statistiques** :
- Lignes : ~129k
- Taille : 7,8 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
alea Niveau d'aléa : Faible / Moyen / Fort
```
**Usage** : Identifier les bâtiments à risque sécheresse/fissures.
---
#### batiment_groupe_radon.csv
**Rôle** : Aléa radon (gaz radioactif naturel).
**Statistiques** :
- Lignes : ~146k
- Taille : 8,8 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
alea Niveau d'aléa : Faible / Moyen / Fort
```
---
#### batiment_groupe_qpv.csv
**Rôle** : Quartiers Prioritaires de la politique de la Ville (QPV).
**Statistiques** :
- Lignes : ~1,2k
- Taille : 73 Ko
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
nom_quartier Nom du QPV
```
**Exemple** : "Coeur D'Agglo"
---
### Données patrimoniales
#### batiment_groupe_merimee.csv
**Rôle** : Distance aux monuments historiques (base Mérimée).
**Statistiques** :
- Lignes : ~54k
- Taille : 3,3 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
distance_batiment_historique_plus_proche Distance en mètres
nom_batiment_historique_plus_proche Nom du monument
```
**Exemple** :
```
distance: 334 mètres
nom: Eglise Saint-Pierre
```
---
### Données équipements
#### batiment_groupe_bpe.csv
**Rôle** : Base Permanente des Équipements (BPE) - Équipements publics.
**Statistiques** :
- Lignes : ~2,6k
- Taille : 171 Ko
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
typequ Type d'équipement (code)
```
**Usage** : Identifier écoles, mairies, hôpitaux, etc.
---
#### batiment_groupe_hthd.csv
**Rôle** : Très Haut Débit (fibre optique).
**Statistiques** :
- Lignes : ~126k
- Taille : 7,6 Mo
**Colonnes** :
```
batiment_groupe_id Référence bâtiment
nb_pdl Nombre de points de livraison fibre
l_type_pdl Types de PDL [JSON]: "PA" (Point d'Accueil), "IM" (Immeuble), etc.
l_nom_pdl Noms des PDL [JSON]
```
**Usage** : Éligibilité fibre optique.
---
### Données construction
#### sitadel.csv
**Rôle** : Permis de construire et autorisations d'urbanisme (SITADEL).
**Statistiques** :
- Lignes : ~50k
- Taille : 4,1 Mo
**Colonnes principales** :
```
type_numero_dau Type et numéro du dossier (DP, PC, etc.)
date_reelle_autorisation Date d'autorisation
etat_avancement_projet Autorisé, En cours, Achevé, etc.
nature_projet extension, construction neuve, etc.
destination_principale résidentiel, non résidentiel
nb_log_tot_crees Nombre de logements créés
nb_log_demolis Nombre de logements démolis
s_hab_creee Surface habitable créée (m²)
s_hab_demolie Surface habitable démolie (m²)
type_princip_logts_crees individuel, collectif
```
**Usage** : Projets en cours et constructions récentes.
---
#### parcelle_sitadel.csv + rel_parcelle_sitadel.csv
**Rôle** : Lien entre parcelles cadastrales et permis de construire.
**Statistiques** :
- parcelle_sitadel.csv : ~29k lignes, 2,4 Mo
- rel_parcelle_sitadel.csv : ~15k lignes, 937 Ko
---
### Autres tables thématiques
| Table | Lignes | Taille | Description |
|-------|--------|--------|-------------|
| batiment_groupe_geospx.csv | ~182k | 11 Mo | Données géo-prospective |
| batiment_groupe_ffo_bat.csv | ~206k | 13 Mo | Fichiers fonciers ouverts |
| batiment_groupe_bdtopo_equ.csv | ~60 | 4 Ko | Équipements BDTOPO |
| batiment_groupe_bdtopo_zoac.csv | ~8,6k | 553 Ko | Zones d'activité BDTOPO |
| batiment_groupe_synthese_propriete_usage.csv | ~214k | 13 Mo | Synthèse propriété/usage |
| batiment_groupe_indicateur_reseau_chaud_froid.csv | ~2k | 121 Ko | Réseaux de chaleur/froid |
---
## Schéma des relations entre tables
```
┌─────────────────────┐
│ batiment_groupe │ ⭐ TABLE CENTRALE
│ (271k lignes) │
└──────────┬──────────┘
┌─────────────────────────┼─────────────────────────┐
│ │ │
┌───────────▼──────────┐ ┌──────────▼─────────┐ ┌──────────▼─────────┐
│ batiment_construction│ │ batiment_groupe_ │ │ rel_batiment_ │
│ (405k) │ │ adresse (181k) │ │ groupe_adresse │
└──────────────────────┘ └────────────────────┘ │ (209k) │
└──────────┬─────────┘
┌──────────▼─────────┐
│ adresse │ ⭐ BAN
│ (182k) │
└────────────────────┘
┌─────────────────────────┐
│ rel_batiment_groupe_ │
│ parcelle (294k) │
└───────────┬─────────────┘
┌───────────▼──────────┐
│ parcelle │
│ (734k) │
└──────────────────────┘
DONNÉES ÉNERGÉTIQUES DONNÉES IMMOBILIÈRES
┌──────────────────────┐ ┌──────────────────────┐
│ bg_dpe_representatif │ ⭐ │ bg_dvf_open_repr. │ ⭐
│ (32k) │ │ (53k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ bg_dle_elec_multi. │ │ bg_dvf_open_stat. │
│ (10k) │ │ (46k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ bg_dle_gaz_multi. │ │ proprietaire │
│ (3k) │ │ (9k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐
│ dpe_logement │
│ (69k) │
└──────────────────────┘
COPROPRIÉTÉ / SOCIAL RISQUES / ENVIRONNEMENT
┌──────────────────────┐ ┌──────────────────────┐
│ bg_rnc (2k) │ ⭐ │ bg_argiles (129k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ bg_rpls (4,5k) │ │ bg_radon (146k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐
│ bg_qpv (1,2k) │
└──────────────────────┘
GÉORÉFÉRENCEMENT PATRIMOINE / ÉQUIPEMENTS
┌──────────────────────┐ ┌──────────────────────┐
│ bg_bdtopo_bat (463k) │ │ bg_merimee (54k) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ bg_hthd (126k) │ │ bg_bpe (2,6k) │
└──────────────────────┘ └──────────────────────┘
CONSTRUCTION / URBANISME
┌──────────────────────┐
│ sitadel (50k) │
└──────────────────────┘
```
**Légende** :
- ⭐ : Tables prioritaires
- bg_* : Préfixe "batiment_groupe"
- Toutes les tables thématiques se lient via `batiment_groupe_id`
---
## Exemples de requêtes SQL
### 1. Récupérer les bâtiments d'une commune avec adresses
```sql
SELECT
bg.batiment_groupe_id,
bg.code_commune_insee,
bg.libelle_commune_insee,
bg.s_geom_groupe,
bga.libelle_adr_principale_ban,
bga.cle_interop_adr_principale_ban
FROM batiment_groupe bg
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
WHERE bg.code_commune_insee = '03185' -- Montluçon
ORDER BY bga.libelle_adr_principale_ban;
```
---
### 2. Joindre avec votre base d'adresses BAN
```sql
-- Si vous avez une table "mes_adresses" avec la colonne "ban_id"
SELECT
ma.id AS mon_adresse_id,
ma.adresse,
bg.batiment_groupe_id,
bg.s_geom_groupe,
bg.code_commune_insee
FROM mes_adresses ma
JOIN rel_batiment_groupe_adresse rel
ON ma.ban_id = rel.cle_interop_adr
JOIN batiment_groupe bg
ON rel.batiment_groupe_id = bg.batiment_groupe_id
WHERE rel.lien_valide = 1;
```
---
### 3. Récupérer les données énergétiques complètes
```sql
SELECT
bg.batiment_groupe_id,
bg.code_commune_insee,
bg.libelle_commune_insee,
bga.libelle_adr_principale_ban,
-- DPE représentatif
dpe.classe_bilan_dpe,
dpe.classe_emission_ges,
dpe.conso_5_usages_ep_m2,
dpe.type_energie_chauffage,
dpe.type_generateur_chauffage,
dpe.surface_habitable_logement,
dpe.nombre_niveau_immeuble,
-- DLE électricité (dernière année)
dle_elec.millesime AS millesime_elec,
dle_elec.nb_pdl_tot AS nb_compteurs_elec,
dle_elec.conso_tot AS conso_elec_kwh,
-- DLE gaz (dernière année)
dle_gaz.nb_pdl_tot AS nb_compteurs_gaz,
dle_gaz.conso_tot AS conso_gaz_kwh
FROM batiment_groupe bg
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
LEFT JOIN batiment_groupe_dpe_representatif_logement dpe
ON bg.batiment_groupe_id = dpe.batiment_groupe_id
LEFT JOIN batiment_groupe_dle_elec_multimillesime dle_elec
ON bg.batiment_groupe_id = dle_elec.batiment_groupe_id
AND dle_elec.millesime = '2022'
LEFT JOIN batiment_groupe_dle_gaz_multimillesime dle_gaz
ON bg.batiment_groupe_id = dle_gaz.batiment_groupe_id
AND dle_gaz.millesime = '2022'
WHERE bg.code_commune_insee = '03185'
ORDER BY bga.libelle_adr_principale_ban;
```
---
### 4. Bâtiments avec copropriété (RNC)
```sql
SELECT
bg.batiment_groupe_id,
bga.libelle_adr_principale_ban,
rnc.numero_immat_principal,
rnc.nb_log AS nb_logements,
rnc.nb_lot_tot AS nb_lots_total,
rnc.nb_lot_garpark AS nb_parkings,
rnc.l_nom_copro AS noms_copro,
rnc.copro_dans_pvd AS plan_sauvegarde
FROM batiment_groupe bg
JOIN batiment_groupe_rnc rnc
ON bg.batiment_groupe_id = rnc.batiment_groupe_id
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
ORDER BY rnc.nb_log DESC;
```
---
### 5. Transactions immobilières récentes
```sql
SELECT
bg.batiment_groupe_id,
bga.libelle_adr_principale_ban,
dvf.valeur_fonciere,
dvf.date_mutation,
dvf.nb_maison_mutee_mutation + dvf.nb_appartement_mutee_mutation AS nb_biens_vendus,
dvf.surface_bati_mutee_residencielle_individuelle +
dvf.surface_bati_mutee_residencielle_collective AS surface_totale_m2,
dvf.prix_m2_local,
dvf.prix_m2_terrain
FROM batiment_groupe bg
JOIN batiment_groupe_dvf_open_representatif dvf
ON bg.batiment_groupe_id = dvf.batiment_groupe_id
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
WHERE dvf.date_mutation >= '2020-01-01'
ORDER BY dvf.date_mutation DESC;
```
---
### 6. Bâtiments à risque environnemental élevé
```sql
SELECT
bg.batiment_groupe_id,
bg.code_commune_insee,
bg.libelle_commune_insee,
bga.libelle_adr_principale_ban,
argile.alea AS alea_argile,
radon.alea AS alea_radon
FROM batiment_groupe bg
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
LEFT JOIN batiment_groupe_argiles argile
ON bg.batiment_groupe_id = argile.batiment_groupe_id
LEFT JOIN batiment_groupe_radon radon
ON bg.batiment_groupe_id = radon.batiment_groupe_id
WHERE argile.alea = 'Fort'
OR radon.alea = 'Fort'
ORDER BY bg.code_commune_insee;
```
---
### 7. Logements sociaux avec DPE
```sql
SELECT
bg.batiment_groupe_id,
bga.libelle_adr_principale_ban,
rpls.nb_log AS nb_logements_sociaux,
rpls.s_log_hab AS surface_habitable_totale,
rpls.classe_ener_principale,
rpls.classe_ges_principale,
rpls.accessible_pmr,
rpls.dans_qpv,
rpls.l_annee_construction
FROM batiment_groupe bg
JOIN batiment_groupe_rpls rpls
ON bg.batiment_groupe_id = rpls.batiment_groupe_id
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
WHERE rpls.rpls_open = 1
ORDER BY rpls.nb_log DESC;
```
---
### 8. Bâtiments près d'un monument historique
```sql
SELECT
bg.batiment_groupe_id,
bga.libelle_adr_principale_ban,
merimee.distance_batiment_historique_plus_proche AS distance_m,
merimee.nom_batiment_historique_plus_proche AS monument
FROM batiment_groupe bg
JOIN batiment_groupe_merimee merimee
ON bg.batiment_groupe_id = merimee.batiment_groupe_id
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
WHERE merimee.distance_batiment_historique_plus_proche < 100
ORDER BY merimee.distance_batiment_historique_plus_proche;
```
---
### 9. Vue complète d'un bâtiment
```sql
-- Vue exhaustive d'un bâtiment avec toutes les données disponibles
SELECT
-- Identifiants
bg.batiment_groupe_id,
bg.code_commune_insee,
bg.libelle_commune_insee,
bg.code_iris,
bg.s_geom_groupe AS surface_m2,
-- Adresse
bga.libelle_adr_principale_ban,
bga.cle_interop_adr_principale_ban,
-- DPE
dpe.classe_bilan_dpe,
dpe.classe_emission_ges,
dpe.conso_5_usages_ep_m2,
dpe.type_energie_chauffage,
dpe.surface_habitable_logement,
-- DVF (dernière transaction)
dvf.valeur_fonciere,
dvf.date_mutation,
dvf.prix_m2_local,
-- RNC (si copropriété)
rnc.numero_immat_principal,
rnc.nb_log AS nb_lots_copro,
-- Risques
argile.alea AS risque_argile,
radon.alea AS risque_radon,
qpv.nom_quartier AS quartier_prioritaire,
-- Patrimoine
merimee.distance_batiment_historique_plus_proche AS distance_mh_m,
merimee.nom_batiment_historique_plus_proche AS monument_proche,
-- Fibre
hthd.nb_pdl AS nb_pdl_fibre,
-- BDTOPO
bdtopo.hauteur_mean AS hauteur_moyenne_m,
bdtopo.l_usage_1 AS usages_principaux
FROM batiment_groupe bg
LEFT JOIN batiment_groupe_adresse bga
ON bg.batiment_groupe_id = bga.batiment_groupe_id
LEFT JOIN batiment_groupe_dpe_representatif_logement dpe
ON bg.batiment_groupe_id = dpe.batiment_groupe_id
LEFT JOIN batiment_groupe_dvf_open_representatif dvf
ON bg.batiment_groupe_id = dvf.batiment_groupe_id
LEFT JOIN batiment_groupe_rnc rnc
ON bg.batiment_groupe_id = rnc.batiment_groupe_id
LEFT JOIN batiment_groupe_argiles argile
ON bg.batiment_groupe_id = argile.batiment_groupe_id
LEFT JOIN batiment_groupe_radon radon
ON bg.batiment_groupe_id = radon.batiment_groupe_id
LEFT JOIN batiment_groupe_qpv qpv
ON bg.batiment_groupe_id = qpv.batiment_groupe_id
LEFT JOIN batiment_groupe_merimee merimee
ON bg.batiment_groupe_id = merimee.batiment_groupe_id
LEFT JOIN batiment_groupe_hthd hthd
ON bg.batiment_groupe_id = hthd.batiment_groupe_id
LEFT JOIN batiment_groupe_bdtopo_bat bdtopo
ON bg.batiment_groupe_id = bdtopo.batiment_groupe_id
WHERE bg.batiment_groupe_id = 'bdnb-bg-11HT-AKW6-6RW8';
```
---
## Statistiques de couverture
| Donnée | Table | Couverture |
|--------|-------|------------|
| Adresse BAN | batiment_groupe_adresse | 66,5% (181k/272k) |
| DPE représentatif | bg_dpe_representatif | 12,0% (32k/272k) |
| DLE électricité | bg_dle_elec | 3,7% (10k/272k) |
| DLE gaz | bg_dle_gaz | 1,1% (3k/272k) |
| DVF transactions | bg_dvf_open_repr | 19,4% (53k/272k) |
| Copropriété RNC | bg_rnc | 0,76% (2k/272k) |
| Logement social RPLS | bg_rpls | 1,7% (4,5k/272k) |
| Risque argiles | bg_argiles | 47,5% (129k/272k) |
| Risque radon | bg_radon | 53,7% (146k/272k) |
| QPV | bg_qpv | 0,44% (1,2k/272k) |
| Monuments historiques | bg_merimee | 19,9% (54k/272k) |
| Fibre HTHD | bg_hthd | 46,4% (126k/272k) |
| BDTOPO | bg_bdtopo_bat | 170,4% (463k/272k)* |
*\* Plus de 100% car plusieurs entrées BDTOPO par bâtiment*
---
## Notes importantes
### Format des identifiants
- **batiment_groupe_id** : `bdnb-bg-XXXX-XXXX-XXXX` (ex: bdnb-bg-11HT-AKW6-6RW8)
- **batiment_construction_id** : `bdnb-bc-XXXX-XXXX-XXXX`
- **parcelle_id** : Format cadastral `CCCCCSSSNNNNN` (C=commune, S=section, N=numéro)
- **cle_interop_adr** : Format BAN `CCCCC_XXXX_NNNNN` (C=commune, X=identifiant, N=numéro)
### Géométries
- **Format** : WKT (Well-Known Text)
- **Projection** : EPSG:2154 (Lambert 93)
- **Types** :
- `POINT` : Adresses
- `MULTIPOLYGON` : Bâtiments, parcelles
- `MULTILINESTRING` : Relations spatiales
### Colonnes JSON (listes)
Certaines colonnes contiennent des listes au format JSON :
```
l_annee_construction: [ "1850", "1900" ]
l_nom_copro: [ "25-27 rue du Vert Galant" ]
l_usage_1: [ "Résidentiel", "Annexe" ]
```
Pour les exploiter en SQL (PostgreSQL) :
```sql
SELECT
batiment_groupe_id,
jsonb_array_elements_text(l_annee_construction::jsonb) AS annee
FROM batiment_groupe_rnc;
```
---
## Cas d'usage typiques
### 1. Enrichir une base d'adresses avec données bâtiment
**Objectif** : Ajouter DPE, surface, nombre de logements à vos adresses.
**Tables nécessaires** :
- `adresse.csv` (BAN)
- `rel_batiment_groupe_adresse.csv`
- `batiment_groupe.csv`
- `batiment_groupe_dpe_representatif_logement.csv`
- `batiment_groupe_rnc.csv` (si copropriété)
**Jointure** :
```
mes_adresses.ban_id
→ rel_batiment_groupe_adresse.cle_interop_adr
→ batiment_groupe.batiment_groupe_id
→ données thématiques
```
---
### 2. Cartographie des passoires thermiques
**Objectif** : Identifier les bâtiments avec DPE F ou G.
**Tables nécessaires** :
- `batiment_groupe.csv`
- `batiment_groupe_dpe_representatif_logement.csv`
- `batiment_groupe_adresse.csv`
**Filtre** :
```sql
WHERE dpe.classe_bilan_dpe IN ('F', 'G')
```
---
### 3. Analyse du marché immobilier
**Objectif** : Prix au m² par commune, période, type de bien.
**Tables nécessaires** :
- `batiment_groupe.csv`
- `batiment_groupe_dvf_open_representatif.csv`
- `batiment_groupe_dvf_open_statistique.csv`
**Agrégation** :
```sql
SELECT
bg.code_commune_insee,
bg.libelle_commune_insee,
EXTRACT(YEAR FROM dvf.date_mutation) AS annee,
AVG(dvf.prix_m2_local) AS prix_moyen_m2,
COUNT(*) AS nb_transactions
FROM batiment_groupe bg
JOIN batiment_groupe_dvf_open_representatif dvf
ON bg.batiment_groupe_id = dvf.batiment_groupe_id
GROUP BY bg.code_commune_insee, bg.libelle_commune_insee, annee
ORDER BY annee DESC, prix_moyen_m2 DESC;
```
---
### 4. Audit copropriétés (loi ALUR)
**Objectif** : Lister les copropriétés avec nombre de lots, logements, statut.
**Tables nécessaires** :
- `batiment_groupe.csv`
- `batiment_groupe_rnc.csv`
- `batiment_groupe_adresse.csv`
- `batiment_groupe_dpe_representatif_logement.csv` (optionnel)
**Champs clés** :
- `numero_immat_principal` : Immatriculation copropriété
- `nb_log` : Nombre de logements
- `nb_lot_tot` : Nombre total de lots
- `copro_dans_pvd` : Plan de sauvegarde
---
### 5. Détection bâtiments énergivores
**Objectif** : Identifier les bâtiments avec forte consommation énergétique.
**Tables nécessaires** :
- `batiment_groupe.csv`
- `batiment_groupe_dle_elec_multimillesime.csv`
- `batiment_groupe_dle_gaz_multimillesime.csv`
- `batiment_groupe_rnc.csv` (pour nb_log)
**Calcul** :
```sql
SELECT
bg.batiment_groupe_id,
bga.libelle_adr_principale_ban,
rnc.nb_log,
(COALESCE(elec.conso_tot, 0) + COALESCE(gaz.conso_tot, 0)) AS conso_totale_kwh,
(COALESCE(elec.conso_tot, 0) + COALESCE(gaz.conso_tot, 0)) / NULLIF(rnc.nb_log, 0) AS conso_par_logement
FROM batiment_groupe bg
LEFT JOIN batiment_groupe_adresse bga ON bg.batiment_groupe_id = bga.batiment_groupe_id
LEFT JOIN batiment_groupe_rnc rnc ON bg.batiment_groupe_id = rnc.batiment_groupe_id
LEFT JOIN batiment_groupe_dle_elec_multimillesime elec
ON bg.batiment_groupe_id = elec.batiment_groupe_id AND elec.millesime = '2022'
LEFT JOIN batiment_groupe_dle_gaz_multimillesime gaz
ON bg.batiment_groupe_id = gaz.batiment_groupe_id AND gaz.millesime = '2022'
WHERE rnc.nb_log > 0
ORDER BY conso_par_logement DESC;
```
---
## Ressources et documentation officielle
- **Site BDNB** : https://www.data.gouv.fr/fr/datasets/bdnb/
- **Documentation CSTB** : https://doc-bdnb.cstb.fr/
- **API BDNB** : https://api.bdnb.io/
- **Base Adresse Nationale (BAN)** : https://adresse.data.gouv.fr/
- **DVF (Demandes Valeurs Foncières)** : https://www.data.gouv.fr/fr/datasets/dvf/
---
## Fichiers CSVT
Les fichiers `.csvt` définissent les types de colonnes pour les outils SIG (QGIS, ArcGIS) :
- `String` : Texte
- `Real` : Nombre décimal
- `Integer` : Nombre entier
- `Date` : Date
Exemple `batiment_groupe.csvt` :
```
String,String,String,Real,String,String,String,String,Integer
```
---
## Fichiers PRJ
Les fichiers `.prj` définissent le système de projection (EPSG:2154 - Lambert 93).
---
## Conclusion
La BDNB est une base de données extrêmement riche permettant de croiser :
- **Géolocalisation** (adresses BAN, géométries)
- **Énergie** (DPE, DLE, consommations)
- **Immobilier** (transactions DVF, prix au m²)
- **Propriété** (copropriétés RNC, propriétaires, logements sociaux)
- **Risques** (argiles, radon, monuments historiques)
- **Équipements** (fibre, équipements publics)
**Tables prioritaires pour débuter** :
1. `batiment_groupe.csv` (table centrale)
2. `adresse.csv` (référentiel BAN)
3. `rel_batiment_groupe_adresse.csv` (lien bâtiments ↔ adresses)
4. `batiment_groupe_dpe_representatif_logement.csv` (données énergétiques)
5. `batiment_groupe_rnc.csv` (copropriétés et nombre de logements)
**Clé de jointure universelle** : `batiment_groupe_id`
**Conseil** : Commencez par importer ces 5 tables dans votre base de données, puis ajoutez progressivement les tables thématiques selon vos besoins.