You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/articles/2022/2022-06-07_ferrargis-carte-de-ferraris-qgis.md
+55-49Lines changed: 55 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ Prérequis :
31
31
32
32
- QGIS > 3.20
33
33
- des droits d'installation
34
-
- de préférence un PC sous Linux (ou via [WSL](/articles/2020/2020-10-28_gdal_windows_subsystem_linux_wsl/)) mais l'ensemble des outils sont aussi disponibles sur Windows et MacOS
34
+
- de préférence un PC sous Linux (ou via [WSL](/articles/2020/2020-10-28_gdal_windows_subsystem_linux_wsl/)) mais les outils utilisés sont tous disponibles sur Windows et MacOS
35
35
36
36
## Introduction
37
37
@@ -105,19 +105,19 @@ C'est parti pour la création d'un cluster aux ~~petits oignons~~ petites olives
Ver Cluster Port Status Owner Data directory Log file
116
116
12 main 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
117
-
14 main 5434 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
117
+
14 main 54342 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
118
118
```
119
119
120
-
L'idée c'est donc de créer un cluster dédié avec des paramètres optimisés pour les tâches souhaitées (import de données OSM) et par rapport à l'ordinateur utilisé (un Dell XPS 15 7590 avec un Intel Core i7-9750H de 9e génération - voir la [fiche technique](https://www.dell.com/support/manuals/fr-fr/xps-15-7590-laptop/xps-15-7590-setup-and-specifications/processeurs?guid=guid-bfa52f40-8ad1-4df0-8d0f-942766bc2118&lang=fr-fr)).
120
+
L'objectif est donc de créer un cluster dédié avec des paramètres optimisés pour les tâches souhaitées (import de données OSM) et par rapport à l'ordinateur utilisé (un Dell XPS 15 7590 avec un Intel Core i7-9750H de 9e génération - voir la [fiche technique](https://www.dell.com/support/manuals/fr-fr/xps-15-7590-laptop/xps-15-7590-setup-and-specifications/processeurs?guid=guid-bfa52f40-8ad1-4df0-8d0f-942766bc2118&lang=fr-fr)).
121
121
122
122
Pour cela, on va s'appuyer sur deux éléments :
123
123
@@ -128,9 +128,9 @@ Pour cela, on va s'appuyer sur deux éléments :
128
128
129
129
C'est parti, on crée un cluster `ferrargis` en passant directement les options qui nous intéressent. Notez que je réduis certains paramètres pour garder la main sur mon interface graphique et qu'en cas de valeurs différentes entre PGTune et osm2pgsql, j'ai choisi de donner la priorité à ce dernier :
130
130
131
-
```bash
131
+
```bash title="Commande multi-ligne pour créer un cluster PostgreSQL"
exécution de l'initialisation après bootstrap... ok
188
190
synchronisation des données sur disque... ok
189
191
Ver Cluster Port Status Owner Data directory Log file
190
-
14 ferrargis 5434 down postgres /var/lib/postgresql/14/ferrargis /var/log/postgresql/postgresql-14-ferrargis.log
192
+
14 ferrargis 54342 down postgres /var/lib/postgresql/14/ferrargis /var/log/postgresql/postgresql-14-ferrargis.log
191
193
```
192
194
<!-- markdownlint-enable MD046 -->
193
195
194
-
Il est évidemment possible de changer les paramètres du cluster par la suite, soit via une instuction sql`ALTER SYSTEM` soit en éditant le `postgresql.conf` :
196
+
Il est évidemment possible de changer les paramètres du cluster par la suite, soit via une instuction SQL`ALTER SYSTEM`, soit en éditant le `postgresql.conf` :
!!! tip "Astuce pour avoir une Calzone réussie à chaque installation"
211
213
Il est possible de changer le comportement des scripts de post-installation du packaging PostgreSQL en modifiant le fichier `/etc/postgresql-common/createcluster.conf`, soit pour désactiver la création automatisée du cluster `main`, soit pour en modifier les paramètres par défaut (par exemple avec `initdb_options = '--data-checksums --lc-messages=C'`).
212
214
213
215
#### Créer le rôle et gérer l'accès
214
216
215
-
Création du rôle en base correspondant à l'utilisateur système (trouvable avec la commande `whoami`) de façon à utiliser le mode d'authentification `peer`) :
217
+
Comme on travaille à la maison, on va se faciliter la vie et créer un rôle en base correspondant à l'utilisateur système (trouvable avec la commande `whoami`) de façon à utiliser le mode d'authentification `peer`) :
De façon à ne pas stocker de mot de passe en clair dans les applications clientes comme QGIS et pour se faciliter la vie, on se crée un fichier `.pgpass`dans le répertoire personnel de l'utilisateur :
De même, de façon à garder la connexion la plus générique possible dans le but de rendre la suite le plus facilement reproductible possible, on stocke les paramètres de connexion dans le fichier `PGSERVICE` (voir [la doc officielle de PostgreSQL](https://www.postgresql.org/docs/current/libpq-pgservice.html) et [celle de QGIS](https://docs.qgis.org/3.22/fr/docs/user_manual/managing_data_source/opening_data.html#pg-service-file)) :
230
+
231
+
- emplacement par défaut : `~/.pg_service.conf` (Linux) ou `%APPDATA%/postgresql/.pg_service.conf` (Windows)
232
+
- ou personnalisable via une variable d'environnement `PGSERVICEFILE` pointant sur le fichier directement (nommage libre) ou `PGSYSCONFDIR` pointant sur le répertoire où trouver le fichier (qui doit forcément être nommé `pg_service.conf`)
228
233
229
234
```ini
230
235
[local_ferrargis]
231
236
dbname=osm
232
237
host=localhost
233
-
port=5434
238
+
port=54342
234
239
```
235
240
236
241
#### Créer la base de données
@@ -240,13 +245,13 @@ port=5434
240
245
Créer la base de données :
241
246
242
247
```bash
243
-
createdb --owner $(whoami) --port 5434 --encoding=UTF8 osm
248
+
createdb --owner $(whoami) --port 54342 --encoding=UTF8 osm
244
249
```
245
250
246
251
S'y connecter pour tester puis ressortir :
247
252
248
253
```bash
249
-
> psql -p 5434 -U $(whoami) osm
254
+
> psql -p 54342 -U $(whoami) osm
250
255
psql (14.3 (Ubuntu 14.3-1.pgdg20.04+1))
251
256
Saisissez « help » pour l'aide.
252
257
@@ -257,13 +262,13 @@ osm=# \q
257
262
Activer PostGIS :
258
263
259
264
```bash
260
-
psql -p 5434 -U $(whoami) osm -c "CREATE EXTENSION postgis;"
265
+
psql -p 54342 -U $(whoami) osm -c "CREATE EXTENSION postgis;"
261
266
```
262
267
263
268
Activer HSTore :
264
269
265
270
```bash
266
-
psql -p 5434 -U $(whoami) osm -c "CREATE EXTENSION hstore;"
271
+
psql -p 54342 -U $(whoami) osm -c "CREATE EXTENSION hstore;"
Franchement on va pas se mentir : si Napoléon avait eu les données OpenStreetMap, on aurait moins de [problèmes de bornes](https://www.lavoixdunord.fr/992266/article/2021-04-27/bousignies-sur-roc-il-deplace-une-borne-frontiere-et-viole-le-traite-de-courtrai) (de frontières, pas de ministre) de nos jours.
282
+
Franchement on va pas se mentir : si Napoléon avait eu les données OpenStreetMap, on aurait moins de [problèmes de bornes](https://www.lavoixdunord.fr/992266/article/2021-04-27/bousignies-sur-roc-il-deplace-une-borne-frontiere-et-viole-le-traite-de-courtrai) (de frontières, pas de ministre) de nos jours ! :smile:
Un petit tour par GeoFabrik pour télécharger les données de la Belgique : <https://download.geofabrik.de/europe/belgium.html>.
280
285
281
286
On peut également utiliser un outil en ligne de commande, par exemple `wget` avec l'option `-N` qui permet de télécharger uniquement si le fichier distant (ici le serveur GeoFabrik) est plus récent par rapport à la version locale (sur votre machine) :
Si on craint de manquer d'espace disque, de puissance ou que vous ciblez une zone en particulier et qu'on ne souhaite pas charger une région ou un département entier pour rien, on peut découper les données avec une emprise avant de les importer avec un outil comme Osmium par exemple.
296
+
Si on craint de manquer d'espace disque, de puissance ou qu'on cible une zone restreinte en particulier, on peut découper les données avec une emprise avant de les importer avec un outil comme Osmium par exemple.
292
297
293
298
On installe [Osmium](https://osmcode.org/osmium-tool/) :
294
299
295
300
```sh
296
301
sudo apt install osmium-tool
297
302
```
298
303
299
-
Et on découpe sur la zone qui nous intéresse :
304
+
Et on découpe sur la zone qui nous intéresse, par exemple Bruxelles:
- `--port` : port de connexion à la base de données
319
326
- `--cache` : gère la taille du cache (en MB) à allouer pour l'import des noeuds OSM. Je pensais au début que la valeur par défaut (800) suffirait mais j'ai eu l'erreur :*Node cache size is too small to fit all nodes. Please increase cache size*. Dépend de la RAM de votre machine.
320
-
- `--hstore-match-only`:
321
327
- `--number-processes`: nom de processus à utiliser pour paralléliser les tâches qui peuvent l'être
322
328
323
-
Sur mon ordinateur portable (Dell XPS 15 7590 avec un Intel Core i7-9750H de 9e génération - voir [fiche technique](https://www.dell.com/support/manuals/fr-fr/xps-15-7590-laptop/xps-15-7590-setup-and-specifications/processeurs?guid=guid-bfa52f40-8ad1-4df0-8d0f-942766bc2118&lang=fr-fr)) sur batterie, Pour celles et ceux que ça intéresse, dépliez pour voir ce que ça donne en termes de performances :
329
+
Pour celles et ceux que ça intéresse, voici le détail de l'exécution sur mon ordinateur qui a pris 187 secondes:
324
330
325
331
<!-- markdownlint-disable MD046 -->
326
332
??? example "Le détail de l'exécution sur ma machine"
0 commit comments