Charger le Référentiel National des Bâtiments (RNB) dans un jeu de données data-fair, puis le tenir à jour avec le différentiel quotidien.
- Création : télécharge l'export national publié sur data.gouv.fr (~43 millions de bâtiments, archive ZIP d'environ 12 Go) et le charge en flux dans un nouveau jeu de données, sans écrire sur disque. Le traitement bascule alors en mode mise à jour.
- Mise à jour : interroge l'API différentielle du RNB depuis la dernière modification appliquée (stockée dans les
extrasdu jeu de données) et applique créations, mises à jour et suppressions par_bulk_lines. - Réparation : si des lignes ont été rejetées par Elasticsearch à cause d'une géométrie invalide (auto-intersection, anneau de moins de 4 points), réécrit uniquement la colonne
shapedes bâtiments concernés (_action: patch), sansdropni rechargement complet. Les lignes nommées par le journal d'indexation sont d'abord réparées depuis leurshapestockée (le bâtiment est retrouvé par la première coordonnée du message d'erreur), puis l'export national est réanalysé pour les autres lignes. Le journal sert de garde-fou : sans erreur d'indexation détectée, l'analyse de l'export est évitée.
Colonnes produites : rnb_id, point, shape, status, ext_ids, addresses_id, validated_by, modified_at.
Les contours sont arrondis à 6 décimales puis validés (sommets dupliqués, auto-intersections) et réparés par polygon-clipping avant indexation, afin qu'Elasticsearch n'ait jamais à rejeter une ligne pour une géométrie invalide. Les anneaux dégénérés ou négligeables et les trous sortis de leur coque sont supprimés ; en mode réparation, les lignes dont la shape stockée (non arrondie, des premières versions) n'est pas indexable telle quelle sont réécrites, y compris celles que l'ancien détecteur sweepline-intersections avait unionnées à tort. Un contour définitivement irréparable est remplacé par le point du bâtiment : une ligne sans géométrie disparaît de la carte, un point la garde localisable.
Si un import complet est interrompu, le prochain lancement le reprend automatiquement (les lignes partielles sont remplacées).
npm i
npm run build-types
npm run lint
npm testLes tests d'intégration se lancent contre une instance réelle en renseignant config/local-test.mjs (gitignoré) avec dataFairUrl et dataFairAPIKey.
Les plugins sont récupérés depuis le registre npm avec le mot-clé data-fair-processings-plugin. Ne pas modifier version à la main : les publications sont déclenchées par les tags (publish-staging.yml, publish-production.yml).