Zone CAP Italia v2: da Voronoi a 3,4 milioni di particelle catastali
I codici di avviamento postale italiani restano uno dei paradossi aperti dell'open data nazionale. Un'infrastruttura usata ogni giorno da milioni di persone, gestita come dato proprietario da Poste Italiane. A settembre 2025 abbiamo pubblicato la prima versione del dataset CAP subcomunali, basata su diagrammi di Voronoi e indirizzi OpenStreetMap. Ha funzionato, ma con un limite strutturale: i confini erano approssimazioni geometriche, non confini reali.
La versione 2 cambia radicalmente approccio. Invece di Voronoi, usa 3.435.296 particelle catastali dall'Agenzia delle Entrate come base, con una pipeline a 9 fasi che incrocia 5 fonti dati indipendenti. Le zone delle 37 città multicap sono state ricostruite da zero. Il risultato: 97,1% di accuratezza validata su Reggio Emilia, contro l'84,3% della v1.
Il dataset è gratuito e scaricabile in tre formati GIS dalla pagina download dataset.
Cosa cambia dalla v1 alla v2
La v1 aveva un approccio elegante ma approssimativo: prendeva gli indirizzi OpenStreetMap con tag addr:postcode, costruiva diagrammi di Voronoi e tagliava il risultato sui confini comunali ISTAT. Produceva zone CAP con bordi rettilinei e artificiali.
La v2 ribalta il metodo. Parte dalle particelle catastali — le unità fisiche del territorio italiano (ogni terreno, edificio, cortile è una particella) — e assegna un CAP a ciascuna usando dati da 5 fonti. Poi dissolve le particelle adiacenti con lo stesso CAP per ottenere le zone.
| Aspetto | v1 (2025) | v2 (2026) |
|---|---|---|
| Base geometrica | Diagrammi di Voronoi | Particelle catastali |
| Fonti dati per CAP | 1 (OpenStreetMap) | 5 (OSM + OpenAddresses + Foursquare + Stradari + Catasto) |
| Particelle processate | — | 3.435.296 |
| Fasi pipeline | 5 | 9 |
| Accuratezza (Reggio Emilia) | 84,3% Jaccard | 97,1% per particella |
| Zone totali | 9.440 | 9.228 |
| Zone multicap | 817 (Voronoi) | 576 (catasto) + 23 (dati.gov.it) + 6 (OSM) |
| Copertura particelle | — | 100% |
Le zone sono diminuite (da 9.440 a 9.228) perché i Voronoi frammentavano artificialmente il territorio. Milano, ad esempio, passa da 62 a 38 zone — non perché mancano CAP, ma perché la v1 creava zone spurie. Il numero di CAP realmente serviti resta invariato: 4.627.
Le 37 città ricostruite
La v2 ricalcola le zone multicap di 37 città italiane. Le zone monocap (8.623 comuni con un solo CAP) restano invariate dalla v1, così come Bologna e Reggio Emilia che mantengono i dati ufficiali pubblicati dai rispettivi comuni.
| Città | Zone v1 | Zone v2 | Superficie km² |
|---|---|---|---|
| Roma | 91 | 73 | 1.183 |
| Genova | 65 | 43 | 235 |
| Milano | 62 | 38 | 158 |
| Trieste | 53 | 28 | 85 |
| Messina | 43 | 42 | 205 |
| Padova | 39 | 21 | 87 |
| Torino | 35 | 33 | 110 |
| Palermo | 34 | 26 | 153 |
| Napoli | 33 | 25 | 101 |
| Firenze | 26 | 21 | 93 |
| Verona | 25 | 20 | 190 |
| Venezia | 21 | 17 | 409 |
| Perugia | 21 | 14 | 441 |
| Brescia | 20 | 15 | 83 |
| Bari | 18 | 11 | 111 |
| La Spezia | 17 | 13 | 49 |
| Pescara | 17 | 9 | 32 |
| Cagliari | 16 | 11 | 83 |
| Reggio di Calabria | 16 | 14 | 232 |
| Livorno | 15 | 8 | 100 |
| Salerno | 14 | 14 | 57 |
| Ancona | 11 | 10 | 121 |
| Catania | 11 | 10 | 177 |
| Pisa | 10 | 8 | 180 |
| Ravenna | 10 | 5 | 638 |
| Ferrara | 10 | 4 | 394 |
| Bergamo | 9 | 9 | 37 |
| Modena | 8 | 6 | 176 |
| Verbania | 6 | 5 | 36 |
| Taranto | 6 | 3 | 243 |
| Parma | 6 | 6 | 255 |
| Rimini | 4 | 4 | 130 |
| Cesena | 4 | 2 | 242 |
| Pesaro | 4 | 2 | 149 |
| Alessandria | 3 | 2 | 199 |
| Foggia | 3 | 2 | 497 |
| Piacenza | 2 | 2 | 116 |
| Totale | 788 | 576 | 7.784 km² |
Superficie totale coperta dalle zone ricalcolate: 7.784 km².
La pipeline a 9 fasi
Ogni particella catastale riceve un CAP e un punteggio di confidenza (da 0 a 1). Le fasi lavorano in sequenza: ciascuna assegna un CAP alle particelle ancora scoperte, con tecniche progressivamente più aggressive.
Fase 0 — Pre-pulizia
Filtraggio dei CAP invalidi e rimozione degli outlier spaziali. Per ogni punto, si controlla che almeno l'80% dei 10 punti più vicini appartenga allo stesso CAP. I punti isolati vengono penalizzati (-0,60 confidenza).
Fase 1 — Scoring confidenza
Ogni punto riceve un punteggio basato sulla fonte di provenienza:
| Fonte | Confidenza base |
|---|---|
OpenStreetMap (addr:postcode) |
0,80 |
| OpenAddresses + stradario (concordi) | 0,95 |
| OpenAddresses + stradario (singolo) | 0,85 |
| Stradari pubblici | 0,70 |
| Foursquare Open Places | 0,50 |
Bonus di +0,20 quando due fonti indipendenti concordano sullo stesso CAP per lo stesso punto. Il principio è: più fonti dicono la stessa cosa, più alta la fiducia.
Fase 2 — Spatial join (16,2% delle particelle)
Ogni punto viene assegnato alla particella che lo contiene. Se una particella contiene più punti con CAP diversi, vince il voto di maggioranza pesato per confidenza. 557.737 particelle ricevono il CAP in questa fase.
Fase 3 — Buffer strade (33,2% delle particelle)
Per le particelle senza punti interni, si cerca se sono entro 30 metri da una strada con CAP noto. La logica: le particelle lungo una via prendono il CAP della via. 1.143.982 particelle assegnate.
Fase 4 — KNN da punti (46,0% delle particelle)
I 15 punti più vicini (entro 1.000 m) votano con peso inversamente proporzionale alla distanza, moltiplicato per la confidenza. È la fase che copre il volume maggiore: 1.584.309 particelle.
Fase 5 — KNN da parcelle (4,6% delle particelle)
Propagazione dai vicini già assegnati. Fino a 500 m, 3 iterazioni. 158.956 particelle assegnate.
Fase 6 — Smoothing
Correzione delle isole: particelle con confidenza ≤ 0,7 il cui CAP diverge da tutti i vicini entro 200 m. 12.316 correzioni.
Fase 7 — Post-processing
Analisi topologica: le particelle isolate (meno del 10% della zona connessa circostante) vengono riassegnate alla zona dominante. 7.722 correzioni.
Fase 8 — Nearest unlimited (1,2% delle particelle)
L'ultima rete di sicurezza: le particelle residue (concentrate in zone rurali di Foggia, Reggio Calabria, Taranto, Catania) ricevono il CAP del vicino assegnato più prossimo, senza limite di distanza. 40.937 particelle con confidenza 0,1.
5 fonti dati, non una sola
La v1 dipendeva interamente da OpenStreetMap. La v2 incrocia 5 fonti indipendenti:
Particelle catastali (base geometrica)
3.435.296 unità dal servizio WFS dell'Agenzia delle Entrate. Sono il substrato fisico: ogni terreno, edificio, cortile è una particella.
OpenStreetMap
Tutti i nodi e way con tag addr:postcode nei 37 comuni multicap. Resta la fonte primaria di punti georiferiti con CAP (confidenza base 0,80).
OpenAddresses
Indirizzi geocodificati da openaddresses.io (dati governativi aperti). Arricchiti con CAP tramite matching con gli stradari comunali. Quando il match è positivo, la confidenza è 0,85–0,95.
Foursquare Open Places
POI con codice postale dal dataset pubblico Foursquare. Fonte secondaria (confidenza 0,50), utile soprattutto per la cross-validazione: se Foursquare concorda con OSM, la fiducia sale.
Stradari pubblici
Due stradari indipendenti che associano nomi di strade ai CAP. Quando entrambi concordano, la confidenza raggiunge 0,95. Permettono anche di assegnare CAP a strade OSM senza tag addr:postcode.
Validazione: 97,1% su Reggio Emilia
Reggio Emilia è il banco di prova ideale: il comune ha pubblicato in open data i poligoni ufficiali delle 4 zone CAP (42121–42124). Per ogni particella catastale (72.382 in totale), il CAP assegnato dalla pipeline viene confrontato con il CAP della zona ufficiale.
| Metrica | Valore |
|---|---|
| Particelle confrontate | 72.382 |
| Accuratezza complessiva | 97,1% |
| Accuratezza alta confidenza (≥ 0,70) | 99,4% |
| Indice di Jaccard medio | 81,3% |
Dettaglio per zona
| CAP | Accuratezza | Jaccard |
|---|---|---|
| 42121 (centro storico) | 96,8% | 55,3% |
| 42122 | 97,4% | 91,9% |
| 42123 | 96,3% | 91,1% |
| 42124 | 97,5% | 86,8% |
Perché Jaccard è più basso della v1
Il Jaccard areale scende da 84,3% a 81,3%. Sembra un peggioramento, ma non lo è. Nella v1, il Jaccard confrontava la sovrapposizione areale tra poligoni Voronoi e poligoni ufficiali — due forme geometriche simili nella scala. Nella v2, anche un piccolo scostamento nel confine tra due zone produce una fascia di disaccordo ampia. L'accuratezza per particella (97,1%) è la metrica che conta per l'uso pratico: il 97,1% delle particelle finisce nella zona CAP corretta.
Post-processing delle geometrie
Dopo il dissolve delle particelle in zone CAP, le geometrie passano per tre fasi di pulizia:
- Validazione:
buffer(0),make_valid, rimozione geometrie vuote, conversione a Polygon/MultiPolygon. - Riempimento buchi: 107.324 buchi iniziali → 2.515 finali (97,7% rimossi). I micro-buchi da dissolve (97.530) vengono eliminati. I buchi da strade, fiumi, ferrovie (7.279) vengono riempiti espandendo le zone adiacenti.
- Ricalcolo metriche: superficie e perimetro in EPSG:6875 (proiezione conica conforme ottimizzata per l'Italia).
Struttura del dataset
| Campo | Tipo | Descrizione |
|---|---|---|
cap |
string | Codice di Avviamento Postale |
comune |
string | Nome del comune |
comune_cap |
string | Range CAP del comune |
codice_bel |
string | Codice Belfiore |
regione |
string | Regione |
provincia |
string | Provincia |
provincia_ |
string | Sigla provincia |
superficie |
float | Superficie in km² |
perimetro_ |
float | Perimetro in km |
numpunti |
float | Numero di particelle catastali aggregate |
fonte |
string | Origine dei dati (catasto+osm, comuni_singlecap, dati.gov.it, osm) |
ultimo_agg |
string | Data ultimo aggiornamento |
geometry |
MultiPolygon | WGS84 (EPSG:4326) |
Il campo fonte è la chiave per l'affidabilità: le zone catasto+osm (576) sono le nuove, ricostruite dalla pipeline a 9 fasi. Le zone dati.gov.it (23) sono ufficiali. Le zone comuni_singlecap (8.623) hanno il confine del comune intero. Le zone osm (6) sono residue dalla v1.
Download
Il dataset v2 è disponibile in tre formati dalla pagina download:
| Formato | Dimensione |
|---|---|
| GeoPackage (.gpkg) | 204 MB |
| GeoJSON | 464 MB |
| Shapefile | 202 MB |
Per esplorare le zone CAP su una mappa interattiva, usa la Mappa CAP Italia.
Il paradosso dei CAP italiani (ancora)
Nel 2006, in preparazione della privatizzazione, Poste Italiane ha reso il database CAP un prodotto commerciale (CAP Zone). Maurizio Napolitano lo ha documentato nel suo articolo "Lo sai vero che i CAP non sono open data?".
Solo due comuni italiani hanno pubblicato autonomamente le mappe CAP in open data: Bologna e Reggio Emilia. Questi dati ufficiali sono inclusi nel dataset v2 e usati come benchmark di validazione.
La ricostruzione da particelle catastali non è la soluzione ideale — quella sarebbe la pubblicazione ufficiale da parte di Poste Italiane. Ma con 5 fonti indipendenti e 97,1% di accuratezza, è la migliore approssimazione open disponibile oggi per l'Italia.
Prossimi passi
- Aggiornamenti trimestrali del dataset su /data-downloads
- Estensione della validazione ad altri comuni con dati confrontabili
- Miglioramento Fase 8: ridurre la distanza mediana per le particelle rurali residue (attualmente 800–2.000 m)
- Integrazione con la documentazione API per query CAP programmatiche
