Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Docker support #342

Closed
wants to merge 163 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
8485a7c
Amorce v3 : setup DB, chargement TOPO
vdct Aug 13, 2022
f072ad4
Autocommit pour toutes les bases
vdct Aug 15, 2022
239a686
Log
vdct Aug 15, 2022
eed989a
Setup
vdct Aug 15, 2022
c3323ed
Autocommit
vdct Aug 15, 2022
23c6e41
Process ban & topo
vdct Aug 15, 2022
b3dfe99
Setup
vdct Aug 15, 2022
c25c7f2
affichage des erreurs
vdct Aug 23, 2022
cd4c8db
COG (WIP), table BAN
vdct Aug 23, 2022
bd68e0d
Modele adresse & adresses
vdct Aug 23, 2022
72cd1b9
COG (WIP)
vdct Aug 23, 2022
443030b
COG (WIP)
vdct Aug 23, 2022
993da1b
Suffixes
vdct Aug 23, 2022
cc3791b
BAN, suffixes, COG, doc...
vdct Aug 23, 2022
2ecc6c1
Imposm avec parametres en fichier et 4326
vdct Sep 2, 2022
7e717a1
WIP rapprochement
vdct Sep 2, 2022
96c1520
renommage
vdct Sep 2, 2022
441d6fc
Chargement TOPO
vdct Sep 2, 2022
d71f06c
Tables des communes en 4326
vdct Sep 2, 2022
9eeba71
Modele TOPO
vdct Sep 2, 2022
b6c5b16
Amorce de boite à outils
vdct Sep 2, 2022
19aabd0
Suffixes en 4326
vdct Sep 2, 2022
ca64b2a
Programme v3
vdct Sep 2, 2022
db1eb97
1ers tests de rapprochement (WIP)
vdct Sep 6, 2022
e64f687
Gestion des noms
vdct Sep 25, 2022
47d8b4c
Gestion des noms
vdct Sep 25, 2022
5271aeb
Table suffixe
vdct Sep 25, 2022
d13379a
Numeros OSM
vdct Sep 25, 2022
ac203e3
Structure et process imposm
vdct Oct 2, 2022
b35ea3d
PG hstore => Python dict
vdct Oct 2, 2022
5a0b56c
Chargement des numeros
vdct Oct 2, 2022
06c5d2f
homogénéisation : code_insee
vdct Oct 2, 2022
c682042
nature du nom
vdct Oct 3, 2022
512be04
insee_com -> code_insee
vdct Oct 3, 2022
c5208c7
WIP rapprochements, requetes, modele de données
vdct Oct 14, 2022
af0527a
renommage ban_odbl -> ban
vdct Oct 18, 2022
675b7c1
Usage du COG
vdct Oct 18, 2022
017f7ba
Pas besoin de doubles quotes au chargement PG
vdct Oct 18, 2022
a5bfea1
adaptation pour lancement par dept
vdct Oct 18, 2022
08299e2
Chargement BAN avec gestion des erreurs
vdct Oct 22, 2022
acb3836
Rapprochement par lots - logs
vdct Oct 23, 2022
6c57ce2
Format des données en sortie
vdct Oct 23, 2022
fd402f8
WIP lieux-dits
vdct Dec 18, 2022
cd6de24
centroides, ld, passe unique
vdct Dec 28, 2022
8b38126
ménage
vdct Dec 31, 2022
f3a8ca5
points nommés
vdct Dec 31, 2022
7ad3034
Suppression de code_cadastre
vdct Dec 31, 2022
c33b533
plus de rapprochement par source
vdct Jan 1, 2023
3af7da3
centroides complementaires
vdct Jan 1, 2023
4094395
Base unique - creation de la BD
vdct Jan 1, 2023
9e65dba
menage
vdct Jan 1, 2023
8e44a00
Base unique - propagation des modifs
vdct Jan 1, 2023
3ea9c69
Calcul des suffixes dans l'import BAN
vdct Feb 26, 2023
34e3b24
Une seule base
vdct Feb 26, 2023
ef464f7
Index geom BAN
vdct Feb 26, 2023
9283c44
Autocommit
vdct Feb 26, 2023
5d77237
Base unique
vdct Mar 10, 2023
92cd8ab
COG communes
vdct Mar 10, 2023
3131269
README en cours
vdct Mar 10, 2023
5610997
Fantoir sans cle (WIP)
vdct Mar 13, 2023
7c2000c
Fantoir sans cle (WIP)
vdct Mar 17, 2023
28d6cfa
Base unique
vdct Mar 17, 2023
bb3ab1e
Fantoir sans cle (WIP)
vdct Mar 17, 2023
17a5ac8
Table statut_numero
vdct Mar 17, 2023
782f2f5
Table statut_fantoir
vdct Mar 17, 2023
1351054
Renommage de champ
vdct Mar 17, 2023
1939c3f
Tables de statut pour Pifometre
vdct Apr 23, 2023
47106ec
indexes
vdct Apr 24, 2023
50d1705
complement centroides
vdct Apr 25, 2023
f5e931b
indexes
vdct May 1, 2023
88b34b6
indexes
vdct May 1, 2023
6814e25
indexes
vdct May 1, 2023
fb911c2
cron osm v3 en 4326
vdct May 14, 2023
a5aacfd
batch vers batch_historique
vdct May 20, 2023
4cd90b5
batch index
vdct May 22, 2023
f2356b2
noms anciennes communes, fantoir sur 9
vdct May 22, 2023
8c40740
Fantoirs fictifs de la BAN
vdct May 29, 2023
8f5e992
caracteres parasite dans les LD
vdct May 29, 2023
3ebf74c
Fantoirs fictifs de la BAN - print en trop
vdct May 29, 2023
05cd352
Statut pour les lieux-dits limitrophes
vdct May 29, 2023
aee41a1
+type voie GRAND RUE
vdct May 30, 2023
757802a
dedoublonnage des numeros OSM
vdct Jun 2, 2023
b676ec8
conversion Fantoir -> Topo au besoin
vdct Jun 4, 2023
1ef22bb
index
vdct Jun 4, 2023
1a588f1
code dept + TAB dans les noms
vdct Jun 5, 2023
96da383
substitution de fantoir BAN par OSM
vdct Jun 6, 2023
0511e65
Type d'anomalie d'adresse
vdct Jun 7, 2023
6bfe6f8
remplacement des fantoirs BAN par sous-commune
vdct Jun 17, 2023
ca60021
+communes summary
vdct Jun 21, 2023
5de43e1
typologies d'adresses
vdct Jun 25, 2023
79a66c5
typologies d'adresses
vdct Jul 4, 2023
a5cd980
Adresses OSM sans rue ou place ou LD
vdct Jul 8, 2023
25d722b
Crons
vdct Jul 8, 2023
1a7d7f7
Gestion du 304 ban
vdct Jul 8, 2023
db8ad59
Index pour Pifometre
vdct Jul 9, 2023
5d39cf7
Index pour Pifometre
vdct Jul 9, 2023
3c8818b
substitution & ET (#265)
vdct Jul 9, 2023
c669e04
Adresses OSM sans rue ou place ou LD - fallback des noms
vdct Jul 9, 2023
a9fe576
Ajout des FANTOIR BAN seulement si présents dans TOPO
vdct Jul 15, 2023
cf6f074
colonne FANTOIR dans la source BAN
vdct Jul 15, 2023
f19559d
effacement auto du lock apres 4h de presence
vdct Jul 16, 2023
9c691cb
cron bano +table bis
vdct Jul 16, 2023
6c45951
Calcul du code FANTOIR au chargement BAN
vdct Jul 16, 2023
1899c53
Modifs pour Pifometre
vdct Jul 17, 2023
b439b4a
messages cron
vdct Jul 28, 2023
7554a7d
suppr test Lille
vdct Jul 28, 2023
cb28946
Suppression des noms issus des arrêts de bus (#363)
vdct Aug 4, 2023
1cc0070
Suppression des noms issus des arrêts de bus - platform (#363)
vdct Aug 4, 2023
5126b06
Suppression des noms d'admin_centre pour les rapprochements (#364)
vdct Aug 4, 2023
e0d5970
+id_ban & fix correspondance fantoir BAN OSM
vdct Aug 6, 2023
0e5314a
màj en continu des polygones admin
vdct Aug 7, 2023
ef19731
ajout du setuppython dans le cron
vdct Aug 9, 2023
682eed2
màj quotidienne des polygones de communes
vdct Aug 10, 2023
0e4c517
Abrev RTE RTE
vdct Oct 7, 2023
5d21e68
Table de stats par commune
vdct Oct 15, 2023
294f7da
complement de code Fantoir pour les noms en privilegiant OSM
vdct Oct 18, 2023
672c21e
centroides en Web Mercator pour le rendu Pifometre
vdct Oct 19, 2023
3432f89
Table de stats par commune - date de maj pour cumul
vdct Oct 25, 2023
beac888
Table de stats par commune - historisation
vdct Oct 25, 2023
c51c5fc
Nouvelle structure du CSV BAN
vdct Nov 5, 2023
51910a7
Rapprochement KO sur les numeros OSM si nom different (#366)
vdct Nov 15, 2023
0111682
COG 2023
vdct Nov 19, 2023
8c1d7e0
COG 2023
vdct Nov 20, 2023
66dd2ab
table infos_communes pour les exports JSON
vdct Nov 20, 2023
25e0e8a
Table des CPs pour les exports JSON
vdct Nov 21, 2023
5053d48
Communes pour les exports JSON
vdct Nov 21, 2023
d1a61de
Point d'entrée des exports
vdct Nov 25, 2023
cc7a766
Préparation des exports
vdct Nov 25, 2023
1b52f7c
COG pyramide admin pour les exports
vdct Jan 1, 2024
e553e53
Table commune-codes postaux de source La Poste pour les exports
vdct Jan 1, 2024
a5344fa
Priorité aux lieux-dits sur les centroïdes
vdct Jan 1, 2024
f1c57c0
WIP Export JSON
vdct Jan 1, 2024
dde154b
menage
vdct Jan 1, 2024
dafdf08
WIP Export JSON
vdct Jan 7, 2024
7672fe5
WIP exports
vdct Jan 14, 2024
b57cdad
WIP exports
vdct Jan 17, 2024
ae54248
import CPs : changement d'URL
vdct Jan 17, 2024
7c46098
nettoyage des TAB dans la BAN au chargement
vdct Jan 17, 2024
e36206b
cron +exports
vdct Jan 17, 2024
7109b4a
table de polygones postaux pour les exports
vdct Jan 17, 2024
19c748c
Bano v3 dev (#374)
vdct Jan 22, 2024
3d37e6b
Bano v3 dev (#377)
vdct Jan 30, 2024
c4d1807
Bano v3 dev (#379)
vdct Feb 1, 2024
f9c116e
Bano v3 dev (#380)
vdct Feb 4, 2024
d364126
Bano v3 dev (#381)
vdct Feb 4, 2024
eb8bcc0
Gestion des CPs multiples dans les exports JSON (#222)
vdct Feb 7, 2024
18b2c92
Fix ini_base script
frodrigo Feb 15, 2024
35126d1
Add missing COG_DIR to config
frodrigo Feb 15, 2024
0f2a544
Load topo only for configured deps
frodrigo Feb 16, 2024
c9040c2
Does not fail on CP not modified file download
frodrigo Feb 16, 2024
237202a
Load the download file with imposm
frodrigo Feb 15, 2024
a5c02d0
Good practice, stop psql on first error when run sql script
frodrigo Feb 14, 2024
75c95f3
Stop all bash scripts on first error
frodrigo Feb 14, 2024
1dba820
Run scripts from project dir
frodrigo Feb 22, 2023
116a815
Make imposm follow config
frodrigo Feb 16, 2024
4d97598
exit with 1 on error, does not log direcly from script
frodrigo Feb 14, 2024
f00ed5c
Only one source for deps
frodrigo Feb 14, 2024
5cbf8d5
Make LANG configurable, avoid tons of warning when remote postgres is…
frodrigo Feb 14, 2024
4d33983
Make postgres database configurable
frodrigo Feb 14, 2024
824020d
Does not log from script
frodrigo Feb 14, 2024
747837e
Switch from python module to install to module to run
frodrigo Dec 3, 2022
f54e12a
Does not source py env from script
frodrigo Feb 16, 2024
2d045ce
Add Docker support
frodrigo Feb 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
data
*.osm.pbf
18 changes: 18 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM python:3.12-bookworm

RUN apt-get update && \
apt-get install -y \
gdal-bin \
parallel \
postgresql-client \
python3-virtualenv

WORKDIR /opt/imposm
RUN wget https://github.com/omniscale/imposm3/releases/download/v0.11.1/imposm-0.11.1-linux-x86-64.tar.gz && \
tar -xvzf imposm-0.11.1-linux-x86-64.tar.gz && \
ln -s /opt/imposm/imposm-0.11.1-linux-x86-64/imposm /usr/bin/imposm

WORKDIR /opt/bano

ADD requirements.txt .
RUN pip install -r requirements.txt
138 changes: 138 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,141 @@ bano
====

Différents outils pour la constitution de la Base Adresses Nationale Ouverte

v3 à venir :
- unification des adresses voies & lieux-dits
- gestion des communes fusionnées
- remplacement de FANTOIR par TOPO
- etc

## Dépendances

Il faut pour alimenter la base OSM locale dans laquelle puise BANO :
* [imposm](https://github.com/omniscale/imposm3) pour le chargement. Par défaut la dernière version.
* [osmosis](https://github.com/openstreetmap/osmosis) pour la mise à jour incrémentale. Par défaut la dernière version.

Autres outils : parallel.

## Installation

Mettre en place un environnement virtuel python :
```
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
```

## Configuration

Première é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.

### Création des répertoires
Une fois le fichier `config` rempli, lancer la création des répertoires avec :
```
arborescence.sh
```

### Liste des départements

Les départements pris en compte sont listés dans `deplist.txt`. Cette liste peut être modifiée.

### Création de la base de données

La base de données qui accueille toutes les données BANO (les sources et les données produites) s'appelle 'bano' est doit être créée en début d'installation. C'est l'utilisateur 'postgres' qui doit exécuter les scripts de création de la base.

```
sudo -u postgres -s "./create_base.sh"
```
On utilise ensuite le module python 'bano' pour terminer la configuration de la BD :
```
bano setup_db
```
À l'issue de cette étape toutes les tables nécessaires existent dans la BD. Elles sont toutes vides.

## Chargement des données OSM
### Chargement initial
D'abord renseigner le fichier imposm.config, puis lancer :

```
./load_osm_france_db.sh
```
À l'issue, les tables du schéma osm sont remplies.

### Mise à jour en continu

## Chargement des autres données sources
Chaque source a sa commande de chargement
### TOPO (ex FANTOIR)
```
bano charge_topo
```
### BAN
```
bano charge_ban
bano update_bis_table
```
### COG
```
bano charge_cog
```
### Lieux-dits du Cadastre
```
bano charge_ld_cadastre
```

### Commande `bano`

Activer l'environnement virtuel python (si pas déjà activé) :
```
source venv/bin/activate
```

Pour connaître les commandes du module bano :
```
python -m bano --help
```

Quasiment toutes les options sont utilisées dans le script `cron_bano`.

## Docker

### Configuration
Il ne faut pas modifier le fichier de configuration pour l'exécution avec docker. Pour changer le chemin ou sont stocké les données ajuster le volume data dans `docker-compose`.

```
# Créer l'espace de travail
mkdir -p data
chmod a+s data
docker-compose run --rm tools ./arborescence.sh
```

### Initialisation
```
# Démarre Postgres et attend un peu avant de l'utiliser
docker-compose up -d postgres && sleep 5
docker-compose exec -u postgres postgres psql -c "DROP schema tiger CASCADE"
docker-compose run --rm tools bash -c "source config && ./init_base.sh"
docker-compose run --rm tools bash -c "source config && python -m bano setup_db"
```

Si besoin de se connecter sur la base de données :
```
docker-compose exec -u postgres postgres psql
```

```
# Charger les données OSM
docker-compose run --rm tools ./load_osm_france_db.sh http://download.openstreetmap.fr/extracts/europe/france/franche_comte/territoire_de_belfort.osm.pbf

# Charger les autres données

docker-compose run --rm tools bash -c "source config && python -m bano charge_topo"
docker-compose run --rm tools bash -c "source config && python -m bano charge_ban"
docker-compose run --rm tools bash -c "source config && python -m bano update_bis_table"
docker-compose run --rm tools bash -c "source config && python -m bano charge_cog"
docker-compose run --rm tools bash -c "source config && python -m bano charge_ld_cadastre"
docker-compose run --rm tools bash -c "source config && python -m bano charge_cp"
### Mise à jour
```
docker-compose run --rm tools bash -c "source config && ./cron_bano.sh"
```
5 changes: 4 additions & 1 deletion arborescence.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

set -e

source config
mkdir -p $LOG_DIR
mkdir -p $DATA_DIR
Expand All @@ -10,6 +12,7 @@ mkdir -p $BAL_CACHE_DIR
mkdir -p $EXPIRE_TILES_DIR
mkdir -p $DOWNLOAD_DIR
mkdir -p $IMPOSM_CACHE_DIR
mkdir -p $COG_DIR
mkdir -p $EXPORT_SAS_DIR
mkdir -p $EXPORT_WEB_DIR
mkdir -p $TMP_DIR
mkdir -p $TMP_DIR
7 changes: 5 additions & 2 deletions avancement_cumul.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
psql -d cadastre -U cadastre -c "SELECT source,etape, date_debut,date_fin,dept,cadastre_com,nom_com,nombre_adresses FROM batch ORDER BY id_batch DESC LIMIT 10;"
#!/bin/bash

set -e

$pgsql_CADASTRE -c "SELECT source,etape, date_debut,date_fin,dept,cadastre_com,nom_com,nombre_adresses FROM batch ORDER BY id_batch DESC LIMIT 10;"
ps -eaf|grep 'bano'
ps -eaf|grep cumul

3 changes: 3 additions & 0 deletions bano.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ tables:
- {key: 'addr:housenumber', name: 'addr:housenumber', type: string}
- {key: 'addr:street', name: 'addr:street', type: string}
- {key: 'addr:place', name: 'addr:place', type: string}
- {key: 'addr:postcode', name: 'addr:postcode', type: string}
- {key: 'ref:FR:FANTOIR', name: 'ref:FR:FANTOIR', type: string}
- {key: 'highway', name: 'highway', type: string}
- {key: 'amenity', name: 'amenity', type: string}
Expand Down Expand Up @@ -67,6 +68,8 @@ tables:
- {key: admin_level, name: admin_level, type: integer}
- {key: 'addr:housenumber', name: 'addr:housenumber', type: string}
- {key: 'addr:street', name: 'addr:street', type: string}
- {key: 'addr:place', name: 'addr:place', type: string}
- {key: 'addr:postcode', name: 'addr:postcode', type: string}
- {key: 'ref:INSEE', name: 'ref:INSEE', type: string}
- {key: 'ref:FR:FANTOIR', name: 'ref:FR:FANTOIR', type: string}
- {key: 'ref:FR:FANTOIR:left', name: 'ref:FR:FANTOIR:left', type: string}
Expand Down
Empty file removed bano/__init__.py
Empty file.
Loading