Ajout d'un script d'ingestion des données laposte-insee

Je n'ai pas encore proprement releasé fast-fantoir. On pointe pour
l'instant sur une branche WIP. Le format de la DB générée ne devrait
pas cependant changer.

Ça vaudrait probablement le coup de wrapper tout le pipeline (ie.
génération des données FANTOIR *et* insee) dans un seul et même script
provisionné par Nix a terme.
This commit is contained in:
Félix Baylac-Jacqué 2021-11-17 22:24:27 +01:00
parent f8ba58b120
commit 17612b2a8b
No known key found for this signature in database
GPG key ID: EFD315F31848DBA4
3 changed files with 53 additions and 1 deletions

3
.gitignore vendored
View file

@ -1,2 +1,3 @@
__pycache__
/elig-test.ini
/elig-test.ini
*~

View file

@ -10,6 +10,24 @@ Nous utilisons [poetry](https://python-poetry.org/) pour gérer les dépendances
Une fois poetry installé, vous pouvez obtenir les dépendances Python à l'aide de `poetry install`. Vous pouvez ensuite obtenir un interprêteur Python pré-configuré pour utiliser ces dépendances à l'aide de `poetry shell`.
## Générer/Mettre à jour la base d'adresse.
1. Récupérer les données FANTOIR les plus récentes sur cette page: https://www.data.gouv.fr/fr/datasets/fichier-fantoir-des-voies-et-lieux-dits/.
1. Transformez ce fichier texte en une base de données SQLite a l'aide de ce logiciel: https://git.alternativebit.fr/NinjaTrappeur/fast-fantoir/src/branch/fastestest
1. Récupérez la base de données générée puis injectez les données insee à l'aide du script `./data/prepare-fantoir-db`
```
» ./data/prepare-fantoir-db fantoir.sqlite
Downloading the latest laposte insee data
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2625k 0 2625k 0 0 89006 0 --:--:-- 0:00:30 --:--:-- 99k
Importing data to DB
```
La base de données est alors prête, vous pouvez la mettre où vous voulez tant qu'elle est correctement pointée par `db_addresses_sqlite_path` dans le fichier de configuration `axione-elig-test.ini`.
## Jouer les Tests
Nous avons quelques tests pour le parseur. Vous pouvez les jouer à l'aide de:

33
data/prepare-fantoir-db Executable file
View file

@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -euo pipefail
if [ "$#" -ne 1 ]; then
echo "Usage: prepare-fantoir-db path-to-fantoir-db"
echo ""
echo "ERROR: Missing fantoir db"
exit 1
fi
fantoirDb="$1"
# Setup tmp working dir
tmpDir=$(mktemp -d)
posteData="${tmpDir}"/poste.csv
tmpSql="${tmpDir}"/import-insee-codes.sql
clean_tmp () {
rm -r "${tmpDir}"
}
trap clean_tmp EXIT
echo "Downloading the latest laposte insee data"
echo ""
curl "https://datanova.laposte.fr/explore/dataset/laposte_hexasmal/download/?format=csv&timezone=Europe/Berlin&lang=fr&use_labels_for_header=true&csv_separator=%3B" > "${posteData}"
cat >"${tmpSql}" <<EOF
.separator ";"
.import ${posteData} poste_insee
EOF
echo "Importing data to DB"
echo ""
sqlite3 "${fantoirDb}" < "${tmpSql}"