Calcul Patterns Route Commune Carte Patterns : Pour obtenir ce résultat il faut d'abord avoir l'extension QuickOSM sur QGIS. Ouvrez QuickOSM et allez sur requete rapide : 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 :  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.