🗃️Obtenir des attributs métier à partir d'un identifiant RNB

Vous venez de récupérer les identifiants RNB de vos bâtiments et vous souhaitez maintenant enrichir votre base de nouveaux attributs.

La Base de Données Nationale des Bâtiments (BDNB) contient des centaines d'attributs métiers et est disponible grâce à l'API mise à disposition par le CSTB.

L'API de la BDNB permet d'accéder à ces attributs métiers à partir d'un identifiant de bâtiment RNB.

Voici un exemple de script Python permettant d'accéder à quelques informations comme la date de construction, le risque lié aux sols argileux ou les diagnostics de performance énergétique.

import requests


def fetch(rnb_id: str):

    print(f'RNB id : {rnb_id}')

    # Tout d'abord, nous devons récupérer l'attribut batiment_groupe_id pour accéder aux données de la BDNB
    # Par construction, la granularité de la BDNB est le groupe de bâtiments plutôt que le bâtiment seul
    print('-----------------------------------')
    print("Récupération de l'identifiant batiment_groupe_id ...")
    params = {
        'select': 'batiment_groupe_id',
        'limit': 1,
        'rnb_id': f"eq.{rnb_id}"
    }
    r = requests.get(f'https://api.bdnb.io/v1/bdnb/donnees/batiment_construction', params=params)

    data = r.json()
    batiment_groupe_id = data[0]['batiment_groupe_id']
    print(f"batiment_groupe_id : {batiment_groupe_id}")

    # Nous allons maintenant chercher des données métiers sur ce groupe de bâtiments
    print('-----------------------------------')
    print('Récupération des données BDNB ...')

    # Année de construction et matériau des murs
    data = fetch_bdnb_table('batiment_groupe_ffo_bat', batiment_groupe_id)
    print(f"Année de construction : {data[0]["annee_construction"]}")
    print(f"Matériau des murs : {data[0]["mat_mur_txt"]}")

    # Risque de retrait/gonflement des argiles
    data = fetch_bdnb_table('batiment_groupe_argiles', batiment_groupe_id)
    print(f"Risque de retrait/gonflement des argiles : {data[0]["alea"]}")

    # Infos des diagnostics de performance énergétique
    data = fetch_bdnb_table('rel_batiment_groupe_dpe_logement_complet', batiment_groupe_id)
    print(f"Type de chauffage : {data[0]["type_generateur_chauffage"]}")
    print(f"Classe DPE : {data[0]["classe_bilan_dpe"]}")
    print(f"Classe émission GES : {data[0]["classe_emission_ges"]}")


def fetch_bdnb_table(table: str, batiment_groupe_id: str):
    r = requests.get(f'https://api.bdnb.io/v1/bdnb/donnees/{table}',
                     params={'limit': 1,
                             'batiment_groupe_id': f'eq.{batiment_groupe_id}'})

    return r.json()


if __name__ == '__main__':
    fetch("CMM632DPY3PS")

Ci-dessous, le résultat de l’exécution du script pour l'identifiant RNB CMM632DPY3PS:

RNB id : CMM632DPY3PS
-----------------------------------
Récupération de l'identifiant batiment_groupe_id ...
batiment_groupe_id : bdnb-bg-XQPC-BTTB-F6ET
-----------------------------------
Récupération des données BDNB ...
Année de construction : 2014
Matériau des murs : BRIQUES
Risque de retrait/gonflement des argiles : Fort
Type de chauffage : pac eau/eau
Classe DPE : A
Classe émission GES : A

Pour aller plus loin :

Dernière mise à jour