Uno sguardo sul Patrimonio Culturale di Palermo

patrimoniodipalermo.netlify.app, la dataviz che riscopre la Città

a cura di:
Silvia Spacca | Laurea magistrale in Ingegneria del Cinema. 3D Artist, grafica, fotografa https://twitter.com/silla_abrasax
Leonardo Zanchi | Dopo la laurea magistrale in Computer Science metto i pallini sulle mappe https://twitter.com/lezanviz


Zīz, Πάνορμος, Panormus, Balarm, in ogni caso Palermo, una città dai mille volti e dalle molte dominazioni, ognuna delle quali ha lasciato alla popolazione mondiale inestimabili tesori appartenenti a epoche e culture diverse.

In considerazione del vasto Patrimonio Culturale della Città, concentrato in gran parte nell’originario centro nevralgico costituito dagli antichi quartieri della Kalsa, l’Albergheria, la Loggia e il Capo, è nata l’idea di realizzare una visualizzazione che permetta di volgere uno sguardo generale a questi Beni, contestualizzandoli all’interno del tessuto urbano.
La visualizzazione è consultabile all’indirizzo: https://patrimoniodipalermo.netlify.app/.

Tracce della connessione con il territorio possono essere ritrovate nelle scelte grafiche, progettate nel dettaglio per creare l’effetto di una cartolina d’altri tempi. 

Il font usato riproduce quello delle illustrazioni del dopoguerra, affiancato dall’immagine delle Cubula, scelta per identificare l’intero Patrimonio Culturale; un edificio arabo-normanno che assurge a simbolo di multiculturalità e integrazione, aspetti che storicamente hanno caratterizzato la Città.
Infine la scelta della  paletta di colori utilizzati per i componenti grafici, essa infatti è stata realizzata prendendo le tonalità più utilizzate nelle tradizionali ceramiche di Caltagirone, anche loro scelte a simboleggiare la cultura siciliana più in generale.

La struttura

La visualizzazione si presenta come una dashboard composta da tre aree tematiche, da noi identificate come: i luoghi, il tempo e le proporzioni. Ognuna di queste risponde in modo interattivo ai filtri che l’utente può impostare dalle select.

I luoghi sono costituiti, tecnicamente parlando, da una Scattermap, una Gridmap e una Choropleth, definite rispettivamente Posizione, Distribuzione e Prevalenza, al fine di facilitare l’esperienza utente. Le mappe possono essere visualizzate una per volta attraverso dei bottoni e mostrano diversi aspetti dei monumenti rispetto alla loro posizione geografica, alla distribuzione nel territorio e la prevalenza di uno stile architettonico rispetto ad altri per ogni quartiere. I tooltip che accompagnano la selezione di ogni elemento forniscono informazioni circa la locazione dell’edificio, l’anno di costruzione e il quartiere di appartenenza. 

Il tempo è costituito da un grafico di tipo Lollipop, in cui l’ascissa rappresenta l’evoluzione temporale, che procede di cinquant’anni in cinquant’anni, mentre l’ordinata mostra la quantità di monumenti per ogni gruppo appartenente all’asse temporale considerato. Quando non sono presenti edifici per un determinato periodo, il grafico mostra una sfera grigia alla base dell’asse.

Le proporzioni sono composte da tre Waffle, i quali mostrano proporzionalmente informazioni sullo stile architettonico, la tipologia di Bene e l’Ente gestore dello stesso, così da permettere uno sguardo generale sulla totalità delle voci presenti nel database. Ogni categoria è identificata con un colore e un tooltip permette di ottenere informazioni specifiche sulla categoria selezionata.

Per andare incontro alla maggiore quantità di persone possibile e facilitare l’esperienza utente, ogni grafico ha una leggenda a scomparsa, è stato inserito un pannello di spiegazioni attivabile con il tasto menu ed è stata introdotta una guida passo passo che mostra le principali azioni che l’utente può effettuare.

I dati

Il dataset che abbiamo scelto per realizzare la visualizzazione è disponibile all’interno del Portale Open Data del Comune di Palermo. Nonostante i dati risultassero parziali, non aggiornati dal 2017 e con errori e imprecisioni, con le dovute modifiche e correzioni sono stati una base di partenza discreta. Abbiamo corretto campi, eliminato quello che non sarebbe servito e aggiunto informazioni essenziali per ciò che si voleva visualizzare.
La nostra versione è disponibile qui, per qualsiasi dubbio/proposta, aprite una issue. 

Dal nostro punto di vista, la forza del dato risiede anche nella sua stessa esistenza e nella funzione di stimolo che può assolvere.
In questo modo è andata la realizzazione del progetto sul Patrimonio di Palermo: stavamo cercando qualche ispirazione all’interno del Portale e l’idea di colorare la città in base allo stile dei monumenti è nata man mano che si prendeva coscienza della presenza dei dati e di quello che permettevano di creare.

Le criticità che abbiamo individuato nel dataset sono riassumibili in tre punti:

  1. è estremamente parziale, contiene solo 140 monumenti e spesso alcuni campi dei dati hanno un valore nullo.
  2. non viene aggiornato dal 2017. Dal punto di vista del nostro lavoro non è un grosso problema, ma in generale non è auspicabile.
  3. contiene errori piuttosto grossolani riguardo alla posizione del monumento, in particolare per latitudine e longitudine (alcuni beni sono posizionati nel golfo di Palermo).

Come già detto, il secondo punto non è nel nostro caso un problema, così come il terzo, per quanto richieda molto tempo correggere le inesattezze. Il primo punto è sicuramente quello più importante, perché rischia di inficiare tutto il senso della visualizzazione. Il dataset è scarno, 140 voci sono veramente poche se messe a confronto con quello che Palermo possiede. Dovrebbe essere ampliato, dato anche l’estremo interesse che il patrimonio di una città come Palermo riscuote.

Dei campi disponibili su ogni singola voce abbiamo deciso di utilizzare la descrizione (il tipo di monumento), la denominazione (il nome del monumento), il gestore (l’ente gestore del monumento), latitudine, longitudine e indirizzo. Al dataset mancavano importanti informazioni (basilari, almeno nel nostro caso, ma sentirei di estenderlo al dataset in generale) relative all’anno di costruzione e allo stile. A volte queste informazioni sono contenute più o meno esplicitamente nella proprietà Cenni_storici, ma sono difficilmente estraibili in modo automatizzato, data anche la parzialità con cui compaiono riportate nelle proprietà. Molto del tempo è stato quindi dedicato a ricercare l’anno di costruzione del monumento e il suo stile e ad aggiungere voci mancanti. Qua si aprirebbe un discorso molto lungo, che può essere riassunto in questo modo: un inferno.

A questo proposito apro una piccola parentesi: se qualcuno è a conoscenza di monumenti mancanti, corredati dalle informazioni sopra elencate, scriveteci così che sia possibile ampliare il dataset e la visualizzazione (dove è finito il liberty di Palermo?), senza limitarsi al solo nome del Bene, ma includendo le informazioni annesse, che sono la parte più complicata da individuare. Lo stesso se avete notato errori in quello che è già presente.

Lo Sviluppo

Dal punto di vista implementativo si tratta di una web application realizzata con ReactJS. Si potrebbe obiettare che la scelta di utilizzare tale libreria per un sito web simile sia “overkill”, tanto boilerplate per una singola pagina non soggetta ad update: sono d’accordo, non era sicuramente necessario introdurre React per realizzarla, ma è diventato talmente semplice avere una base di partenza “up and running”, che non riesco a farne a meno. In realtà il vero motivo per cui React è diventato per me imprescindibile è la galassia di librerie che sono costruite attorno ad esso e la semplicità con cui è possibile introdurle nel proprio progetto. Ne cito alcune che ritengo più valide, e che dovrebbero essere tenute in considerazione da chi fa dataviz con React:

  • DeckGL: è un framework costruito su webgl che permette di visualizzare una grande mole di dati geospaziali. Da quando l’ho scoperto e devo trattare dati spaziali, è la mia prima scelta (anche sopra Leaflet), specialmente su React. È open-source ed è realizzata da Uber.
  • KeplerGL: se avete bisogno di visualizzare dati geospaziali velocemente, direttamente online senza installare nulla sul proprio PC, è la scelta migliore. Sempre di Uber, sempre opensource.
  • Nivo: d3.js e React? Nivo è una delle mie prime scelte quando ho bisogno di grafici classici, specialmente se ho bisogno di un Waffle. Sempre open source.
  • Recharts: sempre d3.js e React. La libreria mette a disposizione dei layout pronti all’uso, ma consente anche di personalizzarli. Sempre open source.
  • VX: ancora d3.js e React. Normalmente impiego questa libreria quando ho necessità di creare grafici che hanno bisogno di una certa personalizzazione, ma voglio una base solida di partenza basata sui paradigmi di React. Rispetto alle altre due librerie, VX è ad un livello di astrazione più basso, più vicino a d3.js, ma con il vantaggio che qualcuno si è già preso la briga di implementare ogni modulo come componente. Sempre open source.
  • Highcharts: è una libreria che ho scoperto durante un lavoro per una azienda dove avevano l’assoluta necessità di impiegare Highcharts. È ben fatta, solida, ben supportata, ma è pagamento per prodotti commerciali. La uso spesso per i progetti, soprattutto se ho bisogno di grafici classici. Su React dò sempre più spazio a react-jsx-Highcharts, un wrapper non ufficiale di Highcharts, alternativa a quella ufficiale.
  • Per riferimento lascio altre librerie che ho impiegato di tanto in tanto, in ordine sparso: Reaviz, React-vis, Semiotic, Vega e Vega-lite, G2, Echarts, HarpGL. Tutto open source, tutte free.

In questo progetto sono state impiegate tre librerie grafiche: DeckGL, Nivo e Highcharts.

Con DeckGL è stata realizzata la parte di visualizzazione geospaziale, che consiste nelle tre mappe a sinistra (in una visualizzazione desktop).
DeckGL utilizza un layer statico che rappresenta la mappa, implementato con un componente di React-map-gl (se dovete utilizzare Mapbox su React, React-map-gl [https://visgl.github.io/react-map-gl/] è la libreria che vi serve), e tre layer dinamici che codificano i dati disponibili, implementati utilizzando i componenti offerti da DeckGL.

Quello che vedete è praticamente tutto quello che serve per avere una mappa pronta all’uso. Per aggiungere i dati è necessario dichiarare il layer e aggiungerlo al componente di DeckGL in questo modo. 

Per avere interattività negli oggetti rappresentati nella visualizzazione c’è da scrivere qualche riga di codice in più, ma nulla di complicato, una useEffect() è sufficiente.

Con Nivo, invece, si sono realizzati i tre Waffle in alto a destra, utilizzati per mostrare le proporzioni.

Ciò che mi piace di Nivo è il suo approccio dichiarativo all’implementazione dei charts, che lo rende estremamente semplice nel suo utilizzo. Se con Deck.GL le righe di codice erano una ventina per avere una mappa con dei dati rappresentati, con Nivo per avere un Waffle pronto e responsive ne sono sufficienti 5.

Se non conoscete la libreria, fate un salto sul sito ufficiale e guardatevi uno dei componenti che mette a disposizione, per esempio il Waffle[https://nivo.rocks/waffle/]. Avete provato le modifiche on the fly al chart?

Con Highcharts è stato realizzato il Lollipop in basso a destra. Come già detto, alcuni mesi fa ho fatto la conoscenza di una libreria wrapper per React di Highcharts chiamata react-jsx-highcharts, una alternativa al wrapper ufficiale Highcharts-react. Si trattava di una situazione un po’ al limite, in cui avevo moltissimi dati (ordine del milione) in una Heatmap e doveva essere possibile interagire con il grafico, cambiare i dati mostrati. La prima implementazione l’ho realizzata con Highcharts-react, non era brillante, i tempi di attesa erano superiori al secondo. Avevo provato tutto quello che mi era venuto in mente, passare da svg a canvas, eliminare qualsiasi animazione, ma i tempi ancora non erano soddisfacenti. Ho provato react-jsx-highcharts e la transizione dei dati era pressoché istantanea, nessun ritardo. Da quel momento in poi è diventata la mia libreria di Highcharts per React.

Nel caso del Lollipop le righe di codice sono circa una decina, direi non male?

Ciò che mi piace in generale di Highcharts è il vasto parco di grafici che mette a disposizione, non sono personalizzabili come con d3.js, ma conoscendo a fondo la libreria è possibile spingersi molto oltre quelle che sono le demo disponibili [https://www.highcharts.com/demo]. Un altro aspetto che mi piace è la generalità con cui si dichiarano gli elementi che costituiscono il grafico, riuscendo a stabilire un semplicità di utilizzo che difficilmente trova eguali.

Ovviamente il discorso non si esaurirebbe qui, si potrebbe parlare della struttura che permetta di interagire con i grafici, della costruzione del dato, dell’interfaccia e l’esperienza utente. Tipicamente parti del lavoro che richiedono molto tempo, in particolare la costruzione del dato, che in alcuni casi è parzialmente facilitata se è già presente un dataset e la realizzazione di un’interfaccia utente che sia responsive,  intuitiva, accattivante e che rispecchi coerentemente la natura del lavoro.
Poi l’ultima parte della progettazione: ottimizzazione, testing e debugging.

Palermo, popolazione residente per cittadinanza, UPL , Quartiere e Circoscrizione – 2018

Grazie al Dr Girolamo D’Anneo, Responsabile Studi e Ricerche Statistiche e Ciro Spataro  dell’Area Servizi alla città Servizio Innovazione  U.O. Transizione al Digitale, entrambi funzionari del Comune di Palermo, sono stati pubblicati i dataset relativi alla popolazione residente, italiana e straniera.

I nuovi dataset mi hanno permesso di replicare e migliorare il lavoro fatto nel post Milano e Palermo: le mappe della distribuzione della popolazione straniera residente nel 2018, dove  il dataset su Palermo non era esattamente ideale, in quell’esercizio i dati sono stati estratti da una tabella pdf, GLI STRANIERI A PALERMO NEL 2018pagina 21, Tavola 6: Cittadini al 31/12/2018 per cittadinanza a circoscrizione.

I dati

Per realizzare i grafici e le mappe abbiamo scelto 2 dei 12 dataset pubblicati in opendata dal Comune di Palermo, e sono: Stranieri residenti a Palermo al 31/12/2018 per Unità di primo livello e cittadinanza e Popolazione residente a Palermo al 31/12/2018 per Unità di primo livello e cittadinanza, scelti perché contengono l’informazione sulla cittadinanza distribuita nella UPL (Unità di primo livello), avere come identificatore geografico la sezione censuaria dell’ISTAT sarebbe stato l’ideale, più accurata è la distribuzione geografica dei residenti, più sarà realistica la mappa a densità di punti.

Come prima cosa abbiamo unito i due dataset, notiamo che manca il dato sul “genere” (maschio/femmina), per le mappe è ininfluente, ma nei grafici potrebbe essere utile per ulteriori analisi.

La tabella dei dati di base è composta da 56 righe e N colonne, una per ogni Nazionalità presente a Palermo. Per il nostro progetto questo tipo di ordine è poco utile, per noi è importante conoscere quanti residenti di ogni singola Nazionalità abitavano in una UPL, ovvero tutte le colonne delle Nazionalità dovevano essere trasposte da colonne in righe, mantenendo le colonne con le info sul territorio, UPL, quartiere e circoscrizione.

Tutto questo lavoro è stato fatto come per magia da @aborruso con VisiData e Miller

Ecco la nuova tabella dati, le colonne Cittadinanza e Residenti sono il frutto della magia di Andrea, in seguito sono state aggiunte le colonne del Continente e Sub-Regione di provenienza per avere ulteriori livelli di analisi sulla popolazione. Questa nuova tabella è stata la nostra base dati, con un dataset ripulito e ordinato si lavora meglio 🙂

Tutti i dati rielaborati da @opendatasicilia e usati per il progetto sono disponibili in unico dataset su – data.world – Popolazione residente a Palermo – 2018 – UPL

Residenti stranieri a Palermo

Gli stranieri residenti a Palermo nel 2018  sono 25.735 e rappresentano 130 Nazionalità, oggi sono il 3,83% della popolazione totale (670.954). Chi sono questi stranieri? Da dove vengono? Quanti sono? Dove vivono? Qual’è il rapporto stranieri/italiani nel territorio? Tutti i dettagli delle statistiche più recenti nei grafici e nelle mappe.

Il Viz sottostante presenta le Nazionalità di tutti gli stranieri che vivono a Palermo. Il 46,75% proviene da Paesi asiatici, il 31,60% da Paesi africani, il 18,61 proviene da Paesi europei,  il 3,03% sono di provenienza americana,  e solo 0,02% provengono dall’Oceania.

I cittadini Bangladesi, Singalesi, Ghanesi e Romeni da soli costituiscono più della  metà (57,41%) di tutti gli stranieri residenti a Palermo.

Dalle mappe e dai grafici emerge che nel centro stroico (quartieri Palazzo Reale – Monte di Pietà e Tribunali) c’è la maggior presenza di residenti stranieri con 5.183 residenti pari al 20,14%  , seguono i quartieri di:

  • Politeama 3.710 residenti – 14,42%;
  • Libertà  1.444 residenti – 5,61%;
  • Zisa 2.531 residenti – 9.83%;
  • Noce  2.248 residenti – 8,74%;
  • Oreto Stazione 4.230 residenti – 16,44%

che da soli ospitano 19.346 residenti, pari al 75,17% del totale dei residenti.

La presenza straniera si è quasi triplicata negli anni duemila raggiungendo a Dicembre 2018 il livello di 25.735 cittadini (il 3,83% dei residenti, è l’8,5% a livello nazionale) con un rapporto di genere abbastanza equilibrato.

In basso il Viz realizzato con Tableau PubblicPalermo, popolazione residente per cittadinanza, UPL , Quartiere e Circoscrizione – 2018


Palermo, popolazione residente per cittadinanza, UPL , Quartiere e Circoscrizione – 2018


Anche i viz realizzati con Flourish permettono una lettura semplice e rapida dei dati, sia il grafico treemap che il sunburst mostrano quanti resisdenti stranieri vivono nelle 8 circoscrizione della città. Partendo dalla Circoscrizione, a colpo d’occhio vediamo qual’è il continente e la sub-regione con la maggior presenza di residenti stranieri.
I dati possono essere filtrati per ogni singola Nazionalità.

Viz realizzati con Flourish


Mappa One-person-one-dot

La mappa a densità di punti è un’istantanea su Palermo, fornisce una chiara una visualizzazione della distribuzione geografica, della densità di popolazione e delle diversa nazionalità
di residenti stranieri a Palermo in ogni UPL (unità di primo livello), quartiere e circoscrizione della Città. La mappa mostra 25.735 punti, uno per ogni persona che risiede a Palermo. Per semplificare la visualizzazione, ogni punto è codificato per colore dalla Sub-Regione di provenienza della persona.

Le posizioni dei punti non rappresentano gli indirizzi reali. L’identificatore geografico più dettagliato nei dati è il blocco (poligono) delle UPL, non sono diponibbili ad oggi i dati dei residenti stranieri per le zone censuarie dell’ISTAT.
I singoli punti sono posizionati casualmente  all’interno del blocco delle UPL per associare i totali di popolazione aggregata per quel blocco.
Di conseguenza, i punti in alcuni blocchi potrebbero trovarsi in mezzo a parchi, cimiteri, o altre aree chiaramente non residenziali all’interno di quel blocco UPL.
Una rappresentazione più accurata della distribuzione geografica dei residenti è possibile solo se i dati disponibili tengono conto di parchi, edifici e/o indirizzi fisici. Pertanto, la posizione dei singoli punti potrebbe essere condizionata da dati più dettagliati.

Come realizzare la mappa a densità di punti…?

Ecco un interessante post One-person-one-dot maps and how to make them che ci spiega in modo efficace cosa sono le mappe a densità di punti e come realizzarle con QGIS.

In sintesi, sono necessari due file: uno del territorio che si vuol mappare e i dati statitici che vogliamo rappresentare di quel territorio. Nel post precedente è spiegato in dettaglio il procedimento.


Mappa densità di punti elaborata con QGIS


Mappa densità di punti elaborata con QGIS e Leaflet

Mappa a densità di punti (One-person-one-dot) Palermo, popolazione residente per cittadinanza, UPL , Quartiere e Circoscrizione – 2018

Ciascuno dei 27.735 di punti è più piccolo di un pixel sullo schermo del computer nella maggior parte dei livelli di zoom. Pertanto, le “macchie di colore” che si vedono a livello comunale sono in realtà aggregazioni di molti punti individuali. Lo zoom è stato bloccato a 14 per facilitare la lettura d’insime.
Ogni punto sulla mappa è anche codificato per colore in base alla Sub-Regione di provenienza:

  • giallo, Asia del sud;
  • blu, Sud-est asiatico;
  • rosso, Nord Africani;
  • fuscia, Asia orientale;
  • verde, Africa sub-sahariana;
  • ceruleo, europeri appertaneti alla EU
  • arancio, europei fuori dall’UE
  • rosa, Sud America;
  • marrone, tutti gli altri.

Mappa densità di punti elaborata con Mapbox e Carto

Calcolati i punti utilizzando  la funzione ‘Random points in polygons’  di QGIS, come descritto nel post precedente, possiamo realizzare una mappa a densità di punti direttamente con mapbox o con cartodb, utilizzando un file .geojosn o un semplice file .csv con le coordinate dei punti (lat. long)  esportsati da QGIS, entrambe le piattaforme portano allo stesso risultato (tiles) utilizzando tecniche diverse. Stessa cosa si può realizzare con D3.js una libreria JavaScript per manipolare documenti basati su dati.

La mappa realizzata com mapbox è stata utilizzata come mappa di base per il Viz realizzato con Tableau Pubblic, disattivando tutti gli strati informativi della mappa di base è lasciando attivo solo il layer dei punti che rappresentano gli stranieri residenti a Palermo.


Fonte dati: Comune di PalermoDati sul territorio –  Stranieri residenti a Palermo al 31/12/2018 per Unità di primo livello e cittadinanza e Popolazione residente a Palermo al 31/12/2018 per Unità di primo livello e cittadinanza – distribuiti con Licenza CC BY 4.0 IT

Dataset rielaborato da @opendatasiciliadata.world – Popolazione residente a Palermo – 2018 – UPL


Riferimenti:

Brussels. A lovely Melting-Pot.
One Dot Per Person for the Entire United States
Miller
VisiData
QGIS
Leaflet
Mapbox
Cartodb
Datawrapper
Flourish
Tableau Public


Ringrazziamenti

Generare Open Data con un FOIA? Quasi, l’esempio della Fiera del Mediterraneo.

La “Fiera del Mediterraneo” è lo storico “quartiere fieristico” di Palermo.

Il “quartiere” occupa un’area di circa 83 mila m² ed il suo ingresso principale è in Piazzetta Nelson Mandela.

Dal 1946 al 2012 il quartiere fieristico è stato gestito dall’Ente Autonomo Fiera del Mediterraneo, ente che è stato liquidato nel 2019 dopo undici anni di inattività fieristica.

L’08 Agosto del 2012 il Comune di Palermo prende in gestione il quartiere fieristico.

Tre anni più tardi, dal 23 Maggio al 7 Giugno del 2015 ritorna la Fiera Campionaria del Mediterraneo, organizzata dall’impresa Medifiere, che dal 2015 ha poi organizzato la Fiera Campionaria con cadenza annuale.

L’11 Dicembre 2018 all’interno del quartiere fieristico è stato inaugurato lo Scalo 5B, un coworking ed officina che rappresenta il primo padiglione della fiera aperto in via continuativa tutto l’anno, con un suo calendario di eventi.

Nonostante l’attività all’interno della Fiera sia ripresa nel 2015, il quartiere non ha mai beneficiato di un sito internet dedicato, contenente informazioni logistiche e infrastrutturali del quartiere, e neanche un calendario di eventi.

Nel 2017 e nel 2018 vengono pubblicati sul sito del Comune di Palermo, in maniera del tutto sporadica, due Pdf contenenti le richieste di svolgimento degli eventi all’interno della Fiera.

I problemi sono due:

  • la pubblicazione è fatta in Pdf, un formato che non è “Machine Readable”.
  • la pubblicazione non ha una periodicità definita.

Per questo motivo, l’01 Marzo 2019 scrivo all’U.R.P. del Comune, chiedendo il rilascio di un dataset in open data contenente l’”ELENCO RICHIESTE SVOLGIMENTO EVENTI FIERA DEL MEDITERRANEO ANNO 2019” nel formato CSV, come da “Linee guida per le attività sugli open data della città di Palermo” – Deliberazione di Giunta Municipale n. 97 del 4.05.2017.

Lo stesso giorno l’U.R.P. gira la richiesta via mail all’ufficio competente, il settore servizi alle imprese, ma non ricevo risposta.

Qualche giorno dopo  ho l’idea di provare a richiedere i dati con lo strumento dell’accesso civico generalizzato , cosiddetto “FOIA”.

L’accesso civico generalizzato permette a chiunque di richiedere dati e documenti posseduti dalle pubbliche amministrazioni, con il limite degli interessi pubblici o privati indicati dalla legge, senza dover motivare le ragioni della richiesta.

Tra me e me penso che su un calendario di attività fieristiche non ci siano interessi privati da proteggere, visto anche il precedente della pubblicazione dei calendari in Pdf.

Cerco quindi “Accesso civico Comune Palermo” su un motore di ricerca ed arrivo a questa pagina contenente il Modulo di Richiesta  Accesso Civico Generalizzato e le sue istruzioni.

La buona notizia: il modulo previsto dal Comune prevede espressamente la voce “dati”.

Cancello quindi la parola “documenti” dal modulo ed inserisco come oggetto della richiesta un “un dataset nel formato comma separated values con elenco richieste svolgimento eventi Fiera del Mediterraneo anno 2019, contenente società / associazione richiedente, oggetto iniziativa, area richiesta, periodo richiesta.”

In pratica, sono gli stessi dati contenuti nei Pdf precedentemente pubblicati dal Comune, ma aggiornati al 2019 ed espressamente richiesti nel formato di file “Comma-separated values”.

Il modulo da compilare richiede veramente poco altro, tra cui i miei dati anagrafici e la copia del documento d’identità.

Notare la cosa più importante, come da normativa il modulo NON richiede di esplicitare la motivazione per cui si richiede un dataset.

Il 29 Marzo del 2019 spedisco l’accesso civico all’U.R.P. del Comune, dopo un giro di mail interne il 04 Aprile 2019 arriva al Vice Segretario Generale del Comune ed al settore servizi alle imprese del Comune.

Attendo i trenta giorni previsti dalla normativa per una risposta, ed il 21 Maggio 2019 decido di riscrivere all’U.R.P. chiedendo il numero di protocollo che era stato assegnato all’accesso civico.

Questa richiesta è propedeutica ad una eventuale richiesta di riesame dell’accesso civico, la cui modulistica non è presente sulla pagina del Comune ma su quella del dipartimento della Funzione Pubblica.

Il giorno dopo aver richiesto il numero di protocollo assegnato alla richiesta di accesso civico generalizzato dall’U.R.P., il 22 Maggio 2019 ottengo via mail dal settore servizi alle imprese del Comune il dataset in CSV che avevo richiesto.

Il 28 Maggio 2019 ho sollecitato il settore servizi alle imprese alla pubblicazione sul Portale Open Data del Comune del Dataset che mi è stato inviato, visto che al momento non risulta ancora reperibile sul Portale Open Data.

Conclusioni:

  • L’accesso civico generalizzato si è rivelato uno strumento giuridico idoneo a richiedere un dataset, potrebbe quindi essere utilizzato dalla comunità open data per richiedere esplicitamente dataset e non documenti.

A questo proposito, sarebbe necessaria l’introduzione di un automatismo per la pubblicazione sui portali open data dei dataset richiesti con accesso civico.

  • Dalla prima richiesta originale all’U.R.P. del calendario di eventi alla ricezione effettiva del dataset sono trascorsi più di due mesi.

Il dataset contiene un elenco di 43 eventi organizzati presso la Fiera del Mediterraneo.

———————————————————————————————–

AGGIORNAMENTO DEL 28/06/2019.

  • Il 03/06/2019 ho scritto al Sindaco di Palermo, chiedendo se avebbe potuto sollecitare la pubblicazione del dataset sul portale open data.
    Ho motivando la richiesta con la necessità di catalogazione del dataset ottenuto tramite l’accesso civico, in modo da non dover ripetere in futuro la richiesta di accesso civico per ottenere i dati aggiornati e di rendere il dataset disponibile a tutti i cittadini di Palermo.
  • Il 28/06/2019 il dataset è stato pubblicato sul Portale Open Data del Comune di Palermo.

    E adesso divertiamoci!

Per scaricare il dataset, basta aprire un terminale e digitare:

cd Desktop” (o comando equivalente col nome della vostra cartella) per spostarsi sulla cartella della scrivania.
curl “https://opendata.comune.palermo.it/ws.php?id=1896&fmt=csv” >eventifiera.csv” per scaricare il file nel formato csv sulla scrivania.

adesso basta digitare “vd –csv-delimiter=”;” eventifiera.csv” per visualizzare gli eventi della Fiera del Mediterraneo con Visidata.

Grazie ad Andrea e Ciro per il supporto nel civic hacking e vi raccomando di leggere il post:

VisiData: il coltellino svizzero per i dati, che probabilmente non conosci“.

Milano e Palermo: le mappe della distribuzione della popolazione straniera residente nel 2018

1-2 giugno si svolgerà a Milano il raduno di Spaghetti Open Data del 2019 (in breve SOD19) presso la Fabbrica del Vapore, il programma e le proposte per l’hackathon del raduno si discutono nella Mailing-list di Spaghetti Open Data, tra tutte le proposte la mia attenzione è stata attirata dal post di Alberto Cottica, ovvero provare a fare una versione milanese della visualizzazione di Bruxelles Melting Pot.
In breve, è una mappa one person one dot dove ogni pixel rappresenta un abitante non nato in Italia. Il colore del pixel rappresenta la nazionalità: europea, nord-africana, asiatica etc. La mappa serve a capire se c’è segregazione spaziale. A Bruxelles c’è, con gli europei che abitano più a sud e est, i nord africani a nord e ovest, i turchi a nordest etc. (cit)L’idea mi affascina e visto che non potrò andare al raduno, penso… Se sul portale open data del Comune di Palermo ci sono i dati statistici sulla popolazione residente al 2018, perché non farne anche una versione palermitana…e dare il mio piccolo contributo al raduno ?

Per realizzare una buona mappa occorre un dataset come quello pubblicato dal Comune di Milano, con i dati anagrafici della popolazione residente distinta per anno, età, sesso, cittadinanza e quartiere, cosa che non sono riuscito a trovare per Palermo.
Sulla popolazione residente straniera ho trovato solo una pubblicazione in pdf  GLI STRANIERI A PALERMO NEL 2018 sul sito tematico Pubblicazioni Statistiche.

Sfogliando la pubblicazione pdf, a pagina 21 noto una tabella, Tavola 6: Cittadini al 31/12/2018 per cittadinanza a circoscrizione; non era esattamente quello che cercavo, ma pazienza, con un po di lavoro in più si possono tirar fuori i dati anche pdf 🙂

Come replicare la mappa di Bruxelles Melting Pot

Studiando gli esempi  suggeriti da Alberto Cottica, (Mailing-list di Spaghetti Open Data)  Bruxelles Melting Pot e One-person-one-dot maps and how to make them replicare la mappa non è impossibile.

Gli ingredienti di base sono:

  • Dataset ben strutturato di dati statistici;
  • Dataset dei poligoni del territorio da analizzare;
  • Semplici conoscenze del software QGIS o altri software GIS

Visto che il Comune di Milano rende disponibile in opendata entrambi i dataset, ho preferito iniziare  da Milano l’analisi della popolazione residente; capito il metodo, lo si può replicare in tanti altri casi.

Grazie a Tommaso Dardi per aver indicato dove trovare i dataset di Milano  – Popolazione: residenti per cittadinanza e quartiereTerritorio: localizzazione dei quartieri della città (Nuclei d’Identità Locale – NIL)

Il dataset sulla popolazione residente di Milano è un ricchissimo file con le serie storiche dal 1999 a 2018: contiene 2.136.906 di righe, indigeste ai normali fogli di calcolo, proprio per questo motivo sul portale è consigliato l’uso di pacchetti statistici o software per la gestione di database (DataBase Management System), in quanto i file possono superare il numero massimo di record supportato dai normali fogli elettronici.Per il mio test ero interessato soltanto ai dati relativi all’anno 2018. Per estrarli ho usato QGIS, ma si può fare in altri modi, come importando il file in data.world ed eseguendo una query per anno, oppure utilizzando VisiData come il maestro @aborruso.Con una semplicissima selezione “Anno” = ‘2018’ otteniamo i dati di nostro interesse.Non ci resta che salvare la selezione, adesso con 131.162 elementi è più semplice lavorare.

Esempio di estrazione dei dati dell’anno 2018  con data.world e queryCon data.world è sufficiente importare il file .csv scaricato dal portale opendata del Comune di Milano Popolazione: residenti per cittadinanza e quartiere e scrivere una nuova query:

select * from ds27_pop_sto_quartiere where ds27_pop_sto_quartiere.anno like "2018"

cliccare su Run query e  dopo qualche secondo di attesa otteniamo i dati relativi all’anno 2018.

Estratti i dati del 2018 possiamo iniziare a giocare 🙂

Come strutturare i dati

Il nostro obbiettivo è quello mappare i residenti di ogni quartiere, aggregati per Paese, Continente o Sub-Regione di provenienza. Come prima cosa dobbiamo conoscere il numero totale dei residenti aggregati per Paese, Continente e Sub-Regione di provenienza.

L’aggregazione, può essere fatta velocemente con le Tabelle-Pivot (grazie Andrea Borruso), per comodità ho usato Google sheets,  la stessa procedura può essere fatta con Libreoffice ed Excel e con QGIS usando il plugin Group Stats (grazie a Salvatore Fiandaca per le info QGIS).

Ad un primo confronto con i dati di Bruxelles mi rendo conto che nei dati di Milano mancano le informazioni sul Continente e la Sub-Regione di provenienza, per cui è necessario aggiungere due colonne ed aggiungere le relative  informazioni.Con l’aiuto di wikipedia.org ho trovato le Sub-Regioni:

Dal sito Eurostat Statistics Explained:

Aggiunte le nuove info, possiamo costruire tutte le tabelle-pivot necessarie per la nostra analisi.La tabella in alto rappresenta l’aggregazione della popolazione residente per quartiere e sub-regione di provenienza, visto che vogliamo fare anche un confronto residenti stranieri e italiani, quest’ultimi non sono stati inseriti nella sub-regione, (EU-15).

Il campo dell’anno si poteva omettere visto che sono tutti dati dello stesso anno, il campo IdNil, ci tornerà utile nelle operazioni da fare con QGIS

Mappa One-person-one-dot

Come realizzare la mappa a densità di punti una persona un punto…?  Ecco un interessante post One-person-one-dot maps and how to make them che ci spiega cosa sono le mappe a densità di punti e come realizzarla QGIS.

In sintesi, sono necessari due file: uno del territorio che si vuol mappare e i dati statitici che vogliamo rappresentare di quel territorio.

Carichiamo i file in QGIS, per comodità mi sono creato un Geopackage, dove ho caricato i file necessari al test. Eseguiamo una Join tra i poligoni (nilzome) e le tabelle che abbiamo estratto in precedenza, usando come campo unione ID_NIL, selezioniamo solo le colonne utili e lasciamo vuoto il campo del prefisso da utilizzare per le nuove colonne.Ecco la nuova tabella, con il totale dei residenti vari quartieri, aggregati per sub-regioni.

Adesso non ci rimane che creare un nuovo layer di punti casuali, utilizzando i poligoni dei quartieri, uno per ogni subregione.Aprire il pannello Strumenti Processing, dal menù ‘Processing’ –> ‘Strumenti’,  scrivere nel cerca il nome del comando da eseguire, ‘Punti casuali dentro poligoni’, in inglese ‘Random points in polygons’ e:

  1. Selezionare il vettore d’ingresso, potrebbero esserci più layer di poligoni;
  2. selezionare il campo/espressione che si desidera mappare
  3. Dare un nome al file e specificare il percorso di salvataggio, se lasciato vuoto verrà creato un file temporaneo;

cliccare su esegui, nel giro di pochi secondi il nuovo layer sarà generato.Se dobbiamo ottenere ‘N’ layer, uno per ogni sub-regione possiamo eseguire un processo in serie.Prima di selezionare la colonna dati da mappare, clicchiamo su ‘Esegui come processo in serie‘ e configuriamo i parametri nella nuova finestra.Questa volta il processo sarà più lungo e dobbiamo attendere qualche minuto. Andrea Borruso e Salvatore Fiandaca sono a lavoro per uno script #arigadicomando, che velocizzi e automatizzi tutto il processo. La mappa inizia a prendere vita, diminuendo la dimensione dei punti la mappa sarà più leggibile.Per fare un confronto con mappa di Bruxelles Melting Pot non ci resta che adottare gli stessi colori.

Ecco le mappe a densità di punti della popolazione residente di Milano 🙂

Qui il dataset costruito con tutte le tabelle-pivot ricavate dal google-sheets e rielaborato con Andrea Borruso e Salvatore Fiandaca, usato per il test, della popolazione residente a Milano nel 2018; il dataset contiene i dati anagrafici della popolazione residente distinta per età, sesso, cittadinanza e quartiere e il geojson dei quartieri di Milano (Nil – Nuclei d’Identità Locale), per poter replicare il test e miglioralo, e per  realizzare altri elaborati. Licenza CC0

Grafico realizzato con Tableau Public che mette a confronto la popolazione residente, italiani e stranieri nei quartieri, aggregati per genere.


Il caso Palermo

Capito il metodo, torno a lavorare sulla mappa di Palermo, sicuro di dover faticare un pò di più 🙂

Come già detto i dati di base non sono ideali, li devo ricavare da una tabella in un file pdf, GLI STRANIERI A PALERMO NEL 2018, pagina 21, Tavola 6: Cittadini al 31/12/2018 per cittadinanza a circoscrizione.

A questo punto la domanda mi sorge spontanea… chiudo tutto e vado a fare una passeggiata a Mondello o mi armo di pazienza e vado avanti…?

Dopo qualche minuto di perplessità ha prevalso  l’amore per Palermo…si va avanti 🙂

La prima cosa da fare e convertire la taballa pdf human learning in una tabella machine learning, fortunatamente è un file pdf a è posso copiare direttamente la tabella nello sheet. Prossimo passo organizzare un dataset simile a quello di Milano e Bruxelles per poter replicare l’esperienza.Contestualmente alla riorganizzazione dei dati, aggiungiamo le colonne, Continents e Subregions, perché a me interessa l’aggregazione per Sub-Regione. Con i dati in possesso non è stato possibile suddividere i cittadini Europei in EU-N13, EU-15, EU28 e Europeans out of EU. Sempre con Tabella-Pivot ho estratto i dati della popolazione residente a Palermo nel 2018, aggregata per Circoscrizione e Sub-Regione di provenienza.

Per replicare la mappa è necessario il file con i poligoni del territorio, in questo caso i le aree delle circoscrizioni sono state estratte dal dataset ISTAT Basi territoriali e variabili censuarie – Censimento 2011.


Mappa One-person-one-dot – Palermo

La procedura per ottenere i layer puntuali con QGIS è la stessa vista in precedenza, è cambiata la finalità, oltre alle immagini statiche, desidero ottenere una webmap, utilizzando QGIS e LeafletDopo aver ottenuto i singoli file di punti per ogni Sub-Regione ho usato la funzione ‘MergeFondi vettori, per ottenere un solo file di punti, più semplice da tematizzare.Caricato e tematizzato il nuovo layer, tutto è pronto per realizzare la webmap. Con il plugin QTiles vengono create le piastrelle ‘Tiles‘  del layer di punti, con il plugin qgis2web, viene creato tutto il pacchetto base delle webmab, usando il layer delle Circoscrizioni. Con Dreamweaver o con qualsiasi altro software che lavori con file html, si assemblano tutte le parti.

palermohub.opendatasicilia.it/stranieri_residenti_suregions

Per il grafico all’interno del tooltip è stata usata la webapp datawrapper (grazie Andrea Borruso)Sempre nella mappa non manca un Viz realizzato con Tableau Public e con i pochi dati disponibili.

Qui il dataset costruito con tutte le tabelle-pivot ricavate dal google-sheets e rielaborato con Andrea Borruso e Salvatore Fiandaca, usato per il test, della popolazione residente a Palermo nel 2018, disponibile su data.world.

L’insufficienza dei dati disponibili, per quartieri o zone censuarie, rende la mappa a densità di punti per popolazione la straniera residente a Palermo, è un mero esercizio di stile, non paragonabile alle mappe di Milano e Brussels. Se in futuro ci saranno dati più dettagliati si potrebbe rieseguire l’analisi.


Riferimenti:

Brussels. A lovely Melting-Pot.
One-person-one-dot maps and how to make them
QGIS
Datawrapper
Tableau Public


Ringraziamenti:

Palermo: un meraviglioso viaggio nel tempo grazie alla Biblioteca Comunale di Palermo

La Biblioteca Comunale di Palermo dal 26 ottobre del 2017 ha iniziato a pubblicare su Flickr alcune foto della Collezione fotografica di Enrico Di Benedetto, scattate a Palermo tra il XIX ed il XX secolo, tutte pubblicate con una licenza aperta che ne consente il riuso.

Da quel giorno ne sono state pubblicate poco più di 800 e questa collezione oggi è un archivio a suo modo unico, dal grande valore simbolico e culturale.

A me lascia senza fiato vedere ad esempio la galleria dedicata alla “Cala”, l’attuale porto turistico della città, nonché il più antico porto di Palermo. E questa foto denominata “Imbarco-Emigranti“, di circa 100 anni fa, merita di essere guardata e riguardata.

Note sull’archivio

L’archivio è composto da queste 20 gallerie:

Ogni foto è associata a un “corredo informativo” costituito da: titolo, posizione geografica, gallerie di appartenenza, tag, licenza e metadati (non sono dati presenti in tutte le foto, ma nella grandissima parte).

La posizione geografica viene inserita sfruttando una delle caratteristiche native di Flickr che consente di associare una foto a una posizione su mappa. Una volta fatto, all’elemento viene associata una struttura dati di questo tipo, in cui oltre alla coppia di coordinate è presente un’informazione geografica gerarchica (Italia > Sicilia > Palermo).

Per i metadati lo staff della Biblioteca ha accettato una nostra proposta (vedi paragrafo successivo). Flickr infatti non consente di metadatare in modo strutturato una foto, associargli un identificativo, un autore, un editore, la pagina, ecc. e l’unica possibilità per inserire informazioni di questo tipo è quella di sfruttare lo spazio per le note testuali.
E questo è il modo scelto (immagine di sotto) per il meraviglioso archivio della British Library.

Abbiamo aggiunto un elemento: inserire il testo della nota in una modalità che fosse nativamente non soltanto da leggere a video, ma anche un testo strutturato machine readable, trasformabile in una banca dati da interrogare, analizzare e trasformare.
E allora le note sono in YAML, un formato che è sia human che machine readable.

Ad ogni foto sono quindi associate informazioni con questa struttura tipo:

È leggibile chiaramente da un essere umano e contemporaneamente si può trasformare in dati “leggibili da una macchina”, sfruttando una qualsiasi libreria/modulo in grado di interpretare un testo YAML. Con yq ad esempio trasformo la stringa di input di sopra con <input.yaml yq '.|add', per avere indietro un “classica” rappresentazione JSON:

Nella struttura YAML c’è un errore (a causa di un mio suggerimento errato) – non ci dovrebbero essere i “trattini” che fanno da punto elenco – che per fortuna però non ha conseguenze sulla lettura dei dati.
Flickr inoltre fa un encoding dei caratteri inseriti nel campo note (gli “a capo” diventano \n, le virgolette &quot;, ecc.), ma basta saperlo e prendere le “contromisure” via script, per riportare il testo a una struttura YAML corretta.

Come nasce

Qui in OpenDataSicilia diverse persone hanno mostrato nel tempo interesse verso il riuso del patrimonio fotografico della Biblioteca Comunale di Palermo. Tra i primi Giulio Di Chiara e Ciro Spataro, che nel tempo hanno fatto diversi tentativi per porre in essere la cosa.

Quello riuscito, che ha portato a quanto descritto sopra, parte proprio da un’email di Ciro di settembre del 2017, che scrive a me e al Prof. Taibi queste parole:

[…] poniamo che l’Archivio Storico comunale e la Biblioteca comunale si convinca a creare un profilo FLICKR per postare migliaia di immagini frutto di scansioni di carte e manufatti storici e artistici su Palermo e la Sicilia custodite dentro le due strutture. Per valorizzare pubblicamente il patrimonio custodito, insomma open data. Così come fanno a Londra, a New York le Biblioteche pubbliche […]

Da lì parte uno scambio ricco tra Ciro, Davide, me e la Biblioteca, che ha portato in pochi giorni all’inizio della pubblicazione delle foto su Flickr.

Dati

Flickr consente l’accesso ai suoi dati tramite delle ricche API. Per usarle è necessario usare una API key, ottenuta la quale è possibile interrogarle con semplicità.

Un esempio è questo script bash – “bruttino”, perché molto ottimizzabile – che interroga le API per restituire:

Nota bene: da circa 10 foto non è stato possibile estrarre i metadati, perché ci sono dei piccoli errori nel testo sorgente.

Note conclusive

Quanto fatto dalla Biblioteca Comunale di Palermo è un esempio di valore: è facilmente replicabile, non costringe a rivoluzionare procedure interne, ha dei costi sostenibilirestituisce un bene comune digitale prezioso ed è pronto al riuso di persone e “macchine”.

Non è perfetto e si può fare (come sempre) di più e meglio, ma il progetto merita un plauso e un passaparola.

Nei prossimi giorni ci saranno delle sorprese 🎉🎉, degli esempi di riutilizzo di questi dati.

Casi di riuso

Dopo la pubblicazione di questo articolo i dati sono stati (evviva) riutilizzati. Ecco gli esempi:

Rendere pubblico il database delle infrastrutture del Comune di Palermo

Il recente crollo del ponte Morandi di Genova ha evidenziato l’importanza di conoscere lo stato di salute delle infrastrutture di un territorio e quello delle opere di manutenzione correlate. È importante per chi nella Pubblica Amministrazione –  a vario titolo – prende decisioni e fa scelte, così come per i cittadini che volessero poter conoscere queste informazioni, monitorarle e attivare eventuali azioni e scelte conseguenti.

Si tratta di dati che, per tutto il territorio nazionale, non sono però quasi mai disponibili pubblicamente.

Il Comune di Palermo il 24 agosto del 2018 ha dato notizia di svolgere da tempo un “Monitoraggio costante di tutti i 25 ponti che servono la viabilità cittadina” e che in particolare la “Prima attività che ha condotto l’ufficio infrastrutture (oggi infrastrutture e servizi a rete) dell’area tecnica della Riqualificazione Urbana ed infrastrutture (oggi rigenerazione urbana, opere pubbliche ed attuazione delle politiche di coesione) è stata la creazione di un catasto informatizzato, un vero data base delle infrastrutture e delle condizioni d’uso e di conservazione.
L’attività ha permesso il censimento di 25 fra infrastrutture di viabilità a ponte, viadotti o cavalcavia. Nell’ambito di tale procedimento sono state avviate verifiche speditive sullo stato delle infrastrutture viarie nel territorio comunale”.

Chiediamo all’“Area tecnica della riqualificazione urbana e della pianificazione urbanistica”, al Capo Area Nicola Di Bartolomeo e all’assessore alla “Rigenerazione Urbanistica e Urbana” Emilio Arcuri, di rendere pubblico il catasto informatizzato delle condizioni d’uso e di conservazione (citato nella relazione del 24 agosto).

Farlo sarebbe un atto (concreto e di valore) di trasparenza, apertura e efficienza nei confronti della cittadinanza e soprattutto farebbe da esempio e creerebbe emulazione (che su questi temi è proprio necessaria).
Questa richiesta viene pubblicata qui e inviata anche per email ai dott. Di Bartolomeo e Arcuri.

In attesa, alla luce dell’elenco dei ponti citati nella relazione, Gianni Vitrano (grazie) ha creato e pubblicato la mappa “Localizzazione dei ponti di Palermo” usando i dati di OpenStreetMap (utilizzando overpass-turbo.eu) e mettendoli ove possibile in relazione con i dati della suddetta relazione. Purtroppo al momento è poco più di un elenco e fornisce ben poche informazioni ma proviamo ad immaginarla completa di tutte le informazioni disponibili nel catasto informatizzato predisposto dal Comune, la mappa diventerebbe un valido strumento a disposizione della Pubblica Amministrazione e dei cittadini all’insegna della trasparenza ma anche creando opportunità di un utilizzo efficiente dei dati disponibili.

PalermoHub

bit.ly/PalermoHub

L’idea

Da qualche anno ho attivato un sito web amatoriale dove carico tutte le mie rielaborazioni opendata (prevalentemente sono mappe su Palermo), un repository GitHub ed un clone anche su SicilaHub, nonostante questo, spesso amici e colleghi mi contattano per avere i link delle mie mappe.
L’Atlante delle Carte Tecniche storiche di Palermo, la Variante Generale vigente di Palermo, la Cartografia e Ortofoto di base e Piano Stralcio di Bacino per l’Assetto Idrogeologico (P.A.I.) Regione Sicilia, sempre di Palermo, sono tra le mappe più richieste.
Da qui l’idea di PalermoHub, perché non mettere tutte le mappe in uno stesso contenitore, cosi da rendere più facile la loro fruizione?

Confrontandomi con @aborruso e @cirospat di opendatasicilia, la mia idea si è evoluta, perché limitarci alle mie mappe quando per esempio anche il buon Ciro ha una vastissima produzione di mappe su Umap?
A questo punto ci sembrato normale estendere l’idea a tutte quelle persone che pubblicano mappe opendata su Palermo.

Cosa è

PalermoHub di opendatasicilia.it è un contenitore di mappe realizzate/rielaborate da liberi cittadini o da civic hackers prevalentemente sul territorio comunale di Palermo, non ha alcun intento commerciale, l’unica finalità è mostrare le possibilità di rielaborazione e comunicazione offerte dagli open data o dati pubblici comunali, regionali, nazionali. Tutti possono contribuire alla crescita e alla divulgazione.

Il cuore di PalermoHub è il catalogo di ricerca Simile exhibit rielaborato in sitle Petrusino di opendatasicilia.it, un catalogo multitematico di siti web, applicazioni per dispositivi mobili, mappe online, servizi web e infografiche, con un’attenzione particolare alla Sicilia. Realizzato per permetterne una più facile individuazione ai più diversi tipi di utenza.
Viene spontaneo chiedersi…”ma se già c’è un catalogo come Petrusino, perchè duplicarlo…?”

In buona sostanza PalermoHub è un Petrusino specifico, oltre ad essere un catalogo monotematico su Palermo, è anche il contenitore delle mappe, un unico luogo fisico con funzionalità avanzate di ricerca e filtraggio per rendere facile ed intuitiva la ricerca delle mappe sul terriritorio Palermitano agli utenti.

Navigare tra le mappe di PalermoHub è semplicissimo, si può usare il menù posizionato sull’header di tutte le pagine, oppure utilizzando le funzionalità avanzate di ricerca disponibili direttamente nella homepage.

Tramite il pulsante “Categoria” del menù,  si accede alla lista delle mappe suddivise per categorie/tematismi. Basta selezionare e cliccare la categoria e il relativo tema per visualizzare la mappa.

 PalermoHub di opendatasicilia.it

Invece tramite le funzionalità avanzate di ricerca e filtraggio situate direttamente nella homepage si può affinare la ricerca usando i Tag, l’Autore, la data o la fonte dei dati.
Possono essere utilizzati simultaneamente più filtri per una ricerca avanzata.

PalermoHub di opendatasicilia.it

Anche il testo nella colonna “Titolo“o la clip nella colonna “Immagine” riportati in tabella nella home page, portano agevolmente alla mappa

PalermoHub di opendatasicilia.it


Contribuire

Far parte di PalermoHub è semplicissimo ed è gratis, basta inviare una richiesta di Pull Requests al repositoty Github includendo e documentando tutti i file necessari oppure inviando una richiesta alla mailing list OpenDataSicilia.it allegando i link o file della Vostra mappa, sarà nostra cura attivare le nuove pagine html per includere la nuova mappa.

Si può contribuire anche condividendo sui vari social il progetto PalermoHub e inserendo gli hastag: #PalermoHub @opendatasicilia

 PalermoHub di opendatasicilia.it - Pulsanti socialbit.ly/PalermoHub

(ATTENZIONE! se hai attivo un ad blocker, i tasti di condivisione non verranno visualizzati)

bit.ly/PalermoHub

Attualmente sono disponibili più di 80 risorse con diversi tematismi, oltre alle mappe realizzate dai menbri di opendatasicilia.it è presente la mappa dei monumenti abbandonati e dimenticati di Palermo, a cura di Giuseppe Mazzola per l’associazione Palermo Indignata, la mappa monumentale di Palermo e dell’Agro Palermitano, a cura di Marcello Petrucci e le meravigliose mappe di Guenter Richter realizzate con iXMaps

PalermoHub è fruibile sia da desktop che da mobile, si adatta facilmete a quasi tutti dispositivi mobile di ultima generazione, anche se il modello di riferimento nel segmento mobile è stato il vecchio Samsung Galaxy S3, con una rioluzione di 360 x 640.
Per una lettura ottimale delle mappe in mobile si consiglia l’uso di tablet di dimesioni minime 7 pollici ed una risoluzione di 960 x 600 px

Tutto il materiale rielaborato per Palermo Hub di OpenDataSicilia.it è distribuito con licenza Creative Commons Attribuzione – Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0) tranne diversa indicazione.
Licenza Creative Commons

Comune di Palermo: arrivano i dati in real time per alcuni degli autobus pubblici di AMAT

AMAT, la municipalizzata del Comune di Palermo, collabora da tempo con Moovit per i dati i real time di alcuni degli autobus della rete della città, visibili nella app dell’azienda.

Da oggi, tramite API e per 20 linee, sarà possibile in tempo reale accedere ai dati relativi agli arrivi di una linea del Trasporto Pubblico Locale ad una fermata.

Le linee sono: 100, 101, 102, 106, 108, 109, 124, 226, 246, 304, 307, 309, 327, 422, 619, 603, 704, 731, Navette Arancione centro storico ed Express.

Sarà possibile rispondere in modo programmatico a una domanda di questo tipo: “Mostrami i prossimi arrivi della linea 101 alla fermata Cavour“.

Sarà necessario di base fornire la API KEY del servizio, una coppia di coordinate dell’area del comune (per individuare il comune di Palermo), il numero della linea da monitorare e la fermata per cui si vuole il tempo di attesa (qui la documentazione ufficiale).

Ecco un esempio di query con cURL:

Che darà come risultato qualcosa con questa struttura:

La notizia è appena arrivata (la trovate in basso, nella descrizione di questo dataset) e non abbiamo fatto ancora nessun test serio, ma è un’ottima notizia. Perché avere in modo programmatico i tempi di attesa a una fermata per una linea, può generare servizi di gran comodità per i cittadini e per tutto l’indotto legato ai trasporti.
Almeno per quella parte di città coperta dalle linee per cui il servizio è attivo (chiederemo ad AMAT quali saranno le evoluzioni del servizio).

Creare un’app per smartphone per fotografare dei QR code da mettere in ogni fermata, che fatta la foto restituisca quando passeranno le linee servite, o un’app per Google assistant a cui chiedere “Ok google, quando passa da qui il 101?”, o un bot per Telegram o Facebook Messenger, è a questo punto cosa abbastanza semplice.

Una nota a caldo: chiediamo ad AMAT e al comune di pubblicare via API anche l’elenco delle linee per cui è abilitato questo servizio. Nel tempo cambieranno e sarà essenziale per gli sviluppatori avere un modo per essere avvisati automaticamente di queste variazioni.

A partire dal giugno del 2019 ci sarà il progetto City Compass (grazie Marco Lombardo per la segnalazione) – Piattaforma di gestione e tracciamento in tempo reale flotta autobus e Sistema integrato a servizio del cittadino per la previsione di arrivo dei mezzi di trasporto pubblico –  ma questa è un’altra storia.

Palermo Capitale italiana della Cultura 2018: rendere accessibili e riutilizzabili i dati sugli eventi

Sindaco di Palermo Leoluca Orlando
Assessore alle “Attività e Beni Culturali” del Comune di Palermo, Andrea Cusimano
Capo Area Cultura del Comune di Palermo, Sergio Forcieri
Assessora all’Innovazione del Comune di Palermo, Iolanda Riolo
Responsabile open data comunale Gabriele Marchese
Comunicazione Palermo capitale italiana della cultura 2018
Per conoscenza alla Presidenza del Consiglio Comunale

Egregi Signore e Signori,

Palermo è la Capitale italiana della Cultura 2018 e il 29 gennaio è stato il giorno della partenza, con l’evento del Teatro Massimo e il lancio del sito web ufficiale http://www.palermocapitalecultura.it/.

Si può fare cultura con la tecnologia e per questo vi chiediamo – persone, associazioni, aziende, ricercatori, liberi professionisti – di farlo proprio a partire dal sito web ufficiale.

Vi chiediamo di pubblicare in modalità “leggibili da una macchina” (machine readable) i dati sulle centinaia di eventi di “Palermo, Capitale italiana della Cultura 2018”.

In questo modo i principali motori di ricerca, le aziende di sviluppo software, chi usa i dati per promuovere il territorio e vendere servizi correlati (albergatori, aziende di noleggio auto, società di turismo, compagnie aeree, ecc.), potrà riutilizzare queste informazioni, e metterle a servizio di tutti in tutti gli spazi più comuni: in primis i principali motori di ricerca, i principali siti con mappe e ricerca di luoghi, i principali siti di prenotazione alberghi, B&B, affitto case, ecc., i principali siti che raccolgono e categorizzano eventi.

Se questi dati saranno pubblicati in modalità “machine readable”, tutto questo avverrà in modo automatico e probabilmente anche sorprendente e “Palermo, Capitale italiana della Cultura 2018” entrerà in modo spontaneo nelle tasche – negli smartphonedi tutti noi.

Il sito ufficiale è predisposto, perché espone già i dati sugli eventi tramite API (application programming interface), ovvero delle interfacce e delle procedure che rendono semplice e diretta la lettura dei dati su questi eventi da parte di un personal computer.

Un PC può infatti chiedere al sito dell’evento “mi dai per favore tutti i dettagli sugli eventi del 15 febbraio” in questo modo: http://www.palermocapitalecultura.it/api/eventi?data=2018-02-15

Vi chiediamo quindi di:

  • Aprire una nuova pagina dedicata all’accesso ai dati nel sito ufficiale;
  • documentare in questa le varie modalità di accesso in lettura, via API;
  • integrare, se possibile, ai dati già esposti anche le informazioni sui luoghi in cui si svolgono gli eventi (esporre quindi ad esempio le coordinate geografiche), dati che sembrano già essere disponibili sul sito;
  • associare ai dati esposti in queste modalità una licenza aperta che ne consenta il riuso e l’adattamento anche a scopo commerciale, con il solo obbligo di attribuzione della fonte (come ad esempio la CC BY 4.0).

Un’annotazione: le informazioni su un singolo evento sono fornite (sia sul sito, che via API) soltanto in italiano (in questo evento ad esempio la descrizione è in italiano e la tipologia è “cinema e spettacolo”). Sarebbe bene che fossero esposte anche (almeno) in lingua inglese.

Tutto questo potrà essere sfruttato anche dalle tante attività “locali” che erogano servizi territoriali basati su dati e informazione, e l’impatto di questa manifestazione sarà più forte e più orizzontale in termini culturali, di business, di tecnologia e di ricerca.

Il Comune di Palermo ha da anni investito “culturalmente” sui processi volti alla valorizzazione dei dati e in particolar modo dei dati aperti. Accettare la nostra richiesta confermerebbe l’impegno del Comune in questo ambito.

Certi di una vostra sensibilità, porgiamo cordiali saluti.

Firmatari

Associazione onData
Daniele Mondello, SunzeLab
Marcello Vetro, Olomedia
Marco Lombardo
Andrea Borruso
Davide Taibi, ricercatore CNR
Mario Grimaldi
Giovanni Pirrotta
Joska Arena
Nino Galante
Community OpenDataSicilia
Francesco Landini, Associazione Stand Up Sicilia
Lorenzo Perone
Giuseppe Pizzimenti
Fabio Maria Montagnino, Consorzio ARCA
Roberto Ragonese, PMO Coworking
Giuseppe La Mensa
Stefano La Barbera
Francesco Cimò, TalentPLAYERS
Eliana Messineo
FabLab Palermo APS
Giuseppe Ragusa
Giovan Battista Vitrano
Domenico Schillaci, PUSH
Maurizio Napolitano, OKFN Italy
Marco Alfano, Comitato Bene Collettivo
Francesca De Chiara, Fondazione Bruno Kessler
Leva Digitale APS
OpenPatti
Parliament Watch Italia
Jesse Marsh, Atelier Studio Associato
Ciro Spataro
Francesco Bianco, Arancia ICT
Isabel Matranga
Antonino Lo Bue, Sky UK
Francesco Passantino


Foto di © Marie-Lan Nguyen / Wikimedia Commons.

Leggere, interrogare e trasformare file XML da riga di comando

Intro

Il comune di Palermo ha pubblicato i dati pubblici e aperti sulle elezioni comunali dell’11 giugno 2017 in formato XML, con uno schema descritto in questo file.

Qui sotto ad esempio la struttura di uno degli oltre 200 file pubblicati.

L’XML è uno dei formati classici di pubblicazione di dati aperti, ma non è un formato per tutti. Molti utenti infatti non sono in grado di esaminarli.
Per la sua natura è facilmente leggibile da un calcolatore e ci sono varie modalità per farlo.

E con un’utility specializzata (XMLStarlet) e con un piccolo comando come questo di sotto, è possibile trasformare questo file XML in una “piatta” tabella con tutti i dati sui voti dei candidati di una lista al consiglio comunale, per ogni sezione elettorale (40 candidati per 600 sezioni, quindi 24000 record).

xmlstarlet sel –net -t -m //SV/V0/V1 -v @NUMERO -o , \
-v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , \
-v ../../@NUMERO -n \
http://comunali2017.comune.palermo.it/SEZ_3_82053_L12.xml

 

Qui sotto lo vedete in azione:

I dati sui risultati delle liste elettorali hanno questa struttura:

<SV NUMERO=1 NOME=SEZIONE 1 NOMEBREVE=SEZ. 1 UBICAZIONE= NUM_ZONA= NUM_ZONA2= TOTVOT=540 TOTVOTM=255 TOTVOTF=285 FLZEROVOT=N ELETTORI=1112 ELETTORIM=556 ELETTORIF=556 CONFERMATO=S VOTIVALIDI_C0=54 VOTIVALIDI_C1=37 VCAS_C1=0″ VCNAS_C1=”0″ VOTI_SOLO_C1=”0″ VOTIVALIDI_C2=”0″ VCAS_C2=”0″ VCNAS_C2=”0″ VCNAS_TOT=”0″ VOTI_SOLO_C2=”0″ VOTI_NULLI_SOLO_C2=”0″ VOTI_NULLI=”0″ NULLE=”21″ BIANCHE=”8″ CONFCONS=”S” MAXVOTVAL=”9″>
        <V0 NUMERO=12 VOTIVALIDI_C0=54 TOT_VOTIVALIDI_C1=37 TOT_VOTISOLO_C1=0>
            <V1 NUMERO=1 VOTIVALIDI_C1=5 VOTISOLO_C1=0 VOTCONASS_C1=0 VOTCONNONASS_C1=0 CIFRAIND=59 TOT_VOTIVALIDI_C2=0 TOT_VOTISOLO_C2=0/>
            <V1 NUMERO=2 …/>
            <V1 NUMERO=3 …/>        
        </V0>
</SV>

 

SV è la sezione elettorale con il suo numero identificativo (e altri attributi), che contiene al suo interno i dati su V0 che rappresenta la lista (in questo caso la 12, quella del “Movimento 5 stelle”), che contiene al suo interno V1, ovvero i dati sui candidati al consiglio comunale. Con questa struttura gerarchica SV>V0>V1.

Il comando di sopra nel dettaglio:

  • sel --net -t -m, abilito la selezione (sel) su un file remoto (--net), impostando un template (-t) per “mappare” gli elementi che corrispondono (“matchano” -m) alla seguente query XPATH;
  • "//SV/V0/V1", i candidati al consiglio;
  • "@NUMERO", l’attributo con il numero identificativo del candidato;
  • -o ",", per inserire un separatore di testo;
  • -v "@VOTIVALIDI_C1", l’attributo con i voti validi del candidato;
  • -o ",", per inserire un separatore di testo;
  • -v "../@NUMERO", mi muovo verso l’alto nella gerarchia dell’XML di un gradino con .., quindi vado in V0 (la lista) e recupero l’identificativo numerico della lista;
  • -o ",", per inserire un separatore di testo;
  • -v "../../@NUMERO", mi muovo verso l’alto nella gerarchia dell’XML di due gradini con ../.., quindi vado in SV (il seggio) e recupero l’identificativo numerico del seggio;
  • -n, per inserire un’andata a capo per ogni risultato ottenuto;
  • http://…/SEZ_3_82053_L12.xml è l’URL del file XML.

In output nella shell avrò:

1,5,12,1
2,9,12,1
3,2,12,1
…,…,…,…

Ovvero

numeroCandidato voti numeroLista sezione
1 5 12 1
2 9 12 1
3 2 12 1

Creare dei file CSV con i dati per tutte le liste

Ho pensato che possa essere molto interessante fare un esempio più ricco e completo e creare uno script bash per:

  • scaricare tutti i file XML delle 18 liste;
  • estrarre da ognuno l’anagrafica dei candidati consiglieri;
  • estrarre da ognuno il numero di voti, per ogni sezione, di ogni candidato al consiglio;
  • fare il join – unire – le info sul numero di voti, con l’anagrafica dei candidati consiglieri, e creare un file CSV per ogni lista;
  • unire tutti i file CSV e produrre anche un unico file con il numero di voti di ogni candidato, per ogni lista, per ogni sezione.

Requisiti

Il prodotto finale è uno script BASH, quindi bisogna avere a disposizione un sistema compatibile con questo linguaggio (lo sono essenzialmente tutti).

Richiede tre utility:

  • l’immancabile cURL, per scaricare i file;
  • XMLStarlet per interrogare i file XML e trasformarli in file CSV;
  • csvkit per fare il join e il merge dei CSV scaricati.

Richiede una conoscenza di base (e/o la volontà/possibità di farserla) su:

  • XPATH, per estrarre i dati (per interrogare) i file XML;
  • la linea di comando, perché è un po’ il campo di gioco di queste modalità di accesso e modifica di file;
  • BASH, che è il linguaggio dello script finale;
  • aprire i file XML del comune con un buon editor di testo, guardarli un po’ e comprenderne la struttura.

Lo script

Lo script per intero è più in basso. A seguire un esploso delle varie parti che lo compongono.

La prima cosa che viene eseguita nello script è il download dei file delle liste. Queste sono 18 ed è comodo scaricarle con un ciclo for ... loop che lo fa 18 volte per noi.

for i in {1..18};
  do curl -s http://comunali2017.comune.palermo.it/SEZ_3_82053_L$i.xml > $i.xml;
done

 

Poi da ognuno dei 18 file XML vengono estratti i dati anagrafici e i dati per sezione, sempre con un ciclo for.
A ogni file viene aggiunta anche un’intestazione di colonne.

# scarico l’anagrafica di ogni candidato di ogni lista
for i in {1..18}; do xmlstarlet sel -t -m //C0/C1 -v @NUMERO -o , -v @NOME -o , -v ../@NUMERO -o , -v ../@NOME -n $i.xml > anagraficaLista_$i.txt; sed -i 1s/^/numeroCandidato,nomeCandidato,numeroLista,nomeLista\n/ anagraficaLista_$i.txt & done
 
# scarico i voti di ogni candidato di ogni lista per ogni sezione
for i in {1..18}; do xmlstarlet sel -t -m //SV/V0/V1 -v @NUMERO -o , -v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , -v ../../@NUMERO -n $i.xml > listaSezioni_$i.txt ; sed  -i 1s/^/numeroCandidato,voti,numeroLista,sezione\n/ listaSezioni_$i.txt & done

 

I file di anagrafica hanno questa struttura:

numeroCandidato nomeCandidato numeroLista nomeLista
1 GELARDA IGOR DETTO GERARDA DETTO GERALDA 12 MOVIMENTO 5 STELLE
2 ARGIROFFI GIULIA 12 MOVIMENTO 5 STELLE
3 CAPARROTTA GIANCARLO DETTO CAPAROTTA 12 MOVIMENTO 5 STELLE

Mentre quelli con i dati per sezione:

numeroCandidato voti numeroLista sezione
1 5 12 1
2 9 12 1
3 2 12 1

Poi viene fatto il join tra anagrafica e dati per sezione:

for i in {1..18}; do csvsql –query select * from  listaSezioni_$i LEFT JOIN anagraficaLista_$i ON listaSezioni_$i.numeroCandidato=anagraficaLista_$i.numeroCandidato listaSezioni_$i.txt anagraficaLista_$i.txt > lista_$i.csv; done

Per ogni lista viene prodotto un file con nome lista_NumeroLista.csv, con questa struttura (ci sono delle colonne duplicate, che potrei rimuovere in fase di join):

numeroCandidato voti numeroLista sezione numeroCandidato nomeCandidato numeroLista nomeLista
1 5 12 1 1 GELARDA IGOR DETTO GERARDA DETTO GERALDA 12 MOVIMENTO 5 STELLE
2 9 12 1 2 ARGIROFFI GIULIA 12 MOVIMENTO 5 STELLE
3 2 12 1 3 CAPARROTTA GIANCARLO DETTO CAPAROTTA 12 MOVIMENTO 5 STELLE

E infine viene creato anche un unico file CSV di insieme (scaricabile da qui), con i dati per tutti i consiglieri di tutte le liste, per ogni sezione (senza le colonne duplicate). Sono 638 candidati per 600 sezioni per un totale di 382800 record.

csvstack *.csv | csvcut -c 1,2,3,4,6,8 > liste.csv

Quindi avrò in output 1 file CSV con i dati per ogni lista e quello soprastante, per totale di 19 file CSV (encoding UTF-8 e come separatore la ,).

Lo script di poche righe (al netto dei commenti) è quello di sotto, tutto realizzato con oggetti free e open-source.

#!/bin/bash
 
# Requisiti #
# – avere un sistema in cui è possibile eseguire uno script bash;
# – l’utility XMLStarlet http://xmlstar.sourceforge.net/download.php
# – l’utility csvkit http://csvkit.readthedocs.io/
 
# attivo la modalità di debug
set -x
 
# cancello file csv e xml pre esistenti nella cartella in cui lancio lo script
rm -R *.csv
 
# scarico tutti i dati delle 18 liste
for i in {1..18}; do curl -s http://comunali2017.comune.palermo.it/SEZ_3_82053_L$i.xml > $i.xml;done
 
# scarico l’anagrafica di ogni candidato di ogni lista
for i in {1..18}; do xmlstarlet sel -t -m //C0/C1 -v @NUMERO -o , -v @NOME -o , -v ../@NUMERO -o , -v ../@NOME -n $i.xml > anagraficaLista_$i.txt; sed -i 1s/^/numeroCandidato,nomeCandidato,numeroLista,nomeLista\n/ anagraficaLista_$i.txt & done
 
# scarico i voti di ogni candidato di ogni lista per ogni sezione
for i in {1..18}; do xmlstarlet sel -t -m //SV/V0/V1 -v @NUMERO -o , -v @VOTIVALIDI_C1 -o ,  -v ../@NUMERO -o , -v ../../@NUMERO -n $i.xml > listaSezioni_$i.txt ; sed  -i 1s/^/numeroCandidato,voti,numeroLista,sezione\n/ listaSezioni_$i.txt & done
 
# faccio il join tra i dati per sezione e l’anagrafica dei candidati
# l’output è un file di dettaglio in formato CSV per ogni lista
for i in {1..18}; do csvsql –query select * from  listaSezioni_$i LEFT JOIN anagraficaLista_$i ON listaSezioni_$i.numeroCandidato=anagraficaLista_$i.numeroCandidato listaSezioni_$i.txt anagraficaLista_$i.txt > lista_$i.csv; done
 
# faccio il merge di tutti i CSV e produco un unico file
# con tutti i voti per candidato per sezione di ogni lista
csvstack *.csv | csvcut -c 1,2,3,4,6,8 > liste.csv
 
# cancello file che non mi sono più utili
rm -R *.txt
rm -R *.xml

Libro consigliato

Per entrare nel mondo divertentissimo ed efficiente della “riga di comando” mi sento di consigliare il bel “Data Science at the Command Line” . È un libro per tutti, di facile lettura e pieno di esempi utili.