# La Trame Verte et Bleue

La Trame Verte et Bleue (TVB) est fondamentale pour évaluer la qualité de vie, le rafraîchissement urbain et l'accès à la nature depuis vos centralités.

Pour automatiser cela proprement, il faut comprendre que la TVB se divise géométriquement en deux familles, ce qu'on appelle en écologie urbaine les **Réservoirs** et les **Corridors** :

1. **Les Réservoirs (Les Polygones) :** Les parcs, les forêts (le Mont Faron !), les cimetières (qui sont de vastes espaces verts urbains), la mer, les lacs.
2. **Les Corridors (Les Lignes) :** Les cours d'eau (le Las, l'Eygoutier), les canaux, et les alignements d'arbres.

Pour éviter les problèmes d'affichage dans QGIS, nous allons créer **deux tables distinctes** (les polygones et les lignes), que l'on pourra styliser différemment.

Voici les deux requêtes à lancer dans votre base PostgreSQL (`sudo -u postgres psql -d alteris_db`).

#### A/ les réservoirs 

```
DROP TABLE IF EXISTS toulon_tvb_polygones CASCADE;

CREATE TABLE toulon_tvb_polygones AS
SELECT 
    osm_id,
    tags->>'name' AS nom_espace,
    CASE 
        -- TRAME VERTE
        WHEN tags->>'leisure' IN ('park', 'garden', 'nature_reserve') THEN '1 - Parc et Jardin'
        WHEN tags->>'natural' IN ('wood', 'scrub', 'heath', 'grassland') THEN '2 - Forêt et Nature'
        WHEN tags->>'landuse' IN ('forest', 'meadow', 'grass', 'recreation_ground', 'village_green') THEN '2 - Forêt et Nature'
        WHEN tags->>'landuse' = 'allotments' THEN '3 - Jardins familiaux'
        WHEN tags->>'landuse' = 'cemetery' THEN '4 - Cimetière (Respiration urbaine)'
        
        -- TRAME BLEUE
        WHEN tags->>'natural' IN ('water', 'beach', 'coastline') THEN '5 - Plan d''eau et Mer'
        WHEN tags->>'landuse' IN ('basin', 'reservoir') THEN '5 - Bassin et Réservoir'
        WHEN tags->>'waterway' IN ('riverbank', 'dock') THEN '5 - Rive et Bassin portuaire'
        
        ELSE 'Autre'
    END AS type_tvb,
    CASE 
        WHEN tags->>'natural' IN ('water', 'beach', 'coastline') OR tags->>'landuse' IN ('basin', 'reservoir') OR tags->>'waterway' IN ('riverbank', 'dock') THEN 'Bleue'
        ELSE 'Verte'
    END AS famille_trame,
    ST_Transform(geom, 2154) AS geom
FROM osm_polygones
WHERE tags->>'leisure' IN ('park', 'garden', 'nature_reserve')
   OR tags->>'natural' IN ('wood', 'scrub', 'heath', 'grassland', 'water', 'beach', 'coastline')
   OR tags->>'landuse' IN ('forest', 'meadow', 'grass', 'recreation_ground', 'village_green', 'allotments', 'cemetery', 'basin', 'reservoir')
   OR tags->>'waterway' IN ('riverbank', 'dock');

CREATE INDEX idx_tvb_poly_geom ON toulon_tvb_polygones USING GIST(geom);
```

#### B/ les corridors

```
DROP TABLE IF EXISTS toulon_tvb_lignes CASCADE;

CREATE TABLE toulon_tvb_lignes AS
SELECT 
    osm_id,
    tags->>'name' AS nom_corridor,
    CASE 
        -- TRAME BLEUE
        WHEN tags->>'waterway' IN ('river', 'stream', 'canal', 'drain') THEN '6 - Cours d''eau'
        -- TRAME VERTE
        WHEN tags->>'natural' = 'tree_row' THEN '7 - Alignement d''arbres'
        ELSE 'Autre'
    END AS type_tvb,
    ST_Transform(geom, 2154) AS geom
FROM osm_lignes
WHERE tags->>'waterway' IN ('river', 'stream', 'canal', 'drain')
   OR tags->>'natural' = 'tree_row';

CREATE INDEX idx_tvb_lignes_geom ON toulon_tvb_lignes USING GIST(geom);
```