🗃️Obtenir des attributs métier à partir d'un identifiant RNB (ID-RNB)

Vous venez de récupérer les identifiants RNB (ID-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'ID-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

Cet article vous a-t-il été utile ?