Skip to content

Le coeur du Référentiel National des Bâtiments : imports, APIs, logique métier

License

Notifications You must be signed in to change notification settings

fab-geocommuns/RNB-coeur

Folders and files

NameName
Last commit message
Last commit date
Dec 10, 2024
Feb 27, 2025
Oct 1, 2024
Mar 13, 2024
Jan 7, 2025
Sep 17, 2024
May 31, 2024
Aug 4, 2023
Dec 13, 2024
Mar 13, 2024
Mar 13, 2024
Sep 23, 2024
Mar 13, 2024
Mar 13, 2024
Jan 31, 2025
Mar 13, 2024
Mar 13, 2024
Dec 12, 2024
Dec 13, 2024
Dec 17, 2024
Sep 10, 2024
Feb 3, 2025
Jan 22, 2025

Repository files navigation

Documentation

L'ensemble de la documentation destinée aux utilisateurs du RNB est accessible sur notre site sous forme d'un Gitbook. Ce readme est quant à lui destiné aux personnes amenées à contribuer au code du projet.

RNB-coeur

RNB-coeur contient le backend du projet RNB.

Le code du site internet du RNB est quant à lui publié dans ce repo.

RNB-coeur est la partie backend du projet RNB, codé en Python/Django. Il contient :

  • le modèle de données (base PostgreSQL) et la logique métier
  • les outils d'import des bâtiments
  • les API bâtiments
  • les API Autorisations du Droit des Sols (ADS)

Installation en local

Pour contribuer à ce repo, il faut commencer par le faire tourner en local sur sa machine. Nous parlons ici de contribution au code du RNB, pas au contenu du référentiel. Il vous faudra :

1. Installer git et docker sur votre machine

2. Cloner le repo

git clone [email protected]:fab-geocommuns/RNB-coeur.git

3. Renseigner les fichiers de configuration

Copiez, renommez et remplissez les fichiers de configurations ci-dessous.

Le détail des paramètres à modifier est disponible dans chacun des fichiers d'exemple.

NB : l'extension .example devient .dev

  • .env.app.example -> .env.app.dev
  • .env.db_auth.example -> .env.db_auth.dev
  • .env.nginx-encrypt.example -> .env.nginx-encrypt.dev
  • .env.rnb.example -> .env.rnb.dev
  • .env.s3_backup.example -> .env.s3_backup.dev
  • .env.sentry.example -> .env.sentry.dev
  • .env.worker.example -> .env.worker.dev

4. Construire et démarrer les conteneurs docker

docker compose build
docker compose up -d

Le serveur local est lancé à l'adresse http://localhost:8000

5. Créer un super utilisateur

docker exec -it web python manage.py createsuperuser

6. Importer des données de travail

Pour importer des données de travail, il faut se connecter à une base de donnée existante et extraire un périmètre autour d'un point de référence.

Voici un exemple des requêtes SQL qui permet d'extraire les bâtiments et les adresses autour de la tour Eiffel.

SELECT * FROM batid_building bb WHERE st_dwithin(bb.shape, st_geomfromewkt('SRID=4326;POINT (2.294492349179413 48.85837023573654)'), 0.001);


WITH addresses AS (SELECT unnest(addresses_id) FROM batid_building bb WHERE st_dwithin(bb.shape, st_geomfromewkt('SRID=4326;POINT (2.294492349179413 48.85837023573654)'), 0.001))
SELECT * FROM batid_address ba WHERE id IN (SELECT * FROM addresses);

L'insertion en base des adresses doit se faire avant celle des bâtiments, pour respecter les contraintes SQL de ForeignKeys.

Lancer les tests

docker exec -ti web python manage.py test

Ajouter une dépendance python

Nous utilisons Poetry pour gérer nos dépendances Python. Pour ajouter une dépendance au projet, il faut installer Poetry sur son poste.

Puis executer la commande poetry add nom_du_package.

Cela va mettre à jour le fichier pyproject.toml qui liste les dépendances du projet, ainsi que le fichier poetry.lock. pyproject.toml ne liste que nos dépendances directes, tandis que poetry.lock contient également toutes les dépendances de nos dépendances. Il n'est pas recommandé d'éditer le fichier pyproject.toml à la main.

Options supplémentaires

  • spécifier une version du package : poetry add celery="~5.4.0"
  • ajouter le package en dépendance de dev uniquement : poetry add --group=dev notebook="~6.5.4"

Formattage du code

Le projet utilise pre-commit pour garantir le bon formattage du code. La configuration se trouve ici. precommit-ci tourne sur chaque PR et commit automatiquement les corrections de formattage en cas d'erreur.

Il est possible d'installer pre-commit en local sur sa machine pour que les corrections soient faites avant même de créer la PR, lors de chaque commit fait en local.

A propos du RNB

La mission du RNB est de référencer l’intégralité des bâtiments du territoire français au sein d’un géocommun

Il s'agit d'un projet porté et financé par :

  • l'Institut national de l’information géographique et forestière (IGN)
  • l'Agence de l'environnement et de la maîtrise de l'énergie (Ademe)
  • le Centre scientifique et technique du bâtiment (CSTB)
  • la Direction générale de l'aménagement, du logement et de la nature (DGALN)

Le projet est incubé au sein du programme beta.gouv.fr.

License

Projet distribué sous la License Apache 2. Voir la LICENSE pour plus de détails.

About

Le coeur du Référentiel National des Bâtiments : imports, APIs, logique métier

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published