osm-fr / bano

Différents outils pour la constitution de la Base Adresses Nationale Ouverte
Do What The F*ck You Want To Public License
30 stars 18 forks source link

Bano how to : installation et utilisation #204

Open vdct opened 4 years ago

vdct commented 4 years ago

Ce ticket vise à archiver au fil de l'eau les échanges relatifs à l'installation de BANO et son utilisation. Le délivrable sera un fichier md à créér et amender collectivement

vdct commented 4 years ago

BANO est un ensemble de code python, shell et SQL. En l'état (octobre 2020) il faut comme pré-requis pour faire tourner BANO :

Il faut pour alimenter la base OSM locale dans laquelle puise BANO :

vdct commented 4 years ago

L'organisation générale est la suivante :

  1. téléchargement des sources de données Adresse et OSM

  2. Alimentation de la base de cache, nommée "osm" avec ces sources

  3. Traitements python pour extraire de cette base les infos d'adresse et alimentation de la base de résultat, nommée "cadastre"

  4. Export des données constituées, dans différents formats (CSV, JSON, TTL, SHP)

frodrigo commented 4 years ago

Je ne sais pas si tu as également prévu de faire un Docker, mais expérience rendre une solution réinstallable et faire un Dockerfile vont assez bien de pair.

geostonemarten commented 4 years ago

C'est une bonne idée le Docker. Je suis pas encore utilisateur donc je vais déjà essayer de mettre en place l'environnement et les données avant de commencer à me dire que l'on peut basculer sur ce genre d'instance. Podman est une autre solution

JacLavi commented 4 years ago

J'en suis. A la mesure de mes moyens. Envisager le passage en PG12 dès le début. Il y a des compétences.

geostonemarten commented 4 years ago

@JacLavi J'ai les deux chez moi donc je vais tester l'intégration en deux fois. La version de PostGIS est paquagé en v3 sur la PG12 ce qui n'est pas le cas sur PG9.6 même si il est possible de passer en PostGIS3 sur cette version de PG. Au pire faudra prévoir un script pour l'upgrade version X.y vers X'.y'. Sur Postgis ces scripts existent déjà il me semble.

JacLavi commented 4 years ago

A tous : Pensez que ce HowTo peut-être l'occasion d'une action de formation pour les petits nouveaux (/me) et on s'attachera à être pédagogique. Je pense à un document tel que https://switch2osm.org/serving-tiles/

Par ailleurs chaque fois que des lignes de commande

cd /var/opt/bano

ou des données seront réutilisables dans un document technique on utilisera le markdown disponible ici.

vdct commented 4 years ago

Je ne sais pas si tu as également prévu de faire un Docker, mais expérience rendre une solution réinstallable et faire un Dockerfile vont assez bien de pair.

Oui ça irait bien ensemble je suis d'accord

vdct commented 4 years ago

A tous : Pensez que ce HowTo peut-être l'occasion d'une action de formation pour les petits nouveaux (/me) et on s'attachera à être pédagogique. Je pense à un document tel que https://switch2osm.org/serving-tiles/

Oui @JacLavi c'est bien le but

Par ailleurs chaque fois que des lignes de commande

cd /var/opt/bano

ou des données seront réutilisables dans un document technique on utilisera le markdown disponible ici.

Le markdown va surtout servir dans le(s) doc(s) issus de ce ticket, et qu'il reste à créer. Un INSTALL.md a minima

geostonemarten commented 4 years ago

Bon je vais en chier avec mon environnement windows XD

Pour imposm tu utilises une v2.x c'est en python après en v3 on passe sur des binaires ou du code source à compiler en Go

vdct commented 4 years ago

Bon je vais en chier avec mon environnement windows XD

Je suis incapable de t'aider sur Windows. Et oui rien dans Bano n'est pensé pour autre chose qu'un linux avec bash, donc ça risque de coincer facilement :/

Pour imposm tu utilises une v2.x c'est en python après en v3 on passe sur des binaires ou du code source à compiler en Go

Imposm c'est la dernière v3, cf https://github.com/osm-fr/bano/issues/204#issuecomment-710762897

JacLavi commented 4 years ago

Dans

https://wiki.openstreetmap.org/wiki/Osmosis/Installation#Linux

je vois qu'il existe deux façons Debian d'installer Osmosis. On ignore ?

geostonemarten commented 4 years ago

Je vais tenter de compiler les sources on verra si j'arrive à passer. Pour le reste soit je transcris les sh en ps1 soit je passe tous en python.

geostonemarten commented 4 years ago

https://github.com/mghadiri/imposm3-for-windows pour imposm il y a un gars qui a déjà compilé et ajouté les dépendances. Je vais tester avec ça

JacLavi commented 4 years ago

@geostonemarten https://wiki.openstreetmap.org/wiki/Osmosis/Quick_Install_(Windows) ?

Sinon : aucune chance que tu te procures une machine Linux ? ;)

vdct commented 4 years ago

Dans

https://wiki.openstreetmap.org/wiki/Osmosis/Installation#Linux

je vois qu'il existe deux façons Debian d'installer Osmosis. On ignore ?

J'avais ça :

wget https://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.zip
mkdir osmosis && mv osmosis-latest.zip osmosis && cd osmosis && unzip osmosis-latest.zip
sudo mv bin/osmosis /usr/bin && sudo chmod a+x /usr/bin/osmosis && sudo mv config /usr/config && sudo mv lib/default/ /usr/lib/default

L'URL a du changer et ressemblera à https://github.com/openstreetmap/osmosis/releases/latest je crois. Pour le reste, ça reste un wget puis du déplacement de fichiers et c'est tout : pas de compil. En revanche il faut un JRE, j'avais utilisé :

sudo apt-get install openjdk-8-jre

JacLavi commented 4 years ago

Pour essayer dans la ligne Debian 10.5 :

OSMOSIS

Pour faire tourner Osmosis on a besoin de Java.

apt-get install default-jre

$ java --version openjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Debian-1deb10u1) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Debian-1deb10u1, mixed mode, sharing)

Installer Osmosis par le paquet Debian :

https://wiki.openstreetmap.org/wiki/Osmosis/Installation#Linux

apt install osmosis

Pour tester Osmosis

Se procurer un pbf : $ wget https://download.geofabrik.de/europe/andorra-latest.osm.bz2

Le décompresser $ bunzip2 andorra-latest.osm.bz2

/usr/bin/osmosis --read-xml andorra-latest.osm --write-xml file="planetout.osm"

Ca se déroule sans erreur. Pas encore de base pour essayer plus.

IMPOSM

La version packagée Debian (2.6.0 Python) est obsolete. Utiliser 'imposm3' écrit en Go. Se reporter à la doc d'installation générique.

PostgreSQL chez Debian

Debian Buster 10.5 installe PostgreSQL 11.9

$ sudo bash # apt update && apt upgrade # apt install postgresql

Vérifier la version (et le fonctionnement)

sudo -u postgres psql -c "SELECT version();"

A suivre.

geostonemarten commented 4 years ago

Installation sur Windows

Installer Osmosis

Suivre la procédure d'installation Osmosis/Quick Install

Prérequis

Installer la JRE de JAVA

ImpOSM

Installer ImpOSM compilé pour Windows 64x

vdct commented 4 years ago

Premiere étape avant de lancer les chargements de données : il faut adapter le fichier "config" à votre environnement, en déclarant différents chemins. Ce fichier est utilisé en début de plusieurs scripts pour connaître le chemin de différents répertoires.

Pour charger les données OSM avec imposm dans la BD "osm" il faut d'abord la créer. Ca se fait en executant le script https://github.com/osm-fr/bano/blob/packaging/create_base.sh qui crée les 2 BD "osm" et "cadastre". Ensuite, possibilité de charger des données OSM depuis un pbf. Le script cible est https://github.com/osm-fr/bano/blob/packaging/load_osm_france_db.sh mais on peut changer l'URL pour prendre un plus petit pbf chez Geofabrik dans un 1er temps.

JacLavi commented 4 years ago

Hi !

Avant d'aller plus loin :

create_table_base_osm.sql

est OK \o/.

Mais j'ai des warning(s) :

$ psql -d cadastre -U cadastre -f sql/create_table_base_bano.sql 
psql:sql/create_table_base_bano.sql:24: NOTICE:  la relation « fantoir_voie » existe déjà, poursuite du traitement
CREATE TABLE
psql:sql/create_table_base_bano.sql:25: NOTICE:  la relation « idx_fantoir_voie_dept » existe déjà, poursuite du traitement
CREATE INDEX
psql:sql/create_table_base_bano.sql:26: NOTICE:  la relation « idx_fantoir_code_insee » existe déjà, poursuite du traitement
CREATE INDEX
psql:sql/create_table_base_bano.sql:27: NOTICE:  la relation « idx_fantoir_fantoir » existe déjà, poursuite du traitement
CREATE INDEX
psql:sql/create_table_base_bano.sql:28: NOTICE:  la relation « idx_fantoir_fantoir10 » existe déjà, poursuite du traitement

A suivre.

vdct commented 4 years ago

Mais j'ai des warning(s) :

Rien de méchant. Ces "notice" apparaissent quand tu relances le traitement, ils ne doivent pas apparaitre au 1er lancement. Ils sont liés aux instructons "if not exists"

Olyon commented 4 years ago

Je crois que ça n'a pas été dit, il faut se placer dans la branche packaging pour bano v2. Il faudrait modifier le début de load_osm_france_db.sh et copy_table_from_osm_to_cadastre.sh  pour se placer dans l'arborescence de config : dans $DATA_DIR plutôt que /data Dans config, il manque BAN_CACHE_DIR

J'étais arrivé à faire fonctionner à peu près tout pour remplir les bases : créer les bases et les tables modifier BANO_DIR et DATA_DIR dans config (il faut modifier aussi EXPORT_SAS_DIR et EXPORT_WEB_DIR mais je n'ai pas testé l'export) ./arborescence.sh ./load_fantoir.sh ./load_COG.sh ./load_codes_postaux.sh ./load_osm_france_db.sh ./update_cadastre_adresses.sh ./update_table_infos_communes.sh J'avais des erreurs avec setup.cfg, j'ai supprimé les versions des install_requires (j'ai aussi ajouté ipdb, mais je sais plus si c'était nécessaire) pip3 install -e bano ensuite pour cron_bano.sh : il faut installer parallel j'ai aussi supprimer les 2 1ère lignes /data/... J'ai modifié deplist.txt pour limiter le nombre de département à traiter, j'en ai gardé que 2, il me semble qu'avec un seul département, ça ne fonctionnait pas. Je n'ai pas essayé la partie export donc j'ai supprimé les parties exports et copie+zip et ensuite : ./cron_bano.sh qui va traiter commune par commune pour remplir les bases

vdct commented 4 years ago

Merci beaucoup @Olyon :+1: Je reprends tes points dans l'ordre

Je crois que ça n'a pas été dit, il faut se placer dans la branche packaging pour bano v2.

Tout à fait, un oubli de ma part. Il faudra bien fusionner cette branche dans master un jour...

Il faudrait modifier le début de load_osm_france_db.sh et copy_table_from_osm_to_cadastre.sh pour se placer dans l'arborescence de config : dans $DATA_DIR plutôt que /data

Bien vu. J'ai augmenté le fichier de conf pour y ajouter des variables, modifié en conséquence arborescence.sh ainsi que les 2 scripts

Dans config, il manque BAN_CACHE_DIR

Corrigé dans le même commit https://github.com/osm-fr/bano/commit/0ca9cfa0a85fb07238057ec57f85c4afcee4f9eb, merci

J'étais arrivé à faire fonctionner à peu près tout pour remplir les bases : créer les bases et les tables modifier BANO_DIR et DATA_DIR dans config (il faut modifier aussi EXPORT_SAS_DIR et EXPORT_WEB_DIR mais je n'ai pas testé l'export) ./arborescence.sh ./load_fantoir.sh

Dans load_fantoir.sh il faut indiquer l'URL du fichier source, qui change chaque trimestre

./load_COG.sh

Ici aussi il faut adapter l'URL du fichier COG source

./load_codes_postaux.sh ./load_osm_france_db.sh ./update_cadastre_adresses.sh

Ce script a été remplacé par une commande de bano (ci-dessous) : bano download_cadastre, elle même en voie de devenir obsolète car remplacée par 'bano download_ban' (travail en cours)

./update_table_infos_communes.sh

Script appelé par ./cron_osm.sh donc normalement à ne pas lancer manuellement

J'avais des erreurs avec setup.cfg, j'ai supprimé les versions des install_requires (j'ai aussi ajouté ipdb, mais je sais plus si c'était nécessaire) pip3 install -e bano

Pour connaître les commandes du module bano : bano --help. Elles sont quasi toutes présentes dans le cron_bano. Une exception : bano pre_process_suffixe qui est requise quand on met à jour le cadastre, donc possiblement obsolète avec l'arrivée de la BAN, je n'ai pas encore regardé

ensuite pour cron_bano.sh : il faut installer parallel

Oui

j'ai aussi supprimer les 2 1ère lignes /data/...

Lesquelles ?

J'ai modifié deplist.txt pour limiter le nombre de département à traiter, j'en ai gardé que 2, il me semble qu'avec un seul département, ça ne fonctionnait pas. Je n'ai pas essayé la partie export donc j'ai supprimé les parties exports et copie+zip et ensuite : ./cron_bano.sh qui va traiter commune par commune pour remplir les bases

Olyon commented 4 years ago

Merci beaucoup @Olyon +1 Je reprends tes points dans l'ordre

Je crois que ça n'a pas été dit, il faut se placer dans la branche packaging pour bano v2.

Tout à fait, un oubli de ma part. Il faudra bien fusionner cette branche dans master un jour...

Il faudrait modifier le début de load_osm_france_db.sh et copy_table_from_osm_to_cadastre.sh pour se placer dans l'arborescence de config : dans $DATA_DIR plutôt que /data

Bien vu. J'ai augmenté le fichier de conf pour y ajouter des variables, modifié en conséquence arborescence.sh ainsi que les 2 scripts

Dans config, il manque BAN_CACHE_DIR

Corrigé dans le même commit 0ca9cfa, merci

J'étais arrivé à faire fonctionner à peu près tout pour remplir les bases : créer les bases et les tables modifier BANO_DIR et DATA_DIR dans config (il faut modifier aussi EXPORT_SAS_DIR et EXPORT_WEB_DIR mais je n'ai pas testé l'export) ./arborescence.sh ./load_fantoir.sh

Dans load_fantoir.sh il faut indiquer l'URL du fichier source, qui change chaque trimestre

./load_COG.sh

Ici aussi il faut adapter l'URL du fichier COG source

./load_codes_postaux.sh ./load_osm_france_db.sh ./update_cadastre_adresses.sh

Ce script a été remplacé par une commande de bano (ci-dessous) : bano download_cadastre, elle même en voie de devenir obsolète car remplacée par 'bano download_ban' (travail en cours)

./update_table_infos_communes.sh

Script appelé par ./cron_osm.sh donc normalement à ne pas lancer manuellement

J'avais des erreurs avec setup.cfg, j'ai supprimé les versions des install_requires (j'ai aussi ajouté ipdb, mais je sais plus si c'était nécessaire) pip3 install -e bano

Pour connaître les commandes du module bano : bano --help. Elles sont quasi toutes présentes dans le cron_bano. Une exception : bano pre_process_suffixe qui est requise quand on met à jour le cadastre, donc possiblement obsolète avec l'arrivée de la BAN, je n'ai pas encore regardé

ensuite pour cron_bano.sh : il faut installer parallel

Oui

j'ai aussi supprimer les 2 1ère lignes /data/...

Lesquelles ?

source /data/work/vdct/bano_venv37/bin/activate cd /data/project/bano ça se refère à tes dossiers et je n'ai pas besoin d'autre chose en tapant ./cron_bano.sh dans le bon dossier.

J'ai modifié deplist.txt pour limiter le nombre de département à traiter, j'en ai gardé que 2, il me semble qu'avec un seul département, ça ne fonctionnait pas. Je n'ai pas essayé la partie export donc j'ai supprimé les parties exports et copie+zip et ensuite : ./cron_bano.sh qui va traiter commune par commune pour remplir les bases

Tout ça je l'ai tester avant que la partie BAN arrive, j'avais noté ce que je testais et qui fonctionnais :) et c'est à peu près ce que j'ai recopié là. (Il manque peut être des choses où j'ai buté mais je n'en ai plus de souvenir)

vdct commented 4 years ago

source /data/work/vdct/bano_venv37/bin/activate cd /data/project/bano ça se refère à tes dossiers et je n'ai pas besoin d'autre chose en tapant ./cron_bano.sh dans le bon dossier.

Ok. Il s'agit des chemins sur le serveur BANO en effet. La 1ere ligne fait référence à un virtualenv dans lequel est déployé le module bano avec ses dépendances. C'est pas indispensable mais pratique.

Tout ça je l'ai tester avant que la partie BAN arrive, j'avais noté ce que je testais et qui fonctionnais :) et c'est à peu près ce que j'ai recopié là. (Il manque peut être des choses où j'ai buté mais je n'en ai plus de souvenir)

Oui les modifs BAN sont récentes et toujours en cours, notamment pour impacter les exports.

En tout cas merci pour tes notes partagées ici, c'est la 1ere fois qu'un déroulé aussi complet est rendu public 👍 Si quelqu'un veut se lancer dans une rédaction de INSTALL.md ça devient possible