# Obtenir des attributs métier à partir d'un ID-RNB

Vous venez de [récupérer](https://rnb-fr.gitbook.io/documentation/api-et-outils/api-batiments/identification-de-batiment) [les](https://rnb-fr.gitbook.io/documentation/api-et-outils/api-batiments/listing-de-batiments) [identifiants](https://rnb-fr.gitbook.io/documentation/exemples/selecteur-de-batiments) RNB (ID-RNB) de vos bâtiments et vous souhaitez maintenant [enrichir votre base](https://rnb.beta.gouv.fr/outils-services/rapprochement) de nouveaux attributs.

La [Base de Données Nationale des Bâtiments](https://bdnb.io/) (BDNB) contient [des centaines d'attributs métiers](https://bdnb.io/schema/latest/index.html) 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**](https://api-portail.bdnb.io/catalog/api/f4905edc-db58-3a3b-a8e5-c5dfc6692ee5/doc?page=39ca1b93-4d44-449a-8a1b-934d44e49af9#vous-cherchez-des-donn%C3%A9es-sur-des-b%C3%A2timents-dans-une-zone)**.**&#x20;

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.

{% code fullWidth="true" %}

```python
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")
```

{% endcode %}

Ci-dessous, le résultat de l’exécution du script pour l'ID-RNB [CMM632DPY3PS](https://rnb.beta.gouv.fr/carte?q=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 :&#x20;

* Récupérez les identifiants RNB de vos bâtiments grâce à notre [endpoint de listing](https://rnb-fr.gitbook.io/documentation/api-et-outils/api-batiments/listing-de-batiments), notre [endpoint d'identification](https://rnb-fr.gitbook.io/documentation/api-et-outils/api-batiments/identification-de-batiment) ou en ajoutant [un sélecteur de bâtiment](https://rnb-fr.gitbook.io/documentation/exemples/selecteur-de-batiments) à vos outils
* Consulter [l'ensemble des attributs disponibles dans la BDNB](https://bdnb.io/schema/latest/index.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rnb-fr.gitbook.io/documentation/guides/obtenir-des-attributs-metier-a-partir-dun-id-rnb.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
