Skip to content

Commit 23ecc4d

Browse files
authored
Dev/add local compose (#94)
* dev: add docker compose pour génération en local * ajustements * finalisation
1 parent 7277b93 commit 23ecc4d

22 files changed

Lines changed: 1350 additions & 8 deletions

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ dist
66
.idea
77
*.egg-info
88
.venv
9+
data/**
10+
!data/**/
11+
data/generation/**
12+
core
13+
!.gitkeep

README.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,44 @@
11
# Route Graph Generator
22

3-
## Présentation
3+
## Présentation
44

5-
Route Graph Generator (r2gg) est un script Python qui permet la génération de graphes pour des moteurs de calcul d'itinéraire. Il a été développé pour générer les données directement utilisable par [Road2](https://github.com/IGNF/road2).
5+
Route Graph Generator (r2gg) est un script Python qui permet la génération de graphes pour des moteurs de calcul d'itinéraire. Il a été développé pour générer les données directement utilisable par [Road2](https://github.com/IGNF/road2).
66

7-
Actuellement, il y a trois formats de sortie : OSRM, pgRouting et Valhalla.
7+
Actuellement, il y a trois formats de sortie : OSRM, pgRouting et Valhalla.
88

99
La conversion se fait via les fonctions de la bibliothèque r2gg développée dans ce but. Une documentation plus détaillée de r2gg est consultable [ici](https://ignf.github.io/route-graph-generator/).
1010

11+
## Génerer des données en local
12+
13+
Un docker compose est mis à disposition pour générer des données Valhalla en local.
14+
15+
```
16+
UID=$(id -u) GID=$(id -g) docker compose up --build
17+
```
18+
19+
Attendre l'import de la donnée, puis
20+
21+
```
22+
docker compose exec r2gg sh -c "r2gg-sql2pivot docker/config/bdtopo2valhalla_local.json && r2gg-pivot2osm docker/config/bdtopo2valhalla_local.json && r2gg-osm2valhalla docker/config/bdtopo2valhalla_local.json && r2gg-road2config docker/config/bdtopo2valhalla_local.json"
23+
```
24+
25+
Les données se trouveront dans le dossier ./data/generation
26+
27+
Le docker compose lance aussi un serveur road2, pour lancer un calcul d'itinéraire, copier le lien suivant
28+
```
29+
http://localhost:8080/simple/1.0.0/route?resource=bdtopo-valhalla&profile=pedestrian&start=2.320041,48.8588897&end=2.3380277,48.8611473
30+
```
31+
32+
Pour faire tourner un service test valhalla sans la sur couche road2 sur les données générées, utiliser la commande suivante:
33+
```
34+
docker run valhalla --user $(id -u):$(id -g) -p 8002:8002 -v ${PWD}/data/generation:/custom_files -e use_tiles_ignore_pbf=True -e force_rebuild=False -e build_admins=False ghcr.io/valhalla/valhalla-scripted:latest
35+
```
36+
37+
Puis checker la création d'itinéraire via le lien suivant
38+
```
39+
http://localhost:8002/route?json={"locations":[{"lat": 48.8588897, "lon": 2.320041},{"lat": 48.8611473, "lon": 2.3380277}],"costing":"pedestrian","costing_options":{"pedestrian":{"walking_speed": 4}},"directions_options":{"format":"osrm"}}
40+
```
41+
1142
## Prérequis
1243

1344
Les prérequis au fonctionnement des scripts de génération sont décrits dans le [readme](https://ignf.github.io/route-graph-generator/docker/readme.html) de l'image docker.
@@ -44,9 +75,9 @@ pip3 install --user -e .
4475

4576
Pour pouvoir lancer les scripts de génération, il faut définir une configuration (au format JSON) par ressource à générer. Ce fichier de configuration fait références à d'autres fichiers de configuration : pour la gestion des logs, la gestion des connexions aux bases de données, et pour le calcul des coûts.
4677
Des exemples de tous ces fichiers sont présents dans le dépôt dans le dossier `io`.
47-
La documentation de ces fichiers de configuration est consultable [ici](https://github.com/IGNF/route-graph-generator/tree/master/io).
78+
La documentation de ces fichiers de configuration est consultable [ici](https://github.com/IGNF/route-graph-generator/tree/master/io).
4879

49-
Un exemple de ces fichiers est disponible dans la partie [docker](https://github.com/IGNF/route-graph-generator/tree/master/docker/config).
80+
Un exemple de ces fichiers est disponible dans la partie [docker](https://github.com/IGNF/route-graph-generator/tree/master/docker/config).
5081

5182
### Exécution
5283

@@ -94,6 +125,6 @@ Elle est indiquée dans le `__about__.py`.
94125

95126
Route-graph-generator est diffusé sous la licence GPL v3.
96127

97-
## Participer aux développements
128+
## Participer aux développements
98129

99-
Les participations à ce projet sont encouragées (votre notre [charte](./CODE_OF_CONDUCT.md) à ce sujet). Nous avons mis en place un [guide](./CONTRIBUTING.md) des contributions pour vous accompagner dans cette démarche.
130+
Les participations à ce projet sont encouragées (votre notre [charte](./CODE_OF_CONDUCT.md) à ce sujet). Nous avons mis en place un [guide](./CONTRIBUTING.md) des contributions pour vous accompagner dans cette démarche.

data/generation/.gitkeep

Whitespace-only changes.

docker-compose.yml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
version: "3.8"
2+
services:
3+
db:
4+
image: postgis/postgis:15-3.4
5+
environment:
6+
POSTGRES_USER: r2gg
7+
POSTGRES_PASSWORD: r2gg
8+
POSTGRES_DB: pivot_db
9+
volumes:
10+
- db_data:/var/lib/postgresql/data
11+
ports:
12+
- "5432:5432"
13+
14+
importer:
15+
build:
16+
context: ./docker/import
17+
dockerfile: Dockerfile
18+
depends_on:
19+
- db
20+
environment:
21+
- PGUSER=r2gg
22+
- PGPASSWORD=r2gg
23+
- PGHOST=db
24+
- PGPORT=5432
25+
- SOURCE_DB=source_db
26+
- GPKG_URL=https://data.geopf.fr/telechargement/download/BDTOPO/BDTOPO_3-5_TOUSTHEMES_GPKG_LAMB93_D075_2026-03-15/BDTOPO_3-5_TOUSTHEMES_GPKG_LAMB93_D075_2026-03-15.7z
27+
- GPKG_IN_ARCHIVE=BDTOPO_3-5_TOUSTHEMES_GPKG_LAMB93_D075_2026-03-15/BDTOPO/1_DONNEES_LIVRAISON_2026-03-00146/BDT_3-5_GPKG_LAMB93_D075_ED2026-03-15/BDT_3-5_GPKG_LAMB93_D075-ED2026-03-15.gpkg
28+
# importer script will run once to load the source DB
29+
30+
r2gg:
31+
user: "${UID}:${GID}"
32+
build:
33+
context: .
34+
dockerfile: docker/debian/Dockerfile
35+
depends_on:
36+
db:
37+
condition: service_started
38+
importer:
39+
condition: service_completed_successfully
40+
environment:
41+
- DATABASE_URL=postgresql://r2gg:r2gg@db:5432/pivot_db
42+
volumes:
43+
- ./:/user/app
44+
- ./data/generation:/home/docker/data/generation
45+
working_dir: /user/app
46+
command: >
47+
bash -c "
48+
r2gg-sql2pivot docker/config/bdtopo2valhalla_local.json &&
49+
r2gg-pivot2osm docker/config/bdtopo2valhalla_local.json &&
50+
r2gg-osm2valhalla docker/config/bdtopo2valhalla_local.json &&
51+
r2gg-road2config docker/config/bdtopo2valhalla_local.json
52+
"
53+
secrets:
54+
- db_config
55+
56+
road2:
57+
build:
58+
context: ../road2/
59+
dockerfile: docker/distributions/debian/Dockerfile
60+
depends_on:
61+
r2gg:
62+
condition: service_completed_successfully
63+
ports:
64+
- "8080:8080"
65+
volumes:
66+
- ./data/:/home/docker/data
67+
- ./docker/config:/home/docker/config
68+
69+
volumes:
70+
db_data:
71+
72+
secrets:
73+
db_config:
74+
file: ./docker/data/pivot_base.json

0 commit comments

Comments
 (0)