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) | ~199 MB |
| GeoJSON | ~455 MB |
| Shapefile | ~145 MB |
Dimensioni verificate direttamente sui file in produzione il 6 luglio 2026 (possono variare leggermente a ogni aggiornamento della pipeline).
Nota di trasparenza: la scheda del dataset sulla pagina /data-downloads riporta ancora, alla data di questo aggiornamento, alcune etichette della v1 (fonte "OpenStreetMap", conteggio "9.400 zone", data dicembre 2025) non aggiornate quando i file sono stati sostituiti con la v2. I file scaricabili sono comunque quelli aggiornati descritti in questo articolo (verificato per dimensione e data di ultima modifica): la discrepanza riguarda solo il testo descrittivo della scheda, non il dato effettivamente servito.
Per esplorare le zone CAP su una mappa interattiva, usa la Mappa CAP Italia.
Domande frequenti
Il dataset v2 è davvero già scaricabile da /data-downloads?
Sì. I file collegati alla pagina download sono già stati sostituiti con l'output della pipeline v2 (verificato per dimensione e data di ultima modifica: 20 aprile 2026). La scheda descrittiva della pagina, però, non è ancora stata aggiornata e mostra ancora alcune etichette della v1: è un problema di testo, non di dato servito.
Perché sono cambiate le zone totali da 9.440 (v1) a 9.228 (v2)?
Perché i diagrammi di Voronoi della v1 frammentavano artificialmente il territorio in più zone di quante ce ne fossero realmente. La v2, basata su particelle catastali reali, elimina questa frammentazione: il numero di CAP effettivamente serviti (4.627) resta invariato, cambia solo quante zone geometriche li rappresentano.
Cosa succede alle 8.623 zone monocap (comuni con un solo CAP)?
Restano invariate rispetto alla v1: la ricostruzione a 9 fasi si applica solo alle 37 città con più CAP. Per un comune con un solo CAP, la zona coincide semplicemente con il confine comunale ISTAT.
Bologna e Reggio Emilia sono state ricostruite con la pipeline?
No. Per questi due comuni il dataset usa direttamente i poligoni ufficiali pubblicati dai rispettivi Comuni in open data, più affidabili di qualunque ricostruzione algoritmica.
Come interpreto il campo fonte?
Distingue l'origine di ciascuna zona: catasto+osm per le 576 zone ricostruite dalla pipeline v2, dati.gov.it per le 23 zone ufficiali (Bologna/Reggio Emilia), comuni_singlecap per le 8.623 zone monocap, osm per le 6 zone residue non ancora ricostruite.
Posso ancora usare la v1 se mi serve la versione precedente?
Sì, resta pubblicata e scaricabile: vedi il blog post originale della v1. Non è più però il dataset collegato di default dalla pagina download.
Qual è la licenza del dataset?
Open data, uso libero con attribuzione (le fonti sottostanti includono OpenStreetMap sotto licenza ODbL, dati catastali pubblici e dataset comunali in open data). Verifica sempre la pagina download per i dettagli aggiornati sulla licenza applicabile alla versione che scarichi.
Con che frequenza viene aggiornato?
Non con una cadenza fissa dichiarata: gli aggiornamenti dipendono dalla disponibilità di nuovi dati dalle 5 fonti (in particolare OpenStreetMap, che cambia continuamente). L'ultimo aggiornamento dei file verificato risale al 20 aprile 2026.
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
