diff --git a/.github/workflows/eudonet_paris_import.yml b/.github/workflows/eudonet_paris_import.yml index 67bcced4e..b57845566 100644 --- a/.github/workflows/eudonet_paris_import.yml +++ b/.github/workflows/eudonet_paris_import.yml @@ -46,7 +46,9 @@ jobs: id: addok-bundle-cache with: path: docker/addok/addok-data - key: ${{ runner.os }}-addok-bundle- + key: ${{ runner.os }}-addok-bundle-${{ secrets.EUDONET_PARIS_KDRIVE_FILE_ID }} + restore-keys: | + ${{ runner.os }}-addok-bundle- - name: Download and unzip Addok bundle if: steps.addok-bundle-cache.outputs.cache-hit != 'true' diff --git a/Makefile b/Makefile index 9cb7c64bf..726db3c0f 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,9 @@ dbfixtures: ## Load tests fixtures redisshell: ## Connect to the Redis container docker-compose exec redis redis-cli +addok_build: ## Build Addok containers + ${_DOCKER_COMPOSE_ADDOK} build --force + addok_start: ## Start Addok containers ${_DOCKER_COMPOSE_ADDOK} up -d diff --git a/docker/addok/builder_db.Dockerfile b/docker/addok/builder_db.Dockerfile index 1c061a97a..c2a713504 100644 --- a/docker/addok/builder_db.Dockerfile +++ b/docker/addok/builder_db.Dockerfile @@ -1,6 +1,6 @@ -FROM postgis/postgis:14-3.3-alpine +FROM postgis/postgis:14-3.3 -RUN apk update -RUN apk add gdal wget unzip p7zip +RUN apt-get update +RUN apt-get install -y gdal-bin wget unzip p7zip COPY run.sh junctions_json.sql /data/ diff --git a/docker/addok/junctions_json.sql b/docker/addok/junctions_json.sql index e18663cf0..936917128 100644 --- a/docker/addok/junctions_json.sql +++ b/docker/addok/junctions_json.sql @@ -2,7 +2,7 @@ -- See: run.sh SELECT row_to_json(p) FROM ( - SELECT j.*, c.nom as city, cc.code_postal as postcode + SELECT j.*, c.nom as city, cc.code_insee as citycode, cc.code_postal as postcode FROM (SELECT 'junction_' || st_geohash(st_centroid(unnest(ST_ClusterWithin(st_intersection(r1.geometry, r2.geometry),0.0001)))) as id, 'poi' as type, 'junction' as poi, @@ -23,6 +23,6 @@ SELECT row_to_json(p) FROM (SELECT geometry, nom, insee_com AS code_insee FROM communes) UNION ALL (SELECT geometry, nom, insee_arm AS code_insee FROM arrondissements_municipaux) - ) c ON (ST_intersects(st_setsrid(st_makepoint(lon,lat),4326), geometry)) + ) c ON (ST_intersects(st_setsrid(st_makepoint(lon,lat),2154), geometry)) JOIN codes_communes cc ON cc.code_insee = c.code_insee ) as p diff --git a/docker/addok/run.sh b/docker/addok/run.sh index e1f7ee13c..4b504e625 100755 --- a/docker/addok/run.sh +++ b/docker/addok/run.sh @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!/bin/bash -eu cd /data mkdir -p download @@ -6,8 +6,8 @@ mkdir -p download # Adapted from: https://gist.github.com/cquest/c0a84e6757d15e66e6ae429e91a74a9e TEMP_DB=osm_junctions2addok -ADMIN_EXPRESS_URL=https://wxs.ign.fr/x02uy2aiwjo9bm8ce5plwqmr/telechargement/prepackage/ADMINEXPRESS_SHP_WGS84G_PACK_2023-07-04\$ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04/file/ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04.7z -CODES_POSTAUX_URL=https://www.data.gouv.fr/fr/datasets/r/5ed9b092-a25d-49e7-bdae-0152797c7577 +ADMIN_EXPRESS_URL=https://data.geopf.fr/telechargement/download/ADMIN-EXPRESS/ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22/ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22.7z +CODES_POSTAUX_URL=https://www.data.gouv.fr/fr/datasets/r/a889d75c-a287-4c8b-a5d4-eba1a7dce648 OSM_DATA_URL=https://download.geofabrik.de/europe/france/ile-de-france-latest-free.shp.zip function cleanup() { @@ -27,8 +27,8 @@ function download() { fi echo "-----> Décompression de ADMIN-EXPRESS..." - 7z e -aos -odownload download/ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04.7z "ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04/ADMIN-EXPRESS/1_DONNEES_LIVRAISON_2023-07-04/ADE_3-2_SHP_WGS84G_FRA/COMMUNE.*" - 7z e -aos -odownload download/ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04.7z "ADMIN-EXPRESS_3-2__SHP_WGS84G_FRA_2023-07-04/ADMIN-EXPRESS/1_DONNEES_LIVRAISON_2023-07-04/ADE_3-2_SHP_WGS84G_FRA/ARRONDISSEMENT_MUNICIPAL.*" + 7zr e -aos -odownload download/ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22.7z "ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22/ADMIN-EXPRESS/1_DONNEES_LIVRAISON_2024-01-00183/ADE_3-2_SHP_LAMB93_FXX-ED2024-01-22/COMMUNE.*" + 7zr e -aos -odownload download/ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22.7z "ADMIN-EXPRESS_3-2__SHP_LAMB93_FXX_2024-01-22/ADMIN-EXPRESS/1_DONNEES_LIVRAISON_2024-01-00183/ADE_3-2_SHP_LAMB93_FXX-ED2024-01-22/ARRONDISSEMENT_MUNICIPAL.*" if [ -z $NO_DOWNLOAD ]; then echo "-----> Téléchargement du fichier des codes postaux..." @@ -67,12 +67,6 @@ function make_junctions_json() { echo "-----> Préparation de la table codes_communes..." psql -d $TEMP_DB -c "CREATE TABLE codes_communes (code_insee CHAR(5) PRIMARY KEY, code_postal CHAR(5) NOT NULL);" - echo "-----> Téléchargement du fichier des codes postaux..." - # See: https://www.data.gouv.fr/fr/datasets/base-officielle-des-codes-postaux/ - pushd download - wget -N -nv --show-progress https://www.data.gouv.fr/fr/datasets/r/5ed9b092-a25d-49e7-bdae-0152797c7577 - popd - echo "-----> Préparation du fichier des codes postaux..." cat download/019HexaSmal.csv | # Ne garde que les colonnes code insee et code postal diff --git a/docs/tools/addok.md b/docs/tools/addok.md index 0ec550868..840e910f5 100644 --- a/docs/tools/addok.md +++ b/docs/tools/addok.md @@ -68,6 +68,10 @@ Cette section explique comment recréer le fichier `addok-dialog-bundle.zip` con * Mise à jour du dump Redis * Création du bundle ZIP + > **Attention** : votre mot de passe utilisateur sera demandé lors de la mise à jour du dump Redis. + + Le résultat sera un nouveau fichier `docker/addok/addok-dialog-bundle.zip`. + L'exécution prend typiquement plusieurs dizaines de minutes en raison de la taille des fichiers à télécharger (plusieurs Go). Il se peut que le téléchargement des données soit plus rapide en passant par votre navigateur. Vous trouverez les URLs à télécharger dans `docker/addok/run.sh`. @@ -78,9 +82,9 @@ Cette section explique comment recréer le fichier `addok-dialog-bundle.zip` con make addok_bundle NO_DOWNLOAD=1 ``` -1. Déposez le nouveau bundle dans le dossier partagé DiaLog sur le kDrive (lien sur le pad général). - +1. Déposez le nouveau `docker/addok/addok-dialog-bundle.zip` dans le dossier partagé DiaLog sur le kDrive (lien sur le pad général). 1. Mettre à jour l'URL du lien [dialog-addok-bundle] dans la présente doc +1. Suivez les étapes de [mise à jour des données Addok (Eudonet Paris)](./eudonet_paris.md#mise-à-jour-des-données-addok). ## Mettre à jour les données sources diff --git a/docs/tools/eudonet_paris.md b/docs/tools/eudonet_paris.md index 9b412fe9d..568ec9df4 100644 --- a/docs/tools/eudonet_paris.md +++ b/docs/tools/eudonet_paris.md @@ -98,5 +98,10 @@ Il faut donc que la GitHub Action télécharge le fichier ZIP contenant les donn Cela est fait par le script `tools/download_addok_bundle.sh`. Pour cela une clé d'API Infomaniak a été créée par @florimondmanca et enregistrée dans le secret `EUDONET_PARIS_KDRIVE_TOKEN`. -Le ZIP est mis en cache après le premier téléchargement. +L'identifiant du fichier sur kDrive est stocké dans le secret `EUDONET_PARIS_KDRIVE_FILE_ID`. + +#### Mise à jour des données Addok +Si un nouveau bundle Addok est stocké sur le kDrive, récupérer le FileID (visible dans l'URL de partage du fichier) et mettre à jour le secret `EUDONET_PARIS_KDRIVE_FILE_ID`. + +Le ZIP est mis en cache après le premier téléchargement. diff --git a/tools/download_addok_bundle.sh b/tools/download_addok_bundle.sh index 0ef1eaad1..931a81ee4 100755 --- a/tools/download_addok_bundle.sh +++ b/tools/download_addok_bundle.sh @@ -2,14 +2,13 @@ set -eux DRIVE_ID=184671 -FILE_ID=26732 ARCHIVE_ID=$( curl -L \ -X POST \ -H "Authorization: Bearer ${EUDONET_PARIS_KDRIVE_TOKEN}" \ -H "Content-Type: application/json" \ - -d "{\"file_ids\": [\"${FILE_ID}\"]}" \ + -d "{\"file_ids\": [\"${EUDONET_PARIS_KDRIVE_FILE_ID}\"]}" \ "https://api.infomaniak.com/3/drive/${DRIVE_ID}/files/archives" \ | jq --raw-output .data.uuid )