# Calcul Patterns Route Commune

Carte Patterns : ![Capture d'écran 2026-03-23 160116.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/capture-decran-2026-03-23-160116-png.png)

Pour obtenir ce résultat il faut d'abord avoir l'extension QuickOSM sur QGIS. Ouvrez QuickOSM et allez sur requete rapide :

[![image.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/A5nimage-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/A5nimage-png.png)

Ensuite rentrez dans requetes sur toutes les clés highway puis en ce qui concerne dans "Un village, une ville" rentrez le nom de votre commune :

[![image.png](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/rIeimage-png.png)](https://bookstack.juxjux.ovh/uploads/images/gallery/2026-04/scaled-1680-/rIeimage-png.png)

Exécutez la requête et vous obtenez une couche temporaire lines, nous ne gardons que les vecteurs que vous enregistrerez sous la dénomination de votre choix. *Attention cela peut fréquemment planter, il suffit de réessayer jusqu'à ce que ça marche.*

Ensuite après avoir envoyé votre couche dans PostGIS, récupérez la requête sauvegardez sous le nom de Patterns Route dans le Query Tool de PGadmin. Si la couche a disparu voici le code :

```

DROP TABLE IF EXISTS zones_motifs_filaires_commune; --Remplacez commune par le nom de votre commune ou l'InseeCom
CREATE TABLE zones_motifs_filaires_commune AS
WITH extraction AS (
-- Étape 1 : On lit la géométrie et on extrait les informations clés du JSON
SELECT
osm_id,
highway AS type_osm,
lanes AS nb_voies,
maxspeed AS vitesse_max,
ST_Transform(geom, 2154) AS geom_ligne -- Projection en Lambert 93 (mètres)
FROM --Insérez le nom de votre fichier sans le .csv ou .gpkg etc... par exemple routes_communes et pas routes_communes.gpkg
WHERE highway IS NOT NULL
),
classification AS (
-- Étape 2 : On applique VOS règles d'urbanisme (L'entonnoir Alteris)
SELECT
osm_id, type_osm, geom_ligne,
CASE
-- 1. TRANSIT (F_T)
WHEN type_osm IN ('motorway', 'motorway_link') THEN 'F_T1'
WHEN type_osm IN ('trunk', 'trunk_link') THEN 'F_T2'
WHEN type_osm IN ('primary', 'secondary')
AND (nb_voies IN ('3', '4', '5', '6', '7', '8')
OR vitesse_max IN ('70', '80', '90', '110', '130'))
THEN 'F_T3'

-- 2. DESSERTE (F_D)
-- Note : Si une route 'primary' arrive ici, c'est qu'elle a échoué au test F_T3 au-dessus !
WHEN type_osm = 'primary' THEN 'F_D1'
WHEN type_osm = 'secondary' THEN 'F_D2'
WHEN type_osm IN ('pedestrian', 'living_street') THEN 'F_D3'

-- 3. LOCAL (F_L)
WHEN type_osm IN ('tertiary', 'residential') THEN 'F_L1'
WHEN type_osm = 'unclassified' THEN 'F_L2'
ELSE 'F_L3'
END as code_pattern
FROM extraction
)
-- Étape 3 : On génère les emprises spatiales (buffers) avec les bonnes largeurs
SELECT
osm_id,
code_pattern,
ST_Buffer(geom_ligne,
CASE
WHEN code_pattern = 'F_T1' THEN 100
WHEN code_pattern = 'F_T2' THEN 75
WHEN code_pattern = 'F_T3' THEN 50
WHEN code_pattern = 'F_D1' THEN 50
WHEN code_pattern = 'F_D2' THEN 35
WHEN code_pattern = 'F_D3' THEN 35
WHEN code_pattern = 'F_L1' THEN 25
WHEN code_pattern = 'F_L2' THEN 10
WHEN code_pattern = 'F_L3' THEN 10
ELSE 10
END
) as geom
FROM classification;

-- Étape 4 : L'index spatial pour rendre les futurs calculs ultra-rapides
CREATE INDEX idx_zones_motifs_commune_geom ON zones_motifs_filaires_commune USING GIST(geom);-- Encore une fois remplacer commune dans les DEUX noms de fichier

```

Dans le code pensez à remplacer les champs du nom de fichier : zones\_motifs\_filaires\_commune par le nom zones\_motifs\_filaires\_NOM\_DE\_VOTRE\_COMMUNE. Il faut le remplacer trois fois deux fois au début (ligne 2 et 3) et une fois à la fin (ligne 62), en pensant aussi à la fin (ligne 62) à remplacer idx\_zones\_motifs\_commune\_geom par idx\_zones\_motifs\_NOM\_DE\_VOTRE\_COMMUNE\_geom. Après cela il vous faudra insérer le nom du fichier ligne 12.