# 01_Actualisations des bases de données Geometries dans PostGIS (OSM, IRIS)

#### **1/ actualisation OSM - exercice du 260402**

provence-alpes-cote 100%\[===================&gt;\] 363.10M 34.6MB/s in 11s

```
# 1. Création de l'arborescence (le -p crée les parents si besoin)
mkdir -p /home/debian/data/Regions/93/OSM_93

# 2. On se déplace dans le dossier cible
cd /home/debian/data/Regions/93/OSM_93

# 3. Téléchargement du fichier de la Région PACA
# Note : C'est le fichier qui contient La Ciotat
wget https://download.geofabrik.de/europe/france/provence-alpes-cote-d-azur-latest.osm.pbf
```

Pour éviter de retomber sur l'erreur `column "highway" does not exist`, nous allons utiliser une commande `osm2pgsql` qui force l'extraction des colonnes standards (style par défaut) et active le **hstore** (pour stocker tous les autres tags dans un champ flexible).

Nécessité d'installer osm2pgsql directement dans le VPS car outil indisponible sur Docker

[https://osm2pgsql.org/](https://osm2pgsql.org/) (version 1.8.0)

#### **2/ SCRIPT DE TRANSFERT OSM PACA VERS PUBLIC DANS POSTGIS**

**compter 6 minutes.**

```
osm2pgsql -d alteris_geo -U alteris_admin -H localhost -P 5432 -W \
  --slim \
  --hstore \
  --multi-geometry \
  --number-processes 2 \
  /home/debian/data/Regions/93/OSM_93/provence-alpes-cote-d-azur-latest.osm.pbf
```

##### 1. La Source (Le fichier .pbf)

Tu as bien fait de télécharger sur **Geofabrik**. C'est le dépôt de référence qui découpe la "Planet OSM" (le monde entier) en morceaux digestes (comme la Région PACA). Ton fichier `/home/debian/data/Regions/93/OSM_93/provence-alpes-cote-d-azur-latest.osm.pbf` est parfait.

##### 2. L'Outil (Le traducteur)

L'image Docker `osm2pgsql/osm2pgsql` va lire ce fichier et "traduire" les données OpenStreetMap (points, lignes, polygones) en tables SQL exploitables par Alteris.

##### 3. La Destination (Les tables dans PostgreSQL)

Par convention historique, cet outil nomme toujours les tables créées avec le préfixe `planet_osm_`. C'est là que tu retrouveras :

- `planet_osm_line` (qui deviendra ton réservoir pour les **filaires**).
- `planet_osm_point` (tes futurs équipements/écoles).
- `planet_osm_polygon` (tes bâtis et zones végétalisées).

##### Résumé du flux de travail Alteris

1. **Extraction** : Tu as récupéré le PBF chez Geofabrik.
2. **Injection** : Tu lances la commande Docker `osm2pgsql`.
3. **Rangement** : On renomme `planet_osm_line` en `osm_raw.roads` (pour que ton script de filaires fonctionne).

Résultat du transfert pour comparaison

```
debian@vps-02c1f983-vps-ovh-net:~/data/Regions/93/OSM_93$ sudo docker exec -it a                                                                                                             lteris_postgis psql -U alteris_admin -d alteris_geo -c "CREATE EXTENSION IF NOT                                                                                                              EXISTS hstore;"
CREATE EXTENSION
debian@vps-02c1f983-vps-ovh-net:~/data/Regions/93/OSM_93$ osm2pgsql -d alteris_g                                                                                                             eo -U alteris_admin -H localhost -P 5432 -W \
  --slim \
  --hstore \
  --multi-geometry \
  --number-processes 2 \
  /home/debian/data/Regions/93/OSM_93/provence-alpes-cote-d-azur-latest.osm.pbf
2026-04-02 07:57:46  osm2pgsql version 1.8.0
Password:
2026-04-02 07:57:54  Database version: 15.4 (Debian 15.4-1.pgdg110+1)
2026-04-02 07:57:54  PostGIS version: 3.3
2026-04-02 07:57:54  Setting up table 'planet_osm_point'
2026-04-02 07:57:54  Setting up table 'planet_osm_line'
2026-04-02 07:57:54  Setting up table 'planet_osm_polygon'
2026-04-02 07:57:54  Setting up table 'planet_osm_roads'
                                                                                                                                                                                             2026-04-02 08:01:35  Reading input files done in 221s (3m 41s).
2026-04-02 08:01:35    Processed 39612462 nodes in 75s (1m 15s) - 528k/s
2026-04-02 08:01:35    Processed 5322338 ways in 108s (1m 48s) - 49k/s
2026-04-02 08:01:35    Processed 52147 relations in 38s - 1k/s
2026-04-02 08:01:35  Clustering table 'planet_osm_line' by geometry...
2026-04-02 08:01:35  Clustering table 'planet_osm_point' by geometry...
2026-04-02 08:01:42  Creating geometry index on table 'planet_osm_point'...
2026-04-02 08:01:44  Creating osm_id index on table 'planet_osm_point'...
2026-04-02 08:01:45  Analyzing table 'planet_osm_point'...
2026-04-02 08:01:45  Clustering table 'planet_osm_polygon' by geometry...
2026-04-02 08:01:48  Creating geometry index on table 'planet_osm_line'...
2026-04-02 08:01:51  Creating osm_id index on table 'planet_osm_line'...
2026-04-02 08:01:53  Analyzing table 'planet_osm_line'...
2026-04-02 08:01:53  Clustering table 'planet_osm_roads' by geometry...
2026-04-02 08:01:55  Creating geometry index on table 'planet_osm_roads'...
2026-04-02 08:01:55  Creating osm_id index on table 'planet_osm_roads'...
2026-04-02 08:01:55  Analyzing table 'planet_osm_roads'...
2026-04-02 08:01:56  Done postprocessing on table 'planet_osm_nodes' in 0s
2026-04-02 08:01:56  Building index on table 'planet_osm_ways'
2026-04-02 08:02:11  Creating geometry index on table 'planet_osm_polygon'...
2026-04-02 08:02:21  Creating osm_id index on table 'planet_osm_polygon'...
2026-04-02 08:02:23  Analyzing table 'planet_osm_polygon'...
2026-04-02 08:02:23  Building index on table 'planet_osm_rels'
2026-04-02 08:03:14  Done postprocessing on table 'planet_osm_ways' in 78s (1m 18s)
2026-04-02 08:03:14  Done postprocessing on table 'planet_osm_rels' in 2s
2026-04-02 08:03:14  All postprocessing on table 'planet_osm_point' done in 10s.
2026-04-02 08:03:14  All postprocessing on table 'planet_osm_line' done in 17s.
2026-04-02 08:03:14  All postprocessing on table 'planet_osm_polygon' done in 37s.
2026-04-02 08:03:14  All postprocessing on table 'planet_osm_roads' done in 2s.
2026-04-02 08:03:14  osm2pgsql took 319s (5m 19s) overall.
debian@vps-02c1f983-vps-ovh-net:~/data/Regions/93/OSM_93$

```

#### **3/ BASCULEMENT OSM PACA VERS OSM\_RAW DANS POSTGIS**

```
sudo docker exec -it alteris_postgis psql -U alteris_admin -d alteris_geo -c "
-- 1. On s'assure que le schéma cible existe
CREATE SCHEMA IF NOT EXISTS osm_raw;

-- 2. On supprime les vieux restes pour éviter les conflits
DROP TABLE IF EXISTS osm_raw.roads CASCADE;
DROP TABLE IF EXISTS osm_raw.points CASCADE;
DROP TABLE IF EXISTS osm_raw.buildings CASCADE;
DROP TABLE IF EXISTS osm_raw.transit_major CASCADE;

-- 3. On bascule les nouvelles tables vers osm_raw
ALTER TABLE public.planet_osm_line SET SCHEMA osm_raw;
ALTER TABLE public.planet_osm_point SET SCHEMA osm_raw;
ALTER TABLE public.planet_osm_polygon SET SCHEMA osm_raw;
ALTER TABLE public.planet_osm_roads SET SCHEMA osm_raw;

-- 4. Renommage pour une nomenclature propre
ALTER TABLE osm_raw.planet_osm_line RENAME TO roads;
ALTER TABLE osm_raw.planet_osm_point RENAME TO points;
ALTER TABLE osm_raw.planet_osm_polygon RENAME TO buildings;
ALTER TABLE osm_raw.planet_osm_roads RENAME TO transit_major;
"
```

##### **4/ FAIRE L'INVENTAIRE DE OSM\_RAW**

```
sudo docker exec -it alteris_postgis psql -U alteris_admin -d alteris_geo -c "
SELECT 
    relname AS table_name, 
    pg_size_pretty(pg_total_relation_size(c.oid)) AS taille
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'osm_raw'
  AND c.relkind = 'r'
ORDER BY pg_total_relation_size(c.oid) DESC;
"
```

<table id="bkmrk-rang-table-usage-alt" style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 32px 0px;"><thead style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-header-group;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgb(239,239,239) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**Rang**</td><td style="background:rgb(239,239,239) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**Table**</td><td style="background:rgb(239,239,239) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**Usage Alteris**</td></tr></thead><tbody style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row-group;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">1</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`buildings`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Emprises bâties et limites administratives (La Ciotat est dedans).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">2</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`roads`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Réseau routier complet (La source de tes filaires).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">3</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`points`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Équipements, services, commerces.</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">4</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`landuse`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Occupation du sol (Zones industrielles, parcs, forêts).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">5</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`transit_major`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Grands axes structurants (pour cartographie grand angle).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">6</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`pois`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Points d'intérêt spécifiques (doublon partiel de `points`).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">7</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`waterways`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Rivières, canaux, fossés.</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">8</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`water`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Plans d'eau, bassins, mer.</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">9</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`railways`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Réseau ferré (Barrière physique majeure pour I-T6-01).</span></td></tr><tr style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:table-row;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">10</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 12px 16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">**`places`**</span></td><td style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;clear:none;color:rgb(31,31,31);direction:ltr;display:table-cell;float:none;opacity:1;padding:16px 0px;visibility:visible;border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;"><span style="background:rgba(0,0,0,0) none repeat scroll 0% 0%;border:0px none rgb(31,31,31);clear:none;color:rgb(31,31,31);direction:ltr;display:inline;float:none;opacity:1;padding:0px;visibility:visible;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin:0px 0px 0px 0px;">Noms de quartiers, lieux-dits et communes.</span></td></tr></tbody></table>

 table\_name | taille  
\---------------+---------  
 buildings | 1374 MB  
 roads | 625 MB  
 points | 232 MB  
 landuse | 131 MB  
 transit\_major | 64 MB  
 pois | 64 MB  
 waterways | 29 MB  
 water | 14 MB  
 railways | 3680 kB  
 places | 2920 kB  
(10 rows)

<table id="bkmrk-cat%C3%A9gorie-tables-inc" style="margin-bottom:32px;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><thead style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Catégorie**</td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Tables incluses**</td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Poids estimé**</td></tr></thead><tbody style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Gros volumes**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">`buildings` + `roads`</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">~2 000 MB</span></td></tr><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Moyens volumes**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">`points` + `landuse`</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">~363 MB</span></td></tr><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Volumes légers**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">`transit_major`, `pois`, `waterways`, `water`</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">~171 MB</span></td></tr><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Petits volumes**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">`railways`, `places`</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">~6 MB</span></td></tr><tr style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**TOTAL**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**Miroir OSM PACA**</span></td><td style="border:1px solid;font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;"><span style="font-family:'Google Sans Text', sans-serif;line-height:1.15;margin-top:0px;">**~2,54 GB**</span></td></tr></tbody></table>

```

debian@vps-02c1f983-vps-ovh-net:~$
debian@vps-02c1f983-vps-ovh-net:~$ sudo docker exec -it alteris_postgis psql -U alteris_admin -d alteris_geo -c "
SELECT pg_size_pretty(SUM(pg_total_relation_size(c.oid))) AS poids_total_osm_raw
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'osm_raw'
  AND c.relkind = 'r';
"
```

\-------------------------  
 poids\_total\_osm\_raw  
\---------------------  
 2539 MB  
(1 row)

debian@vps-02c1f983-vps-ovh-net:~$

### Transfert des contours IRIS dans insee\_raw   
  


Pour ne pas réinventer la roue et éviter les galères de mot de passe ou de drivers manquants, voici la **méthode "Golden"** que nous avons validée.

L'astuce consiste à utiliser **le binaire du VPS (ton host)** pour lire le fichier et **injecter le résultat dans le Docker** via un "pipe" (flux). C'est la méthode la plus robuste car elle ne dépend pas de la configuration interne du conteneur.

---

### 🚀 La Méthode "Standard" (à copier-coller)

Voici la commande universelle pour recharger tes couches SIG :

<div class="code-block ng-tns-c2968650486-3705 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash"><div class="code-block-decoration header-formatted gds-title-s ng-tns-c2968650486-3705 ng-star-inserted"><span class="ng-tns-c2968650486-3705">Bash</span><div class="buttons ng-tns-c2968650486-3705 ng-star-inserted"></div></div><div class="formatted-code-block-internal-container ng-tns-c2968650486-3705"><div class="animated-opacity ng-tns-c2968650486-3705">  
</div></div></div>```
# 1. On génère le SQL depuis le fichier local
# 2. On l'injecte dans le psql du Docker
ogr2ogr -f PGDump /vsistdout/ "/home/debian/data/contours-iris-pe.gpkg" \
  -nln insee_raw.contours_iris_2025 \
  -lco OVERWRITE=YES \
  -lco GEOMETRY_NAME=geom \
  -lco DROP_TABLE=YES \
  -nlt PROMOTE_TO_MULTI | docker exec -i alteris_postgis psql -U alteris_admin -d alteris_geo

```

<div class="code-block ng-tns-c2968650486-3705 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--2"><div class="formatted-code-block-internal-container ng-tns-c2968650486-3705"><div class="animated-opacity ng-tns-c2968650486-3705"></div></div></div>---

### 🧠 Pourquoi cette méthode gagne à tous les coups ?

1. **Indépendance des Drivers** : Tu utilises le `ogr2ogr` de ton Debian (GDAL 3.6.2), qui est beaucoup plus complet et à jour que celui souvent pré-installé dans les images Docker.
2. **Bypass du Mot de Passe** : En envoyant le flux vers `docker exec -i ... psql`, tu profites de l'authentification "peer" ou de l'absence de mot de passe interne du conteneur. Plus besoin de `PGPASSWORD`.
3. **Propreté (OVERWRITE/DROP)** : L'option `-lco DROP_TABLE=YES` et `-lco OVERWRITE=YES` garantit que tu ne crées pas de doublons et que tu nettoies les restes d'une couche corrompue.
4. **Standardisation (PROMOTE\_TO\_MULTI)** : Elle force toutes les géométries en `MultiPolygon`. C'est vital car QGIS ou PostGIS détestent avoir un mélange de `Polygon` et `MultiPolygon` dans une même table.

---

### 📝 Le mémo de secours (si ça bloque encore)

Si un jour tu as une erreur de connexion, vérifie ces 3 points :

- **Le chemin** : Fais toujours un `ls /chemin/vers/ton/fichier` pour être sûr qu'il n'a pas bougé.
- **Le schéma** : Assure-toi que le schéma cible (ici `insee_raw`) existe déjà dans ta base :
    
    
    - `CREATE SCHEMA IF NOT EXISTS insee_raw;`
- **Les droits** : Si tu as une erreur de permission, utilise `sudo` devant la commande `ogr2ogr`.

**Tu as maintenant la "recette secrète" pour tes imports.** Est-ce qu'on s'en sert pour une autre couche (DVF, Sirene...) ou on finit la synthèse de ton indicateur A1 ?