ID Categoria Tipo Subtipo Indirizzo N. Civico Foglio Particella Sub UPL Quartiere Circ.
Cerca immobile
Zoom per le particelle

Clicca per filtrare

Unità abitativa
Unità non abitativa
Edificio
Area
Terreno

Georeferenziazione delle Proprietà Comunali di Palermo

Relazione tecnica dettagliata

Elaborazione: maggio 2026
Autore: Elaborazione automatizzata con PyQGIS via Claude AI

1. Acquisizione dei dati: PDF → CSV

Il documento originale è un PDF di 336 pagine contenente l'elenco degli immobili di proprietà del Comune di Palermo aggiornato al 31 dicembre 2024. Ogni pagina contiene una tabella con 8 colonne: CATEGORIA, TIPO, SUBTIPO, INDIRIZZO, NUMERO CIVICO, FOGLIO, P.LLA, SUB. L'estrazione in formato CSV ha richiesto la risoluzione di diversi problemi tecnici, affrontati con lo script pdf_to_csv.py.

1.1 Nessuna tabella rilevata automaticamente

Il primo tentativo con pdfplumber e extract_tables() ha restituito zero tabelle in tutte le 336 pagine. Il PDF non usa linee di griglia visibili: le colonne sono definite unicamente dalla posizione orizzontale del testo. Soluzione adottata: analisi diretta delle coordinate dei singoli caratteri.

1.2 Colonne troppo ravvicinate

Le posizioni x dei caratteri mostrano gap molto ridotti tra alcune colonne:

TransizioneGap misurato
SUBTIPO → INDIRIZZO24 pt
INDIRIZZO → NUMERO CIVICO22–24 pt
P.LLA → SUB14 pt
NUMERO CIVICO lungo → FOGLIO~11 pt

Con soglia iniziale a 25 pt, SUBTIPO, INDIRIZZO e NUMERO CIVICO venivano fusi in un unico campo (es. ALLOGGIO (E.R.P.)VIA BERGAMINI CARLO AMM.24). Soluzione: soglia abbassata a 8 pt con controllo esplicito sui confini di colonna.

1.3 Caratteri fisicamente sovrapposti

In alcune righe, caratteri di colonne diverse occupano la stessa posizione x. Esempio: la riga PZZA ORLANDO VITTORIO EMANUELE — le ultime lettere (L a x=600.9, E a x=605.4) si sovrappongono al numero civico 3 (x=600.0). Un estrattore che ordina per posizione x produrrebbe EMANUE3LE.

Soluzione: rilevamento del salto "backward" nel PDF stream. Nell'ordine interno del file, tutti i caratteri di EMANUELE appaiono prima del 3. Quando si incontra il 3 a x=600 dopo la E finale a x=605.4, il salto all'indietro — impossibile nel testo lineare — segnala l'inizio di un nuovo campo:

INDIRIZZO      = PZZA ORLANDO VITTORIO EMANUELE
NUMERO_CIVICO  = 3

1.4 Casi particolari nel dato grezzo

  • Fogli alfanumerici: alcuni valori FOGLIO non sono numerici puri (044C, 44A, 47/G, 128/) — codici catastali del centro storico di Palermo, non errori di estrazione.
  • Indirizzi assenti: 714 righe senza INDIRIZZO, relative a terreni identificati solo da foglio e particella catastale.
  • Numeri civici multipli: 33 righe con NUMERO CIVICO superiore a 7 caratteri (164 - 270, 8-8A-8B-10, 76-78-80) — intervalli legittimi riferiti a immobili su più civici consecutivi.

Output: file ELENCO_IMMOBILI_COMUNALI_2024.csv · 11.418 righe · encoding UTF-8 con BOM (compatibile Excel) · separatore virgola.


2. Obiettivo

Il Comune di Palermo dispone di un elenco degli immobili di proprietà comunale (ELENCO_IMMOBILI_COMUNALI_2024) in formato tabulare, privo di coordinate geografiche. L'obiettivo dell'elaborazione è stato quello di associare a ciascun record una geometria poligonale (particella catastale), rendendo il dataset cartografabile e analizzabile spazialmente.

Il processo ha dovuto risolvere due problemi distinti:

  1. Eterogeneità delle chiavi di ricerca: parte dei record dispone di riferimenti catastali (foglio e particella), parte solo di indirizzo postale, parte di entrambi o di nessuno.
  2. Qualità dei dati testuali: gli indirizzi presenti nel CSV presentano abbreviazioni non standard, varianti toponomastiche storiche, errori di battitura e nomi di strade nel frattempo rinominati.

3. Dataset utilizzati

LayerTipoCRSFeatureFonte
ELENCO_IMMOBILI_COMUNALI_2024Tabella CSV (no geom)11.418Comune di Palermo
ParticellePoligoni catastaliEPSG:6706135.101Agenzia delle Entrate
Civici - ANNCSUPunti indirizzoEPSG:4326165.027ANNCSU / Comune
ISTAT - UPLPoligoni UPLEPSG:432656ISTAT

Il layer ELENCO_IMMOBILI_COMUNALI_2024 contiene i campi:
CATEGORIA · TIPO · SUBTIPO · INDIRIZZO · NUMERO_CIVICO · FOGLIO · PLLA · SUB


4. Architettura del processo

Il processo è implementato interamente in PyQGIS (Python 3, QGIS 3.x) ed eseguito tramite il plugin QGIS-MCP. La pipeline si articola in quattro fasi:

ELENCO_IMMOBILI_COMUNALI_2024 (11.418 record)
          │
          ├─ [1] JOIN CATASTALE ──────────────► Particelle (foglio+plla)
          │         │ match: 7.562
          │         │ no match ↓
          ├─ [2] JOIN INDIRIZZO ──────────────► Civici ANNCSU → Particelle
          │         │ polygon: 3.000
          │         │ nearest: 513
          │         │ no match ↓
          ├─ [3] NO MATCH (343)
          │
          └─ [4] SPATIAL JOIN UPL ────────────► UPL + Quartiere + Circoscrizione

5. Fase 1 — Join catastale

Logica

Per ogni record del CSV che presenta valori nei campi FOGLIO e PLLA, viene costruita una chiave di ricerca (foglio, particella) normalizzata (rimozione degli zeri iniziali) e confrontata con il dizionario delle particelle catastali.

chiave_elenco  = (FOGLIO.lstrip('0'), PLLA.lstrip('0'))
chiave_catasto = (Foglio.lstrip('0'), particella.lstrip('0'))

Quando più particelle condividono la stessa chiave (es. frazionamenti), le geometrie vengono unite con combine().

Risultato

7.562 record georeferenziati (66,2%) — metodo più preciso, corrispondenza diretta con il Catasto.


6. Fase 2 — Join per indirizzo

Per i record senza riferimento catastale (o con catastale non trovato), si utilizza il layer Civici - ANNCSU come ponte: dato un indirizzo testuale e un numero civico, si individua il punto del civico, e da quel punto si risale alla particella catastale.

6.1 Pipeline di normalizzazione degli indirizzi

La normalizzazione è il passaggio critico: le stesse strade compaiono con grafie diverse nel CSV e nel layer Civici. È stata implementata la funzione norm_addr() con le seguenti trasformazioni in sequenza:

a) Pulizia base

  • Conversione in maiuscolo
  • Rimozione contenuto tra parentesi: VICOLO RITIRO SUOR VINCENZA (1)VICOLO RITIRO SUOR VINCENZA
  • Normalizzazione spazi e rimozione punti terminali non significativi

b) Gestione elisioni italiane

Le contrazioni italiane (DELL', SANT', SULL', NELL', DALL', ALL', COLL', GL') vengono compattate, evitando però di eliminare spazi nei cognomi siciliani con apostrofo finale (CALABRO' GIOVANNI, URZI' MARIO).

c) Espansione abbreviazioni

AbbreviazioneEspansione
V. / V (inizio stringa)VIA
VLO / V.LOVICOLO
CLECORTILE
PZZA / P.ZZA / P.ZAPIAZZA
P.LEPIAZZALE
P.TTA / PTTAPIAZZETTA
GRADINGRADINATA
STR.VICSTRADA VICINALE
PALPALAZZO
SS.XLSANTISSIMI QUARANTA
AMMAMMIRAGLIO
MONSMONSIGNORE
GENGENERALE
MAGGMAGGIORE
CARDCARDINALE
S. + consonanteSAN ...
S. + vocaleSANT'...
I/II/III/IV/V (romani)PRIMO/SECONDO/TERZO/QUARTO/QUINTO

d) Ordinamento token (token sorting)

Per gestire l'inversione nome/cognome nei dedicatari di strade:

"VIA GIUSEPPE CIRINCIONE"  →  norm: "VIA CIRINCIONE GIUSEPPE"
"VIA CIRINCIONE GIUSEPPE"  →  norm: "VIA CIRINCIONE GIUSEPPE"  ✓ match

Il primo token (tipo di via) è mantenuto fisso; i token successivi vengono ordinati alfabeticamente, escludendo le stop word (DELLA, DELLO, DEGLI, DELLE, DEL, DEI).

e) Gestione SAN / SANTA

Per le abbreviazioni S. seguite da consonante, vengono generate due candidature: una con SAN e una con SANTA, per coprire ambiguità come S. ROSALIA (santa) vs S. ROCCO (san).

6.2 Dizionario alias toponomastici

Per strade con denominazione errata nel CSV o rinominate nel tempo, è stato aggiunto un dizionario di alias applicato dopo la normalizzazione:

Denominazione nel CSVDenominazione corrente (Civici)Nota
VIA LA GUMINA FRATELLIVIA FRATELLI LAGUMINACognome composto scritto separato
VIA DELL'ERMELLINOVIALE NICOLÒ AZOTIStrada rinominata
VIALE XXVII MAGGIOVIALE VENTISETTE MAGGIONumero romano → lettera

6.3 Ricerca del numero civico

La funzione parse_civico() estrae i numeri civici da stringhe non standardizzate:

  • 7/D-7/E[7]
  • 02/03/2026 (data per errore nel campo) → [2, 3] (match sul primo valido)
  • SNC, S.N.C., 0[None] (nessun numero, prende primo civico disponibile sulla strada)

6.4 Da punto civico a particella

Una volta individuato il punto del civico, la ricerca della particella avviene in due passi:

  1. Polygon-in-point: interroga il QgsSpatialIndex delle particelle e verifica quale poligono contiene il punto. Le particelle stradali (campo particella contenente la stringa STRADA) sono escluse dall'indice.
  2. Nearest neighbor (fallback): se nessun poligono contiene il punto (es. civico sul bordo), si recuperano le 10 particelle più vicine e si seleziona quella a distanza minima reale.

La trasformazione di coordinate Civici (EPSG:4326) → Particelle (EPSG:6706) viene applicata prima della ricerca.

Risultato

Sotto-metodoRecord
Civico → poligono contenente3.000
Civico → particella più vicina513
Totale fase 23.513

7. Fase 3 — Record non georeferenziati (no match)

Totale: 343 record (3,0%)

CausaRecord
Foglio/plla nel CSV ma particella non trovata in catasto181
Senza foglio né indirizzo nel CSV83
Indirizzo presente ma strada non in Civici ANNCSU40
Foglio+indirizzo entrambi presenti ma nessuno risolto39

I 181 record con chiave catastale non trovata sono probabilmente riferiti a particelle soppresse, accorpate o con numerazione non aggiornata nel layer catastale disponibile.

I 40 record con indirizzo non trovato in Civici si riferiscono prevalentemente a strade periferiche, vicinali private o accessi non censiti nel dataset ANNCSU.

Distribuzione per categoria

CategoriaNo match
Edificio126
Terreno95
Area50
Unità non abitativa42
Unità abitativa30

8. Fase 4 — Arricchimento territoriale (UPL)

Per tutte le feature con geometria, è stato eseguito un spatial join per posizione con il layer ISTAT - UPL, trasferendo i campi:

  • UPL — nome dell'Unità di Primo Livello ISTAT
  • Quartiere — quartiere amministrativo
  • circoscrizione — circoscrizione comunale (I–VIII)

Metodo: centroide della particella → poligono UPL che lo contiene. Il layer UPL (EPSG:4326) è stato trasformato in EPSG:6706 prima del confronto.

11.074 feature arricchite (le 343 no_match rimangono prive di dato territoriale).


9. Risultati complessivi

9.1 Georeferenziazione

MetodoRecord% sul totale
Join catastale (foglio+plla)7.56266,2%
Join indirizzo → poligono3.00026,3%
Join indirizzo → nearest5134,5%
Con geometria11.07597,0%
No match3433,0%
Totale11.418100%

9.2 Distribuzione per categoria

CategoriaRecord
Unità abitativa5.775
Unità non abitativa1.969
Terreno1.697
Edificio1.528
Area449

9.3 Distribuzione per tipo (top 10)

TipoRecord
Edilizia residenziale pubblica4.584
Edilizia residenziale1.398
Locale1.103
Verde755
Area710
Scuola656
Arredo urbano328
Parcheggio310
Impianto tecnico278
Ufficio271

9.4 Distribuzione territoriale per circoscrizione

CircoscrizioneRecord con geom
I1.605
II1.735
III1.323
IV1.217
V1.776
VI1.307
VII1.179
VIII932

9.5 Top 10 UPL per concentrazione

UPLRecord
Borgo Nuovo985
San Giovanni Apostolo706
Ciaculli Croce Verde535
Tribunali o Kalsa501
Palazzo Reale o Albergaria495
Settecannoli470
Tommaso Natale - Sant'Ambrogio - Cardillo445
Bonagia412
S. Rosalia401
Monte di Pietà o Seralcadi399

10. Specifiche tecniche dell'output

Driver: GeoPackage (OGC standard)
Layer: immobili_comunali_georef
Geometria: MultiPolygon
CRS: EPSG:6706 (RDN2008 — Geographic 2D)
Encoding: UTF-8
Feature totali: 11.418
Dimensione file: ~4,4 MB

Schema dei campi

CampoTipoDescrizione
fidIntegerID progressivo
CATEGORIAStringCategoria immobile (abitativa, terreno, edificio…)
TIPOStringTipo d'uso (ERP, scuola, verde, parcheggio…)
SUBTIPOStringSottotipo
INDIRIZZOStringIndirizzo dal CSV sorgente
NUMERO_CIVICOStringNumero civico dal CSV sorgente
FOGLIOStringFoglio catastale
PLLAStringParticella catastale
SUBStringSubalterno
MATCH_TYPEStringMetodo di georeferenziazione usato
UPLStringNome UPL ISTAT
QuartiereStringQuartiere amministrativo
CircoscrizioneStringCircoscrizione (I–VIII)

Valori del campo MATCH_TYPE

ValoreSignificato
foglio_pllaGeoreferenziato tramite chiave catastale
civici_polygonGeoreferenziato tramite civico → particella contenente
civici_nearestGeoreferenziato tramite civico → particella più vicina
no_matchNon georeferenziato

Analisi del Patrimonio Immobiliare

Dati aggiornati al 31.12.2024

Il documento pubblicato dal Comune di Palermo ELENCO IMMOBILI COMUNALI elenca il patrimonio immobiliare del Comune, aggiornato a fine 2024. I beni sono classificati per tipologia e zona. La maggior parte sono alloggi di edilizia residenziale pubblica (E.R.P.), distribuiti in diverse vie della città.

Non mancano immobili non residenziali: botteghe e negozi in zone centrali, destinati ad attività commerciali. Ci sono anche terreni con usi diversi — aree commerciali o parzialmente edificabili.

Ogni voce riporta i dati catastali precisi: foglio, particella e numero civico. Un riferimento tecnico utile per identificare ciascun bene senza ambiguità. Nel complesso, il documento offre una panoramica chiara delle proprietà comunali gestite per scopi sociali e istituzionali.

11.418
Totale immobili
5.775
Unità abitative
5.584
Alloggi ERP + ER
97%
Georeferenziati
25
Quartieri
8
Circoscrizioni

1. Categorie principali

CategoriaN.%
Unità abitativa5.77550,6%
Unità non abitativa1.96917,2%
Terreno1.69714,9%
Edificio1.52813,4%
Area4493,9%
Totale11.418100%

2. Tipologie (TIPO)

TipoN.%
Edilizia Residenziale Pubblica4.58440,1%
Edilizia Residenziale1.39812,2%
Locale1.1039,7%
Verde7556,6%
Area7106,2%
Scuola6565,7%
Arredo Urbano3282,9%
Parcheggio3102,7%
Impianto Tecnico2782,4%
Ufficio2712,4%
Abitazione di Servizio1711,5%
Culturale1701,5%
Impianto Sportivo1491,3%
Infrastruttura Interesse Gen.1411,2%
Locale Tecnico1371,2%
Commerciale1141,0%
Strada740,6%
Sociale / Culto / Sanitario / N/D410,4%

3. Dettaglio Tipo → Subtipo

ERP 4.584

Alloggio (E.R.P.)4.544
Non classificato38
Magazzino (E.R.P.)2

Ed. Residenziale 1.398

Alloggio (E.R.)1.040
Non classificato243
Magazzino (E.R.)115

Locale 1.103

Magazzino635
Cantina171
Box148
Autorimessa18
Altri131

Verde 755

Verde Pubblico343
Agricolo310
Villa/Giardino29
Fondo25
Parco23
Riserva17
Parco Giochi6

Scuola 656

Elementare217
Media207
Asilo Nido71
Materna/Elementare52
Materna43
Materna/El./Media10
Altri56

Arredo Urbano 328

Fontana289
Chiosco34
Palchetto Musica3
Statua2

Parcheggio 310

Posto Auto125
Parcheggio Comunale119
Parcheggio Pubblico49
Posto Auto Scoperto12
Altri5

Impianto Tecnico 278

Pozzo93
Capannone42
Imp. Sollevamento34
Acquedotto30
Serbatoio28
Imp. Depurazione17
Altri34

Ufficio 271

Ufficio Comunale205
Altri Uffici43
Ufficio Pubblico22
Sede Istituzionale1

Culturale 170

Struttura Polivalente64
Monumento45
Centro Culturale30
Museo23
Biblioteca4
Teatro2

Imp. Sportivo 149

Palestra82
Campo Tennis17
Palazzetto Sport13
Campo Calcio8
Campo Calcetto7
Altri22

Inf. Interesse Gen. 141

Poligono di Tiro64
Cimitero23
Lavanderia16
Clinica Veterinaria11
Gabinetto Pubblico11
Mercato Ittico11

Commerciale 114

Negozi e Botteghe97
Centro Commerciale10
Bar5
Opificio2

Strada 74

Regia Trazzera71
Sede Stradale2
Strade1

4. Distribuzione per Circoscrizione

Circ.Totale%Unit. abit.Unit. non ab.TerrenoEdificioArea
I1.60514,1%7774894324254
II1.73515,2%92424122924497
III1.32311,6%73616522013468
IV1.21710,7%54714832515443
V1.77615,6%1.05934414220823
VI1.30711,4%76819519912421
VII1.17910,3%43612235917488
VIII9328,2%498223851215
N/D3443,0%30429512750
Tot.11.418100%5.7751.9691.6971.528449

Circoscrizione V è la più dotata (1.776). Circoscrizioni IV e VII concentrano la maggior quota di terreni.


5. Distribuzione per Quartiere

QuartiereN.Circoscrizione
Villagrazia – Falsomiele1.133V
Borgo Nuovo985II
Cruillas – S. Giovanni Apostolo944II
Palazzo Reale – Monte di Pietà894I
Settecannoli832VI
Brancaccio – Ciaculli788VI
Tribunali-Castellammare711I
Montegrappa – S. Rosalia571V
Tommaso Natale – Sferracavallo504VIII
Montepellegrino420VIII
Resuttana – San Lorenzo363III
Politeama341I
Mezzomonreale – Villa Tasca331VII
Zisa326IV
Uditore – Passo di Rigano324III
Partanna Mondello309VII
Oreto – Stazione305V
Pallavicino203III
Cuba – Calatafimi169IV
Arenella – Vergine Maria163VIII
Noce141IV
Libertà131II
Altarello96VII
Boccadifalco50VII
Malaspina – Palagonia40II
N/D344

6. Qualità della Georeferenziazione

MetodoN.%
foglio_plla – chiave catastale7.56266,2%
civici_polygon – civico poligono3.00026,3%
civici_nearest – civico prossimo5134,5%
no_match – non georef.3433,0%
Totale11.418100%

Il 97% degli immobili è georeferenziato. 343 record (3%) rimangono senza localizzazione spaziale e richiedono verifica manuale.


7. Sintesi e osservazioni

Patrimonio prevalentemente residenziale

Il 53% degli immobili è destinato all'edilizia residenziale (ERP + ER), con 5.584 alloggi totali.

ERP dominante

4.544 alloggi di Edilizia Residenziale Pubblica (39,8% del patrimonio totale).

Verde e spazi aperti

755 aree verdi (343 pubbliche, 310 agricole) più 710 aree non edificate.

Patrimonio scolastico

656 unità scolastiche su tutti i livelli: nidi, materne, elementari, medie.

Infrastruttura idrica

93 pozzi, 30 acquedotti, 28 serbatoi — rete idrica comunale rilevante.

Concentrazione territoriale

Circ. V più dotata (1.776). Centro storico (Circ. I) con alta densità di usi non residenziali.