Valutare l'accessibilità del verde urbano a Palermo applicando il framework 3-30-300 (Konijnendijk, 2023) attraverso dataset aperti e metodologie replicabili in altri contesti urbani.
Per mappare gli spazi verdi urbani accessibili sono stati utilizzati due dataset complementari: OpenStreetMap (dati collaborativi aggiornati dalla community) e Copernicus Urban Atlas (dati satellitari ufficiali dell'Agenzia Spaziale Europea). Entrambi i dataset sono stati filtrati per includere solo il verde pubblico accessibile, escludendo spazi privati e impianti sportivi.
Fonte: OpenStreetMap
Categoria A - Parchi e giardini:
leisure=park - Parchi pubblicileisure=garden - Giardini pubbliciCategoria B - Aree ricreative:
leisure=playground - Aree gioco bambinileisure=dog_park - Aree canileisure=fitness_station - Aree fitness outdoorlanduse=recreation_ground - Aree ricreative generichelanduse=village_green - Piazze verdiaccess=private, access=residents, access=nogarden:type=roof_garden, operator=condominium1. Estrazione dati con Overpass Turbo
Overpass Turbo è uno strumento web per interrogare il database OpenStreetMap. La seguente query estrae tutti gli spazi verdi pubblici di Palermo secondo i criteri definiti:
[out:json][timeout:60];
{{geocodeArea:Palermo}}->.searchArea;
// CATEGORY A - Parks & Gardens
(
way["leisure"="park"]["access"!="private"]["access"!="residents"](area.searchArea);
relation["leisure"="park"]["access"!="private"]["access"!="residents"](area.searchArea);
way["leisure"="garden"]["garden:type"!="roof_garden"]["access"!="private"]
["access"!="residents"]["operator"!="condominium"](area.searchArea);
relation["leisure"="garden"]["garden:type"!="roof_garden"]["access"!="private"]
["access"!="residents"](area.searchArea);
)->.catA;
// CATEGORY B - Recreation areas
(
way["landuse"="recreation_ground"]["access"!="private"](area.searchArea);
way["landuse"="village_green"]["access"!="private"](area.searchArea);
way["leisure"="playground"]["access"!="private"](area.searchArea);
way["leisure"="dog_park"]["access"!="private"](area.searchArea);
way["leisure"="fitness_station"]["access"!="private"](area.searchArea);
relation["landuse"="recreation_ground"]["access"!="private"](area.searchArea);
)->.catB;
(.catA; .catB;);
out geom;
>;
out skel qt;
Risultato estrazione: 479 spazi, superficie 4,51 km²
2. Filtraggio dimensionale
Sono stati esclusi gli spazi con area inferiore a 2.000 m² per rimuovere aiuole, verde ornamentale e piccole aree non fruibili.
Fonte: Copernicus Urban Atlas - FUA IT005L3 (Palermo)
14110 - Green urban areas (Public access)14130 - Green urban areas (Unknown access conditions)Entrambi i dataset sono stati categorizzati secondo cinque classi di superficie per valutare la tipologia degli spazi disponibili:
| Categoria | Soglia | OSM | Copernicus |
|---|---|---|---|
| Parco molto grande | > 300.000 m² | 1 (1,91 km²) | 1 (0,35 km²) |
| Grande parco | 100.000-300.000 m² | 3 (0,47 km²) | 8 (1,31 km²) |
| Parco di quartiere | 30.000-100.000 m² | 19 (1,19 km²) | 14 (0,79 km²) |
| Giardino | 10.000-30.000 m² | 27 (0,42 km²) | 34 (0,53 km²) |
| Piccolo spazio verde | < 10.000 m² | 68 (0,30 km²) | 72 (0,38 km²) |
| Totale | 118 (4,30 km²) | 129 (3,36 km²) |
Per calcolare quanti cittadini vivono entro 300 metri da uno spazio verde è necessario conoscere dove risiede la popolazione. Sono stati utilizzati i dati ISTAT sulle sezioni di censimento (l'unità territoriale comunale più piccola) incrociati con i dati demografici del Comune di Palermo.
I dati ISTAT coprono l'intera Sicilia. Per estrarre solo le sezioni di Palermo è stato utilizzato il servizio gratuito MapShaper con il seguente filtro:
# Filtraggio sezioni ISTAT per Palermo
filter 'PRO_COM == "082053"'
La regola dei 300 metri stabilisce che ogni persona dovrebbe avere accesso a uno spazio verde di qualità entro 300 metri da casa. Per verificare questa condizione sono stati combinati i dati sugli spazi verdi (capitolo 1) con la distribuzione della popolazione (capitolo 2).
L'algoritmo, basato sul metodo dell'interpolazione ponderata per area (Area-Weighted Interpolation), calcola quanta popolazione risiede entro 300 metri dagli spazi verdi creando dei buffer circolari attorno a ciascuno spazio e calcolando l'intersezione con le sezioni di censimento. Per ogni sezione viene stimata la frazione di popolazione coperta in base alla frazione di area intersecata, assumendo distribuzione uniforme della popolazione all'interno della sezione.
import geopandas as gpd
from shapely.ops import unary_union
# 1. Buffer 300m attorno agli spazi verdi
buffers = spazi_verdi.buffer(300)
area_copertura = unary_union(buffers)
# 2. Calcolo per sezione
popolazione_coperta = 0
for idx, sezione in sezioni.iterrows():
intersezione = sezione.geometry.intersection(area_copertura)
frazione_coperta = intersezione.area / sezione.geometry.area
pop_coperta = sezione['popolazione'] * frazione_coperta
popolazione_coperta += pop_coperta
# 3. Percentuale
percentuale = (popolazione_coperta / popolazione_totale) * 100
| Dataset | Copertura | Popolazione coperta | Non coperta |
|---|---|---|---|
| OpenStreetMap | 38,76% | 246.293 abitanti | 389.146 abitanti |
| Copernicus | 48,38% | 307.411 abitanti | 328.028 abitanti |
Il calcolo per quartiere riutilizza la stessa superficie di accessibilità cittadina (i buffer di tutti gli spazi verdi, uniti in un'unica geometria prima di qualsiasi ripartizione, in modo da non contare due volte la stessa sezione se ricade nel raggio di più spazi verdi). Ogni sezione di censimento viene assegnata al quartiere che ne contiene il centroide; la copertura di ciascun quartiere è poi calcolata aggregando la popolazione coperta e quella totale delle sole sezioni assegnate a quel quartiere.
L'utente inserisce il proprio indirizzo o condivide la propria posizione. Il sistema calcola la distanza minima dai bordi esterni degli spazi verdi e conta quanti spazi sono entro 300 metri. Se c'è almeno uno spazio, viene mostrato il nome, l'area e la distanza (feedback positivo). Se ci sono più spazi, viene mostrato il più grande con le stesse informazioni viste in precedenza. Se non ci sono spazi entro 300 metri, viene comunque indicata la distanza da quello più vicino (feedback negativo).
from shapely.geometry import Point
punto_utente = Point(lon, lat)
distanza_minima = min([
punto_utente.distance(spazio.boundary)
for spazio in spazi_verdi
])
La regola del 30% stabilisce che almeno il 30% della superficie urbana dovrebbe essere coperta da chiome degli alberi (tree canopy) per garantire benefici ambientali e di salute pubblica ottimali. Il calcolo si basa su immagini satellitari ad alta risoluzione.
Fonte: Copernicus Tree Cover Density 2023
Risoluzione: 10m raster
Range: 0-100% per pixel
import rasterio
import numpy as np
with rasterio.open('tcd_2023.tif') as src:
data = src.read(1)
mask = rasterio.features.geometry_mask(
[area_interesse],
transform=src.transform,
invert=True,
out_shape=data.shape
)
copertura_media = np.mean(data[mask])
Questo calcolo viene eseguito separatamente per ciascuno dei 25 quartieri. Il dato cittadino non è una nuova mascheratura sull'intero territorio comunale, ma una media dei 25 valori di quartiere pesata per la superficie di ciascun quartiere, in modo che i quartieri più estesi contribuiscano proporzionalmente di più al risultato cittadino:
copertura_cittadina = sum(copertura_quartiere[i] * area_quartiere[i] for i in quartieri) / sum(area_quartiere)
Per ogni quartiere viene calcolato il deficit arboreo (distanza dall'obiettivo 30%) e il numero stimato di alberi da piantare per raggiungerlo, assumendo una chioma media per albero maturo di 35 m²:
deficit_pct = 30 - copertura_media
area_da_coprire = area_quartiere * (deficit_pct / 100)
alberi_necessari = area_da_coprire / 35 # chioma 35 m²
La regola del 3 stabilisce che chiunque dovrebbe poter vedere almeno 3 alberi dalla propria casa. Non esistendo dataset affidabili su questo aspetto, agli utenti è stato chiesto di contare gli alberi dalla propria finestra tramite una semplice interfaccia web.
POST /api/tree-count → Salva conteggio (0-99)GET /api/tree-stats → Recupera statistiche aggregate{
total_responses: n,
average_trees: sum(counts) / n,
pct_meeting_rule: (count >= 3) / n * 100
}
CTA primaria: "Inserisci il tuo indirizzo e scopri se hai accesso al verde urbano"
Funzionalità:
CTA secondaria: "Condividi i tuoi risultati"
Visualizzazione: Analisi sulla copertura del tuo quartiere
Funzionalità:
CTA: "Contribuisci a piantare più alberi nella tua città" → Metropolitree
CTA primaria: Inserimento del numero di alberi visibili dalla propria finestra
Funzionalità:
CTA secondaria: "Chiedi al Comune di Palermo di piantare più alberi" → invio email
Per applicare la metodologia ad un'altra città è necessario seguire questi passaggi:
{{geocodeArea:Palermo}} nella query Overpass Turbo con il nome della città di interesse