Essai - 83137 - délimitation automatique des centralités fonctionnelles

1 - La hiérarchisation des filaires (axes, routes et voies)


260305-Matrice des filaires.png

2- La Grille des filaires

La base des filaires - la grille - c'est la classification OSM-expert 

Le tableau est ici 


DROP TABLE IF EXISTS zones_motifs_filaires_v3 CASCADE;

CREATE TABLE zones_motifs_filaires_v3 AS
WITH extraction AS (
-- Étape 1 : On lit la géométrie et on extrait les informations clés du JSON
SELECT
osm_id,
tags->>'name' AS nom_voie,
tags->>'highway' AS type_osm,
tags->>'lanes' AS nb_voies,
tags->>'maxspeed' AS vitesse_max,
ST_Transform(geom, 2154) AS geom_ligne -- Projection en Lambert 93 (mètres)
FROM osm_lignes
WHERE tags->>'highway' IS NOT NULL
),
classification AS (
-- Étape 2 : On applique VOS règles d'urbanisme (L'entonnoir Alteris)
SELECT
osm_id, nom_voie, 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,
nom_voie,
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_v3_geom ON zones_motifs_filaires_v3 USING GIST(geom);


3- La profondeur du motif urbain  

Nouvelle définition d'une bande de motif urbain proportionnelle au rang hiérarchique des filaires.
L'évolution de la profondeur fait varier l'intensité fonctionnelle.
Le tableau de référence sous Drive

Nouvelle version du 260305 - majoration des filaires sur les routes de desserte afin de mieux intersecter les items fonctionnels d'Openstreetmap. Dans cette version, la profondeur des filaires passe à 35 mètres pour les F_D1 et F_D2.

Hiérarchisation des patterns     Les Filaires Géométrique OSM Profondeur du motif urbain en mètres Commentaires
        Contexte      
Filaire 1
Transit
F_T1 Corridor Métropolitain Plus de 30 000 véhicules jours - 0 trottoirs Higway 100 Vérifier
F_T2 Voie Rapide Urbaine Profil autoroutier à usage local Ring Road 75 Abords autoroutiers (à vérifier)
F_T3 Axe Structurant Colonne vertébrale de type tram/bHNS + fonctionnalités Multi-Way Boulevard 50 Exemples à développer
Filaire 2
Desserte
F_D1 Avenue Commerçante Axe à arbitrage modal nécessaire entre circulations automobile et autres Downton streets 30 Tissu Haute Ville de Toulon
F_D2 Rue marchande Trafic automobile soutenu combiné avec réseau TC et vitalité commerciale forte Shopping street 35 Contextualiser - St Jean / Pont du Las - François Cuzin/ XVeme Corps
F_D3 La Piétonne Mail piétonnier de grande ampleur (géométries) irrigué par TC et modes doux Ramblas 35 Cours Lafayette
Filaire 3
Local
F_L1 Rue de quartier Tissu urbain standard avec stationnement filaire et trottoirs accueillant en discontinu des fonctions urbaines   25 Loubière
F_L2 Rue résidentielle Voie routière sans TC ni fonctions urbaines regroupées   10  
F_L3 Allées et sentes cheminements strictement piétons   10

DROP TABLE IF EXISTS zones_motifs_filaires_v2 CASCADE;

CREATE TABLE zones_motifs_filaires_v2 AS
WITH lignes_originales AS (
    SELECT f.osm_id, f.nom_voie, f.code_pattern, ST_Transform(l.way, 3857) as geom_ligne
    FROM zones_motifs_filaires f
    JOIN planet_osm_line l ON f.osm_id = l.osm_id
)
SELECT 
    osm_id, nom_voie, 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 30
            WHEN code_pattern = 'F_D2' THEN 35 -- Modifié
            WHEN code_pattern = 'F_D3' THEN 35 -- Modifié
            WHEN code_pattern = 'F_L1' THEN 25 -- Modifié
            WHEN code_pattern = 'F_L2' THEN 10
            WHEN code_pattern = 'F_L3' THEN 10
            ELSE 10 
        END
    ) as geom
FROM lignes_originales;

CREATE INDEX idx_zones_motifs_v2_geom ON zones_motifs_filaires_v2 USING GIST(geom);

------------------------------------------------------------------- 

4/ la sélection des items dans les fuseaux des voies et la détermination hiérarchisée des pôles de centralité 

Version stable du 260305

Tableau Drive

  Fonctionnel   Paramètres géométriques
       
Niveau 1 Centre Urbain Présence continue ou presque d'activités commerciales / tertiaires / équipements publics / espaces publics
présence d'au moins 18 items pour chaque linéaire de voie de 200 mètres
       
Niveau 2 Centre Local Agrégations de fonctionnalités commerciales ou tertiaires couplées à un intensité démographique INSEE Carroyé
présence d'au moins 10 items pour chaque linéaire de voie de 200 mètres
       
Niveau 3 Noyau de vie quotidienne Ponctualité de services formant une centralité présence de 8 items dans un rayon de 200 mètres
       
Niveau 4 Espaces Résidentiels Restent des zones agglomérées OSM ne figurant dans aucun des 3 premiers niveaux autres


DROP TABLE IF EXISTS toulon_hierarchie_fonctionnelle_v3;

CREATE TABLE toulon_hierarchie_fonctionnelle_v3 AS
WITH stats_troncons AS (
SELECT
f.osm_id,
f.nom_voie,
f.code_pattern,
-- On récupère la longueur de la rue d'origine pour calculer la densité
ST_Length(ST_Transform(l.geom, 2154)) as longueur_rue_m,

-- 1. Le Filet Strict : On compte les items DANS le buffer (Filaire V3)
(SELECT COUNT(i.osm_id)
FROM toulon_items_nomenclature_full i
WHERE ST_Intersects(ST_Transform(i.geom, 2154), f.geom)) as total_items_strict,

-- 2. Le Filet Radar (Niveau 3) : On lance un radar à 75m autour du tronçon
(SELECT COUNT(i.osm_id)
FROM toulon_items_nomenclature_full i
WHERE ST_DWithin(ST_Transform(i.geom, 2154), ST_Transform(l.geom, 2154), 75)) as total_items_radar,

f.geom
FROM zones_motifs_filaires_v3 f
JOIN osm_lignes l ON f.osm_id = l.osm_id
),
classification AS (
SELECT
osm_id, nom_voie, code_pattern,
total_items_strict, total_items_radar,
ROUND(longueur_rue_m::numeric) as longueur_rue_m,

-- Calcul mathématique : Ramener la densité sur un standard de 200 mètres
CASE WHEN longueur_rue_m > 0
THEN ROUND(((total_items_strict::numeric / longueur_rue_m::numeric) * 200), 1)
ELSE 0
END as items_pour_200m,

geom,

-- Les règles d'or des centralités Alteris
CASE
WHEN (longueur_rue_m > 0 AND (total_items_strict::numeric / longueur_rue_m::numeric) * 200 >= 18) THEN 1 -- Niveau 1
WHEN (longueur_rue_m > 0 AND (total_items_strict::numeric / longueur_rue_m::numeric) * 200 >= 10) THEN 2 -- Niveau 2
WHEN total_items_radar >= 8 THEN 3 -- Niveau 3 (Pôle radar)
ELSE 4 -- Tissu neutre
END as niveau_fonctionnel
FROM stats_troncons
)
-- On ne garde que les niveaux 1, 2 et 3 !
SELECT * FROM classification WHERE niveau_fonctionnel < 4;

-- Index pour la rapidité
CREATE INDEX idx_hierarchie_v3_geom ON toulon_hierarchie_fonctionnelle_v3 USING GIST(geom);


image.png

               
Hiérarchisation des patterns     Les Filaires Géométrique OSM Profondeur du motif urbain en mètres Commentaires
        Contexte      
Filaire 1
Transit
F_T1 Corridor Métropolitain Plus de 30 000 véhicules jours - 0 trottoirs Higway 100 Vérifier
F_T2 Voie Rapide Urbaine Profil autoroutier à usage local Ring Road 75 Abords autoroutiers (à vérifier)
F_T3 Axe Structurant Colonne vertébrale de type tram/bHNS + fonctionnalités Multi-Way Boulevard 50 Exemples à développer
Filaire 2
Desserte
F_D1 Avenue Commerçante Axe à arbitrage modal nécessaire entre circulations automobile et autres Downton streets 30 Tissu Haute Ville de Toulon
F_D2 Rue marchande Trafic automobile soutenu combiné avec réseau TC et vitalité commerciale forte Shopping street 25 Contextualiser - St Jean / Pont du Las - François Cuzin/ XVeme Corps
F_D3 La Piétonne Mail piétonnier de grande ampleur (géométries) irrigué par TC et modes doux Ramblas 25 Cours Lafayette
Filaire 3
Local
F_L1 Rue de quartier Tissu urbain standard avec stationnement filaire et trottoirs accueillant en discontinu des fonctions urbaines   15 Loubière
F_L2 Rue résidentielle Voie routière sans TC ni fonctions urbaines regroupées   10  
F_L3 Allées et sentes cheminements strictement piétons   10

Le code SQL de Gemini 

DROP TABLE IF EXISTS zones_motifs_filaires_v2;

CREATE TABLE zones_motifs_filaires_v2 AS
WITH lignes_originales AS (
    -- On fait le lien entre vos codes Alteris et les lignes brutes d'OSM
    SELECT 
        f.osm_id,
        f.nom_voie,
        f.code_pattern,
        ST_Transform(l.way, 3857) as geom_ligne
    FROM zones_motifs_filaires f
    JOIN planet_osm_line l ON f.osm_id = l.osm_id
)
SELECT 
    osm_id,
    nom_voie,
    code_pattern,
    -- On applique les nouveaux buffers stricts de votre tableau Google Drive
    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 30
            WHEN code_pattern = 'F_D2' THEN 25
            WHEN code_pattern = 'F_D3' THEN 25
            WHEN code_pattern = 'F_L1' THEN 15
            WHEN code_pattern = 'F_L2' THEN 10
            WHEN code_pattern = 'F_L3' THEN 10
            ELSE 10 -- Sécurité par défaut
        END
    ) as geom
FROM lignes_originales;

CREATE INDEX idx_zones_motifs_v2_geom ON zones_motifs_filaires_v2 USING GIST(geom);

------------------------------------------------------

Le filaires sont conçues à partir d'un croisement de 3 paramètres urbains que sont 

  • la géométrie des voies sur OSM
  • leur intensité capacitaire en matière d'écoulemnent des flux de mobilité
  • le degré de densité fonctionnel


  Géométrique Modalités cartographiques Vitesse légale
N1 Autoroute / Voie Rapide Absence de trottoir Supérieure ou égal à 50 km/h
N2 Boulevard Métropolitain Minimum de deux voies ouvertes à la circulation automobile Comprise entre 50 et 70 km/h
N3 Avenue / Cours Voie ouverte à la circulation automobile, avec stationnement filaire, TCSP possible, Largeur d'au moins 4,5 mètres minimum avec trottoir ou zone de rencontre, Présences de passages piétons, maximum 50 km/heure
N4 Rue Faubourg / Principale Voie ouverte à la circulation automobile inférieue à 4,5 mètres bordée par des fonctions urbaines, Sens unique possible, maximum 30km/heure
N5 Rue de Desserte Voie ouverte à la circulation automobile inférieue à 4,5 mètres bordée par des fonctions urbaines, Sens unique possible,  
N6 Ruelle / Impasse Autres (bolléen)  
N7 Zones Piétonnes Indcateur OSM  
       
       
  Capacitaire    
Niveau 1 Corridor de mobilté
Comptages routiers supérieurs à ? 000 véhicules/jour et irrigation par plusieurs lignes de transport en commun
 
       
Niveau 2 Desserte majeure Présence d'au moins une ligne TC  
       
Niveau 3 Desserte locale Stationnement public filaire ou voie de mobilité douce  
       
       
       
       
  Fonctionnel    
       
Niveau 1 Centre Urbain
Présence continue ou presque d'activités commerciales / tertiaires / équipements publics / espaces publics
 
       
Niveau 2 Centre Local
Agrégations de fonctionnalités commerciales ou tertiaires couplées à un intensité démographique INSEE Carroyé
 
       
Niveau 3 Noyau de vie quotidienne Ponctualité de services formant une centralité  
       
Niveau 4 Espaces Résidentiels
Restent des zones agglomérées OSM ne figurant dans aucun des 3 premiers niveaux

Alteris propose une classification en 9 topologies de filaires

https://docs.google.com/spreadsheets/d/1DBBdDSaxFfXPchq6BUBhlQmkV2N0HK3AKi3W7DN5ZOQ/edit?gid=1802772327#gid=1802772327

Hiérarchisation des patterns     Les Filaires Géométrique OSM
        Contexte  
Filaire 1
Transit
F_T1 Corridor Métropolitain Plus de 30 000 véhicules jours - 0 trottoirs Higway
F_T2 Voie Rapide Urbaine Profil autoroutier à usage local Ring Road
F_T3 Axe Structurant Colonne vertébrale de type tram/bHNS + fonctionnalités Multi-Way Boulevard
Filaire 2
Desserte
F_D1 Avenue Commerçante Axe à arbitrage modal nécessaire entre circulations automobile et autres Downton streets
F_D2 Rue marchande Trafic automobile soutenu combiné avec réseau TC et vitalité commerciale forte Shopping street
F_D3 La Piétonne Mail piétonnier de grande ampleur (géométries) irrigué par TC et modes doux Ramblas
Filaire 3
Local
F_L1 Rue de quartier Tissu urbain standard avec stationnement filaire et trottoirs accueillant en discontinu des fonctions urbaines  
F_L2 Rue résidentielle Voie routière sans TC ni fonctions urbaines regroupées  
F_L3 Allées et sentes cheminements strictement piétons

les tronçons de centralité fonctionnelle


Version stable du 260305

Tableau Drive

  Fonctionnel   Paramètres géométriques
       
Niveau 1 Centre Urbain Présence continue ou presque d'activités commerciales / tertiaires / équipements publics / espaces publics
présence d'au moins 18 items pour chaque linéaire de voie de 200 mètres
       
Niveau 2 Centre Local Agrégations de fonctionnalités commerciales ou tertiaires couplées à un intensité démographique INSEE Carroyé
présence d'au moins 10 items pour chaque linéaire de voie de 200 mètres
       
Niveau 3 Noyau de vie quotidienne Ponctualité de services formant une centralité présence de 8 items dans un rayon de 200 mètres
       
Niveau 4 Espaces Résidentiels Restent des zones agglomérées OSM ne figurant dans aucun des 3 premiers niveaux autres


DROP TABLE IF EXISTS toulon_hierarchie_fonctionnelle_v3;

CREATE TABLE toulon_hierarchie_fonctionnelle_v3 AS
WITH stats_troncons AS (
SELECT
f.osm_id,
f.nom_voie,
f.code_pattern,
-- On récupère la longueur de la rue d'origine pour calculer la densité
ST_Length(ST_Transform(l.geom, 2154)) as longueur_rue_m,

-- 1. Le Filet Strict : On compte les items DANS le buffer (Filaire V3)
(SELECT COUNT(i.osm_id)
FROM toulon_items_nomenclature_full i
WHERE ST_Intersects(ST_Transform(i.geom, 2154), f.geom)) as total_items_strict,

-- 2. Le Filet Radar (Niveau 3) : On lance un radar à 75m autour du tronçon
(SELECT COUNT(i.osm_id)
FROM toulon_items_nomenclature_full i
WHERE ST_DWithin(ST_Transform(i.geom, 2154), ST_Transform(l.geom, 2154), 75)) as total_items_radar,

f.geom
FROM zones_motifs_filaires_v3 f
JOIN osm_lignes l ON f.osm_id = l.osm_id
),
classification AS (
SELECT
osm_id, nom_voie, code_pattern,
total_items_strict, total_items_radar,
ROUND(longueur_rue_m::numeric) as longueur_rue_m,

-- Calcul mathématique : Ramener la densité sur un standard de 200 mètres
CASE WHEN longueur_rue_m > 0
THEN ROUND(((total_items_strict::numeric / longueur_rue_m::numeric) * 200), 1)
ELSE 0
END as items_pour_200m,

geom,

-- Les règles d'or des centralités Alteris
CASE
WHEN (longueur_rue_m > 0 AND (total_items_strict::numeric / longueur_rue_m::numeric) * 200 >= 18) THEN 1 -- Niveau 1
WHEN (longueur_rue_m > 0 AND (total_items_strict::numeric / longueur_rue_m::numeric) * 200 >= 10) THEN 2 -- Niveau 2
WHEN total_items_radar >= 8 THEN 3 -- Niveau 3 (Pôle radar)
ELSE 4 -- Tissu neutre
END as niveau_fonctionnel
FROM stats_troncons
)
-- On ne garde que les niveaux 1, 2 et 3 !
SELECT * FROM classification WHERE niveau_fonctionnel < 4;

-- Index pour la rapidité
CREATE INDEX idx_hierarchie_v3_geom ON toulon_hierarchie_fonctionnelle_v3 USING GIST(geom);


image.png



Revision #1
Created 2026-04-10 09:15:39 UTC by Julien
Updated 2026-04-10 09:15:39 UTC by Julien