Faire (et refaire) un rapprochement avec le RNB
Vous avez une base de données et vous aimeriez la relier au RNB ? C’est ce que nous appelons un rapprochement.
Enrichir vos données avec un identifiant RNB vous permet notamment de croiser plus facilement vos données avec celles des autres acteurs qui utilisent le référentiel.
Dans cet article, nous vous expliquons pas à pas comment faire — et pourquoi il est important de penser dès le départ à la façon de rejouer ce rapprochement dans le temps.
🧑🏫 Nous appelons entité ce qui est représenté par une ligne de votre base. L'entité peut-être par exemple un bâtiment, un logement, un objet, un groupe de bâtiments, etc.
Étape 1 : comprendre le type de lien avec le RNB
La toute première question à se poser est simple : que représente une ligne dans votre base ?
Votre entité appartient à un bâtiment : c’est le cas par exemple d’un logement ou d’un objet situé dans un bâtiment (un tableau dans un musée, une salle dans une école, etc.). Vous cherchez à lui associer un ID-RNB. Plusieurs entités peuvent avoir le même ID-RNB.
Votre entité est elle-même un bâtiment : dans ce cas, chaque ligne de votre base correspond directement à un bâtiment et donc à un ID-RNB
Votre entité regroupe plusieurs bâtiments : par exemple un hôpital, une copropriété ou un ensemble scolaire. Ici, un identifiant ne suffit pas, vous aurez une liste d’ID-RNB.
Cette réflexion est essentielle, car elle conditionne la suite du travail.
Étape 2 : choisir comment obtenir l’information
Pour récupérer les données du RNB, vous avez deux options :
Passer par l’API RNB : c’est souvent le plus simple, car l’API propose déjà des fonctions d’identification de bâtiments. 👉 documentation de l’API
Télécharger les données ouvertes sur data.gouv.fr : utile si vous devez traiter plusieurs millions de lignes, car l’API est limitée à 20 appels par seconde (et par adresse IP). 👉 data.gouv.fr
Étape 3 : définir une stratégie de rapprochement
La bonne méthode dépend des informations dont vous disposez dans votre base. Voyons les cas les plus fréquents, du plus propice au moins précis.
💡 Il est important de garder à l’esprit que quelle que soit la méthode de rapprochement choisie, celle-ci ne pourra donner de bons résultats que si les données dont vous disposez sont elles-mêmes qualitatives !
🗺️ Avec des coordonnées géographiques
C’est le cas idéal. Si vos entités sont localisées par un point (latitude/longitude), vous pouvez interroger l’API pour obtenir les bâtiments les plus proches.
👉 Exemple, les bâtiments situés dans un rayon de 10 mètres autour du point donné
https://rnb-api.beta.gouv.fr/api/alpha/buildings/closest/?point=44.821,-0.571&radius=10
💡 L’idée de base d’un rapprochement par coordonnées est bien sûr que si un bâtiment du RNB est à une distance de 0m des coordonnées fournies, nous considérons avoir trouvé le bon bâtiment. Lorsque au sein de l’équipe RNB nous faisons des rapprochements il nous arrive d’être un peu plus flexible en comparant les deux premiers résultats renvoyés par l’API. Par exemple, si un premier bâtiment est à 2m du point fourni et que le second résultat est à 25m, nous pouvons considérer que le point correspond probablement au premier bâtiment, même s’il ne tombe pas exactement dessus.
💠 Avec une géométrie
Si vous avez à disposition des polygones représentants la géométrie de vos entités, il vous est possible d’identifier les bâtiments du RNB grâce à cette donnée et d’obtenir des résultats plus précis qu’avec de simples points. Cependant l’API du du RNB ne permet pas d’identifier un bâtiment à partir d’une géométrie. Si vous souhaitez le faire, téléchargez l’export du RNB disponible sur data.gouv.fr , chargez le dans votre outil de SIG préféré et écrivez vos requêtes.
💡Il est fréquent d’utiliser des méthodes du type IoU (Intersection Over Union) pour obtenir les ID-RNB correspondant à vos bâtiments.
🏠 Avec une adresse
Si vous avez une adresse postale, vous pouvez aussi retrouver les bâtiments associés dans le RNB. C’est un peu moins direct que la géolocalisation car plusieurs bâtiments peuvent partager la même adresse. Il est aussi possible que le lien bâtiment/adresse du RNB soit incomplet. Mais cela reste très utile.
Deux cas se présentent :
Vous avez déjà la clé d’interopérabilité BAN → c’est la méthode la plus efficace.
Vous n’avez qu’une adresse textuelle → l’API peut quand même travailler avec ça, mais les performances seront moins bonnes. Dans ce cas, l’API RNB se charge pour vous d’interroger l’API de la BAN et inclura dans sa réponse le score de fiabilité du géocodage renvoyé par la BAN. Il est possible de fixer un score minimum de fiabilité via le paramètre min_score.
👉 Exemple avec une clé d’intéropérabilité BAN :
https://rnb-api.beta.gouv.fr/api/alpha/buildings/address/?cle_interop_ban=75105_8884_00004
👉 Exemple avec une adresse textuelle :
https://rnb-api.beta.gouv.fr/api/alpha/buildings/address/?q=4 rue Scipion, Paris
Et avec un score minimal de fiabilité du géocodage BAN :
https://rnb-api.beta.gouv.fr/api/alpha/buildings/address/?q=4 rue Scipion, Paris&min_score=0.9
ℹ️ Si vous avez beaucoup de recherches par adresse à faire, faites d'abord une passe d'API BAN en batch pour récupérer d'un coup toutes les clés avant de faire vos requêtes sur l’API du RNB, vous gagnerez du temps.
📐 Avec une parcelle cadastrale
Moins fréquent, mais parfois pratique : si vous avez à disposition une parcelle cadastrale, vous pouvez récupérer la liste des bâtiments qu’elle contient.
👉 Exemple :
https://rnb-api.beta.gouv.fr/api/alpha/buildings/plot/01402000AB0051/
ℹ️ Le lien bâtiment ↔ parcelle du RNB est un lien géométrique et non pas administratif !
Étape 4 (optionnelle) : corrigez le RNB
Cette étape n’est pas toujours envisageable, mais vaut le coup d’être considérée : pouvez-vous améliorer la qualité du rapprochement en éditant le RNB ?
Il peut arriver que le rapprochement de certaines de vos entités échoue à cause de lacunes du RNB. Nous avons mis à disposition tous outils pour vous permettre d’éditer le RNB : une page de définition et un lexique pour comprendre la nature du référentiel. Une API et un outil d’édition web pour apporter vos corrections.
Si vous avez la possibilité de le faire, apporter des corrections en amont de votre rapprochement vous permet d’augmenter significativement la qualité du lien entre nos bases et de rendre service à toute la communauté des utilisateurs du RNB.
Étape 5 : stocker les résultats correctement
Une fois le rapprochement fait, il faut penser au stockage. Le plus simple est d’ajouter une colonne id_rnb
dans votre base.
Si une entité correspond à un seul bâtiment → un identifiant unique.
Si une entité correspond à plusieurs bâtiments → une liste d’identifiants.
Point crucial : ne stockez pas seulement l’ID-RNB, stockez aussi l’origine de l’information.
Pourquoi ? Parce qu’un rapprochement automatique peut être rejoué, mais vous ne voulez surtout pas écraser les ID-RNB saisis manuellement par vos utilisateurs.
Un exemple concret : dans la base des DPE, on retrouve deux colonnes :
id_rnb
: l’identifiant du bâtiment,provenance_id_rnb
: d’où vient cette information (rapprochement automatique, saisie d’un diagnostiqueur, etc.).
Résultat : quand on refait un rapprochement un an plus tard, on est capable de faire la distinction entre les identifiants issus d’un rapprochement et ceux saisis à la main : ces derniers peuvent être protégés de tout écrasement accidentel.
Étape 6 : penser au rafraîchissement
Le RNB est une base vivante : de nouveaux bâtiments apparaissent, des liens adresse ↔ bâtiment sont corrigés, d’autres disparaissent. Votre base aussi évolue.
Bref : il est normal de refaire le rapprochement régulièrement.
La méthode la plus simple est de relancer la procédure en entier, en s’appuyant sur la colonne "provenance" pour ne pas perdre d’informations précieuses.
ℹ️ Le RNB est mis à jour en continu, toute modification apportée au référentiel est prise en compte instantanément. Il n’existe pas de millésime du référentiel.
👉 La fréquence de mise à jour recommandée dépend de chaque cas particulier. Mettre à jour les identifiants en refaisant tourner un rapprochement tous les 6 à 12 mois permet de garantir une bonne qualité du lien entre votre base et le RNB.
Et si vous avez besoin d’un coup de main ?
L’équipe RNB peut vous accompagner, répondre à vos questions et même valoriser vos cas d’usage (parfois sous forme d’articles). Donc n’hésitez pas à nous contacter si vous avez un doute ou un besoin particulier.
Vous avez maintenant toutes les clés pour rapprocher votre base avec le RNB… et la maintenir à jour dans le temps.
Bonus : un script Python d’exemple
Voici un petit script Python qui recherche les bâtiments les plus proches d’un point donné et qui donne l’identifiant et la distance des deux premiers résultats :
import requests
# URL de l'API
url = "<https://rnb-api.beta.gouv.fr/api/alpha/buildings/closest/>"
params = {
"point": "44.821,-0.571",
"radius": 10
}
# Requête vers l'API
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
results = data.get("results", [])
if len(results) >= 2:
first = results[0]
second = results[1]
print(f"Le bâtiment le plus proche est à {first['distance']} mètres et a pour identifiant {first['rnb_id']}.")
print(f"Le deuxième bâtiment le plus proche est à {second['distance']} mètres et a pour identifiant {second['rnb_id']}.")
elif len(results) == 1:
first = results[0]
print(f"Un seul bâtiment trouvé : à {first['distance']} mètres, identifiant {first['rnb_id']}.")
else:
print("Aucun bâtiment trouvé dans ce rayon.")
else:
print(f"Erreur {response.status_code} lors de l'appel à l'API.")
Exécuter ce code vous donner la sortie suivante :
Le bâtiment le plus proche est à 0.0 mètres et a pour identifiant 4T82833PS1E3. Le deuxième bâtiment le plus proche est à 0.633939 mètres et a pour identifiant 4KT4S2XNFH98.
Mis à jour
Ce contenu vous a-t-il été utile ?