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 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)
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 :
git clone [email protected]:fab-geocommuns/RNB-coeur.git
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
docker compose build
docker compose up -d
Le serveur local est lancé à l'adresse http://localhost:8000
docker exec -it web python manage.py createsuperuser
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.
docker exec -ti web python manage.py test
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.
- 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"
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.
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.
Projet distribué sous la License Apache 2. Voir la LICENSE
pour plus de détails.