Open vdct opened 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 :
L'organisation générale est la suivante :
téléchargement des sources de données Adresse et OSM
Alimentation de la base de cache, nommée "osm" avec ces sources
Traitements python pour extraire de cette base les infos d'adresse et alimentation de la base de résultat, nommée "cadastre"
Export des données constituées, dans différents formats (CSV, JSON, TTL, SHP)
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.
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
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.
@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.
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.
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
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
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
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
Dans
https://wiki.openstreetmap.org/wiki/Osmosis/Installation#Linux
je vois qu'il existe deux façons Debian d'installer Osmosis. On ignore ?
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.
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
@geostonemarten https://wiki.openstreetmap.org/wiki/Osmosis/Quick_Install_(Windows) ?
Sinon : aucune chance que tu te procures une machine Linux ? ;)
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
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)
https://wiki.openstreetmap.org/wiki/Osmosis/Installation#Linux
apt install 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.
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.
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.
Suivre la procédure d'installation Osmosis/Quick Install
Installer la JRE de JAVA
Installer ImpOSM compilé pour Windows 64x
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.
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.
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"
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
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
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)
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
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