Hackathon : Sujet RNB & OSM

Comment améliorer l’articulation entre des bases nationales comme le Référentiel National des Bâtiments ou la Base Adresse Nationale et OpenStreetMap ?

:globe_showing_europe_africa: Pour des raisons de license, il n’est pas envisagé, pour le moment, d’intégrer au RNB des modifications du parc bâti provenant d’OSM. Il est par contre tout à fait possible de diffuser les ID-RNB dans OSM. Pour ce faire, c’est la communauté OSM qui doit y ajouter les ID-RNB correspondant à chaque objet bâtiment.

Comment l’y aider ? En proposant un fichier de rapprochement OSM<>RNB, qui pourra être librement réutilisé. Pour chaque bâtiment rapproché, nous pourrions indiquer un intervalle de confiance, permettant à chaque utilisateur OSM de faire un choix éclairé lors de l’ajout d’un ID-RNB dans OSM.

4 Likes

Compte-rendu du hackathon de mai 2025 pendant lequel une petite équipe a défriché le sujet :

Objectif

Fournir des données utiles pour faciliter l’intégration éclairée des ID RNB dans OpenStreetMap.

Tâches réalisées et envisagées :

produire un jeu de données sur la commune test de Saint-Martin d’Hères proposant avec un ID RNB pour chaque bâtiment OSM, avec un taux de confiance extrêmement élevé.

Voici le fichier des bâtiments OSM avec les 3903 ID RNB rajoutés : smdh.josm.xml - Nextcloud
Une comparaison très prudente a été réalisée : seuls les bâtiments avec un recouvrement du périmètre >60% sont concernés : cela permet minimiser les faux positifs. Il reste donc un gros travail d’intégration manuel des ID sur cette commune au delà de cette intégration initiale.

publier le code source de cette conflation GitHub - fab-geocommuns/RNB-OSM-hackathon: Hackathon pour rapprocher les ID-RNBs de OSM
documenter la conflation pour faciliter sa reproductibilité
Intégrer ces données dans OSM Groupe de modifications : 166528144 | OpenStreetMap
améliorer cette première conflation basée sur la comparaison des surfaces en prenant en compte le décalage des centroïdes (notamment pour les données dont le taux de confiance est >0,6 et <0,7)
réaliser la même conflation que sur la commune test sur la France entière
publier le jeu de données national sur data.gouv.fr (cf. descriptif ci-dessous) en réintégrant tous les résultats et en précisant le taux de confiance
produire un fichier XML directement ouvrable dans JOSM pour chacune des 34 935 communes de France ne contenant que les données pour un taux de confiance >70%
publier ces fichiers sur https://rnb.openstreetmap.fr
automatiser la production de ces fichiers pour minimiser le risque de conflit d’édition
au-delà de ces cas identifiés comme ayant un taux de confiance très élevé, produire de la documentation / tutoriel pour permettre à la communauté OSM une intégration éclairée des ID RNB pour les autres cas plus complexes / corriger/améliorer les bâtiments dans OSM
créer un éditeur simplifié (type Pifomètre) pour simplifier encore l’intégration des ID RNB dans OSM


Descriptif du jeu de données à publier sur data.gouv.fr

Titre : Identifiants RnB recommandés à l’intégration dans OpenStreetMap

Description :
Ce jeu de données propose pour chacun des bâtiments OpenStreetMap un ou plusieurs identifiant du Référentiel National du Bâtiment (ID-RNB) (voir https://rnb.beta.gouv.fr) sur le territoire de la France.

Ce jeu de données a été produit durant le hackathon de la Fabrique des géocommuns le 19 et 20 mai 2025 à l’IGN. Par soucis de simplification, il ne contient que les données dont le taux de confiance est >70%.

Documentation

Exploitation des données

  • osm_id : identifiant OpenStreetMap (documentation wiki).
    Il peut s’appliquer à une way ou une relation.
  • Par exemple, le bâtiment identifié sous 11EB66VJ7FRH dans le RNB correspond à l’identifiant OSM way/159880167. Pour le retrouver dans OpenStreetMap, il faut se rendre à l’adresse Chemin : 159880167 | OpenStreetMap
  • Par exemple, le bâtiment identifié sous 28BJ8ER13CX1 dans le RNB correspond à l’identifiant OSM relation/2142218. Pour le retrouver dans OpenStreetMap, il faut se rendre à l’adresse Relation : ‪Résidence les Taillées‬ (‪2142218‬) | OpenStreetMap
    Cet identifiant est unique : il existe une ligne par objet. Il ne doit pas être considéré comme stable dans le temps.
  • rnb_ids : identifiant(s) RNB suggéré(s) à l’intégration dans OpenStreetMap. Il est possible de disposer de valeurs multiples, séparées par des ; pour un seul bâtiment OSM. L’identifiant RnB est pérenne pour chaque bâtiment.
    N.B. : si un bâtiment est détruit et un nouveau est reconstruit au même emplacement, alors un nouvel ID est créé ; l’ancien ID continue d’exister mais prend le statut “détruit”. Cette information ne fait pas partie du présent jeu de données : elle est à retrouver dans les données du RNB.
  • confidence : taux de confiance. Valeur comprise entre 0 et 1 avec deux décimales. 0 est la valeur minimale (confiance nulle) et 1 la valeur maximale (confiance totale).
    C’est le résultat d’une analyse comparative : ce taux représente le pourcentage de recouvrement des surfaces des bâtiments entre le référentiel du RNB et OSM. Le détail de ce calcul est publié à l’adresse GitHub - fab-geocommuns/RNB-OSM-hackathon: Hackathon pour rapprocher les ID-RNBs de OSM
    Par exemple, un taux de confiance de 0,9 est très élevé : il y a de fortes chance que le le bâtiment identifié dans OpenStreetMap soit bien celui identifié par la valeur RNB indiquée.
  • diff : précision de différence de modélisation entre les données RNB et OSM.
    Prend la valeur splited si un objet RNB correspond à plusieurs objets OSM, prend la valeur multiple si plusieurs objets RNB correspondent à un seul objet OSM.
  • Par exemple, les deux bâtiments identifiés sous les références S3HFGTCH14VF;C5NW96R48RQE dans le RNB correspond à l’identifiant OSM way/190591890. Le diff prend la valeur multiple (dans OpenStreetMap, la tag associé est diff:ref:FR:RNB=multiple).
    Pour le retrouver dans OpenStreetMap, il faut se rendre à l’adresse Chemin : 190591890 | OpenStreetMap
1 Like

Hello,
Lors de l’envoi des données sur la seule commune de Saint-Martin-dHères, on a eu 22 conflits dans OSM : ce sont toutes les modifications qui ont été réalisées entre hier matin et hier fin d’après midi dans OSM sur les bâtiments de cette commune qui posent problème lors de l’envoi des données.
Il a fallu résoudre manuellement ces conflits avant envoi, ce qui rajoute du temps, de la complexité et des risques d’erreurs.

Pour palier à ce problème qui sera, à n’en pas douter, récurrent dans le futur, on pourrait générer les fichiers pour chaque commune à la volée, sur demande de l’utilisateur, sans les produire tous par avance.
Cela prendrait certes quelques instants, et cela nécessite également de développer un outil spécifique, mais je pense que c’est la seule manière de régler ce soucis majeur.

C’est d’ailleurs la logique déjà utilisée sur https://cadastre.openstreetmap.fr. Un simple fork de ça GitHub - osm-fr/export-cadastre: Interface web et logiciel de génération au format .osm d'export en provenance du cadastre français ne suffirait-il pas à couvrir nos besoins ?

Une mission pour @leo avec mon aide et celle de @PanierAvide ?

Hello,

Effectivement générer le fichier à la volée est une bonne idée pour éviter trop de conflits.

Je vais regarder export-cadastre, c’est une bonne inspiration dans le principe. Je vais voir s’il y a du code transposable dans la semaine.

1 Like

export-cadastre ne me semble pas être une bonne une base à forker:

  • c’est très vieux (12 ans)
  • les commit récents avaient surtout pour but d’indiquer que c’était un outil “historique” :wink:
  • le besoin à l’époque était de simplifier l’extraction de géométries depuis les plan du cadastre (en PDF)… depuis les données du cadastre sont dispo en opendata

Quel est le temps pour générer un rapprochement sur une commune “moyenne” et une grosse ?

Je vois dans le repo github ceci:

  • import OSM dans une base osm2pgsql
  • croisement avec RNB fait dans postgres sur les intersections de polygones

Une base osm2pgsql peut être maintenue à jour en quasi temps réel (avec les diff minute), cela minimise les conflits d’édition dans OSM.

Si le croisement RNB est rapide pour une commune (et en principe ça devrait être le cas), il pourrait se faire à la demande.

Les exports sur data.gouv semblent quotidiens pour le fichier national.

On peut faire un petit test avec une approche un peu différente:

  • overpass pour récupérer les données sur une commune
  • croisement avec calcul d’IoU (intersection over union)
  • génération du XML OSM

Tout cela doit pouvoir se faire en python, sans postgres (avec shapely), ce qui serait encore plus léger.

J’ai fini par push une version webapp adaptée rapidement sur GitHub - fab-geocommuns/RNB-OSM-hackathon: Hackathon pour rapprocher les ID-RNBs de OSM. J’ai mis l’ancien main dans une branche original-main-hackathon

J’ai gardé Postgres pour récupérer directement la logique existante et éviter le portage de cette partie, mais je me suis effectivement basé sur Overpass pour récupérer les données OSM et générer l’XML initial avant de le modifier.

J’ai l’impression que la logique est cependant un peu boguée (splitted pas vraiment splitted notamment), il faudrait investiguer pourquoi cette différence qui ne me semblait pas là au hackathon ? Soit j’avais commit une ancienne version de la requête, soit c’est dans l’adaptation et peut-être la logique de transformation d’objets OSM en polygones que j’ai refaite un peu hâtivement.

J’ai mis en ligne une démo http://51.15.138.10/.