HfcQGIS, la guida sulle funzioni del calcolatore di campi di QGIS, ora in formato molto leggibile, grazie a @opendatasicilia

logo_hfc_00

QGIS è uno dei software GIS Desktop più diffusi nel mondo Open Source e non solo. Uno dei suoi strumenti più potenti è il calcolatore di campi, raggiungibile usando il pulsante ‘pallottoliere’ mActionCalculateField anche dalla tabella degli attributi, che consente di eseguire calcoli sulla base di valori di attributo esistenti o funzioni definite, ad esempio, per calcolare la lunghezza o l’area delle caratteristiche geometriche. I risultati possono essere scritti in un nuovo campo di attributo, un campo virtuale, oppure possono essere utilizzati per aggiornare i valori in un campo esistente. Questo è, in breve, il calcolatore di campi di QGIS: uno strumento molto potente, versatile e ricco di funzioni/espressioni.

field_calc_rapida1
Tabella attributi in QGIS
barra_attributi
Barra degli strumenti in QGIS

HfcQGIS è un manuale che spiega come usare il calcolatore di campi e le relative funzioni/espressioni; nasce per rispondere alle numerose richieste di aiuto sull’uso del calcolatore di campi e per colmare un vuoto sulla guida online di QGIS con esempi e molti screenshot.

Il manuale, realizzato in GitHub (qui articolo di lancio), è apprezzato da molti utenti ma è poco utilizzato da chi non conosce la piattaforma GitHub che potrebbe risultare antipatica; per ovviare a questo inconveniente, Giovan Battista Vitrano ha avuto l’idea di realizzare un manuale più user friendly e ispirato da Ciro Spataro e dalla sua guida su RTD (Read the Docs) siamo riusciti, grazie al supporto di Andrea Borruso, a creare HfcQGIS in RTD by @OpendataSicilia utilizzando come sorgente il repository in GitHub. Questo lavoro ha portato molti benefici alla leggibilità e soprattutto fruibile da tutti e con qualsiasi strumento (PC, tablet, smartphone).

Vediamo brevemente come è organizzata la guida in RTD:

da PC:

Pagina iniziale sito RTD

sulla sinistra la sidebar con il menu principale e il campo per la ricerca (molto potente):

sidebar e campo ricerca

esempio di ricerca: Buffer

Ricerca funzione Buffer

sulla destra, troviamo:

Interfaccia interattiva
  1. in alto centrale la breadcrumb (o filo di Arianna o percorso di Pollicino) per tener traccia della posizione in cui ci si trova nel documento (molto utile);
  2. in alto a destra il tasto GitHub che permette di collegarsi direttamente al file, nel repository, della sorgente della pagina; molto utile per segnalare problemi ed altro;
  3. sulla destra centrale, la barra per la condivisione social, molto utile per la divulgazione del documento (usatelo!!!);
  4. in basso a destra un utile bottone per ritornare in alto.

da Smartphone:

Smartphone
  1. in alto a sinistra le tre lineette permettono di accedere al menu (immagine centrale è il menu con ricerca);
  2. in basso la barra di condivisione social (usatela!!!);
  3. in basso a destra, cerchietto arancione con freccia, permette di ritornare il alto alla pagina.

Il logo di QGIS è stato realizzato da Anita Graser (QGIS Board), l’immagine HfcQGIS è stata realizzata da Salvatore Fiandaca (autore articolo) usando InkSCAPE e il carattere Trueno Bold. I colori utilizzati nel RTD sono fedeli alla Visual Style Guide di QGIS.


OSSERVAZIONI:

Questa guida NON sostituisce il manuale online di QGIS, cerca solo di rendere più facile la comprensione dello strumento!!!

Per visualizzare e consultare correttamente i contenuti di HfcQGIS sono necessari:
Risoluzione video desktop: Pc con scheda video SVGA. Monitor a risoluzione minima di 1024×768 pixel con almeno 65.536 colori.
Mobile: Risoluzione minima di 360 x 640 px (modello di riferimento Sansung Galaxy S3).
Browser: HfcQGIS è ottimizzato per Microsoft Internet Explorer Versione 11.0 e successive, Microsoft Edge versione 25.1e immediatamente successive, Mozilla Firefox versione 50.0 e successive o Chrome versione 40.0 o successiva, Opera versione 48.0 o successiva Safari versione 9.0 o successiva.

Video dimostrazione:

Video demo in 150 secondi:

I dati di soldipubblici.gov.it sul tuo portale open data

I portali open data hanno sempre bisogno di essere alimentati con dataset nuovi e soprattutto aggiornati.  Attivare quei meccanismi che consentono di generare file aperti e allo stesso aggiornati, nella Pubblica Amministrazione, è un processo che molte volte richiede tempo e soprattutto un cambio di mentalità; è un discorso questo, che si sente spesso nella PA.

La comunità di opendatasicilia mi ha spesso insegnato che, è mostrando la potenzialità dei dati aperti con il riuso, che quei meccanismi di interesse si possono sbloccare, attirando nuove idee e nuovi dati. Avere quindi dati aperti, aggiornati e attendibili, è cosa rara e complicata, ma quando ne puoi discutere un po’ in gruppo e alimentare le tue fantasie e le tue idee con uno script di poche righe ma efficientissimo, allora la vita sembra prendere una piega del tutto diversa!

Sotto la spinta delle mie esigenze lo script (creato da Andrea Borruso), originariamente nato per scaricare i dati di un singolo ente da soldipubblici.gov.it, ha consentito la pubblicazione di una dataset sul portale open data della Città Metropolitana di Napoli, in due formati (csv e json), con aggiornamento automatico settimanale.

Ma andiamo per gradi.
Il sito soldipubblici.gov.it consente  di consultare e scaricare  i dati della spesa pubblica  ricercando un ente.

È possibile fare il download del CSV, al click su un pulsante, ma nel mio caso avevo bisogno di automatizzare questo processo.

Lo script (accessibile qui) è scritto in bash, sfrutta le utility httpie, jq e csvkit e funziona in questo modo:

  • si imposta il codice dell’ente di interesse (i codici dei vari enti si trovano qui)
  • il dato viene scaricato in formato JSON, e le cifre spese espresse in origine come numero intero (è stata rimossa la parte decimale, moltiplicando per 100), vengono riportate a numero decimale;
  • il file così trasformato viene salvato in JSON e CSV.

Alla versione originale dello script volevo aggiungere la possibilità di rimuovere quei record in cui le colonne con i valori numerici sono non valorizzate (sono “null”). E allora mi è stato suggerito di usare csvgrep, che può filtrare le righe di una tabella a partire da un’espressione regolare ed è stata aggiunta la riga:

Lo script viene eseguito su un server del mio Ente, e l’output è accessibile dall’esterno pubblicamente in http.

Essendo i dati di “soldipubblici” aggiornati settimanalmente, nasceva infine l’esigenza di doverne automatizzare il download senza la necessità di un intervento umano. Così, sempre su indicazioni apprese nello scambio in mailing list, ho modificato il file /etc/crontab (che negli ambienti Linux consente di impostare delle operazioni da eseguire in modo pianificato) aggiungendo:

La stringa “0 4 */7 * *” corrisponde a “ogni 7 giorni alle 4 di mattina”.

Verificato che il tutto funzionasse correttamente e ottenuti i link statici dei file creati dallo script, ho provveduto a caricarli in un dataset sul portale ckan degli Open Data della Città Metropolitana di Napoli.

È nato così il primo caso d’uso specifico dello script SpesaCron, dove grazie all’estrazione di due file csv e json dai dati di soldipubblici.gov.it è stato possibile pubblicare un dataset contenente tutte le voci di spesa di una Pubblica Amministrazione, automaticamente alimentato dallo stesso sito e con frequenza di aggiornamento settimanale.

Docker, CKAN e DCAT-AP_IT insieme appassionatamente

Il Team per l’Italia Digitale ha rilasciato su Github un container Docker per utilizzare CKAN con relativi plugin per DCAT-AP_IT https://github.com/italia/dati-ckan-docker.
Scrivo questo post per cercare di chiarire alcuni concetti di base e spiegare chiaramente il concetto di virtualizzazione, cosa sono i container docker, cosa è CKAN, cosa sono i metadati,i profili DCAT-AP e DCAT-AP_IT e l’harvesting.

LA VIRTUALIZZAZIONE

Negli ultimi 15 anni una tecnica molto utilizzata in informatica è stata quella della virtualizzazione, tecnica che permette di utilizzare su una macchina virtuale (VM) un sistema operativo diverso da quello installato sul computer.

Con il termine di virtualizzazione si intende la possibilità di astrarre componenti hardware di un elaboratore cosi da renderli disponibili al software in forma di risorsa virtuale.

E’ cosi possibile installare sistemi operativi su hardware virtuale; l’insieme delle componenti hardware virtuali (Hard Disk, Memoria, processore, scheda di rete) prende il nome di Macchina Virtuale o VM.

La virtualizzazione avviene attraverso dei software denominati Hypervisor; tra i piu famosi ed i piu semplici ci sono vmware (https://vmware.com) e virtualbox ( https://virtualbox.org ).

Per farla breve se sul vostro computer windows volete provare, un software di grafica come Blender che funziona solo su linux dovrete:

1) Installare sul vostro computer virtualbox

2) Creare una macchina virtuale assegnandogli le risorse (ram, hd, etc)

3) installare su questa macchina virtuale una distribuzione linux

4) installare su linux virtualizzato il software Blender

Finito! da questo momento in poi quando vorrete utilizzare blender potrete accendere una macchina virtuale con linux dentro il vostro computer windows.

DOCKER E I SUOI CONTAINER

Docker è un passo avanti rispetto al concetto di virtualizzazione, perchè permette di non virtualizzare l’intero sistema operativo ma di impacchettare solamente le librerie e il software che ci servono basandosi su containers.

Quindi mentre nella virtualizzazione classica sono virtualizzati programmi e kernel del sistema operativo (il kernel è il nucleo di un sistema operativo che fornisce ai processi in esecuzione accesso all’hardware) nella virtualizzazione per container sono virtualizzati solo software e librerie

Un container NON E’ UNA MACCHINA VIRTUALE ma un’applicazione isolata con le sue dipendenze eseguita in un namespace separato; nel kernel linux, un namespace è uno spazio isolato e virtualizzato delle risorse di sistema (network namespace, file system, users) per una collezione di processi. Essendo isolato i processi agiscono all’interno di un container e non agiscono all’esterno sul Sistema Operativo principale.

Il Docker engine permette ai container di avere tutto il substrato che serve per funzionare (lo stesso kernel); diversi sono i vantaggi rispetto alle vm classiche , i container sono più “leggeri” delle macchine virtuali, possono essere avviati in pochi secondi, richiedono poche risorse e sono isolati.

Di rilevante importanza è il registry di docker, una piattaforma in cloud dove è possibile caricare, scaricare e condividere le immagini dei vari container. Quella ufficiale è https://hub.docker.com/

Per farla breve: se volete utilizzare un container su mac basterà:

1. Installare sul vostro mac Docker (https://www.docker.com) ed avviarlo

2. Installare kitematic ( https://kitematic.com ) che fornisce un interfaccia grafica per navigare tra le centinaia di migliaia di immagini dell registry

3. Avviare kitematic e scegliere l’immagine dalla quale si vuole creare il container cliccando su “create”

Alla fine del download il container si avvierà automaticamente e saranno fornite le istruzioni per collegarsi al container per utilizzare l’applicazione.

A questo punto è doveroso un chiarimento tecnico. Docker sfrutta vecchie caratteristiche del kernel linux che permettono di far girare dei software in maniera separata e protetta, cosi se una applicazione si schianta non provoca problemi agli altri o se vogliamo possiamo assegnare alla stessa risorse limitate.

Nella versione 2.24.19 del kernel Linux vennero introdotti i namespaces che permettono di “etichettare” i processi cosi da differenziarli dagli altri, successivamente nella versione 2.6.24 vennero introdottti i Cgroups che permettono la gestione delle risorse legata ai processi cosi che un gruppo di processi non prenda maggiori risorse rispetto a quelle a lui assegnate, infine, nel 2013 fu introdotta Libcontainer scritta dal team di Docker che astrando namespaces e Cgroups permette di gestire la virtualizzazione a container.

LA PIATTAFORMA CKAN

CKAN (Comprehensive Knowledge Archive Network) è la piattaforma leader mondiale per i portali di Open Dataed è uno strumento che ne permette la gestione, la pubblicazione e la ricerca.

È sviluppato in Python, ha una licenza di tipo Open Source ed è promosso dalla Open Knowledge Foundation, una fondazione che promuove la diffusione delle idee, offrendo supporto e strumenti per la condivisione della conoscenza.

CKAN ( https://ckan.org )è usato da governi, organizzazioni e gruppi di utenti in tutto il mondo per gestire una vasta serie di portali di dati di enti ufficiali e di comunità, tra cui portali per governi locali, nazionali e internazionali.

La grande forza di CKAN sta nella sua semplicità; infatti il suo utilizzo è semplice sia per gli utilizzatori che per gli operatoiri che devono inserire i dataset grazie a workflow semplificato che per l’utente finale ch li deve ricercare. Molte sono le caratteristiche che rendono unico CKAN tra le principali, a mio parere, ci sono:

  • gestire, pubblicare, ricercare dataset e documenti in formato aperto;
  • visualizzare dati sia in tabelle che grafici e mappe;
  • storico delle operazioni svolte sui dataset per operatore;
  • possibilità di workflow minimo sui dataset;
  • API per gestire e interrogare dei dataset;
  • integrazione con portali in wordpress.
  • Utilizzo di Plugin di terze parti per aumentarne le potenzialità

Per farla breve: CKAN è un software Open Source scritto in Python che permette facilmente di mettere su un portale web per gestire e catalogare dataset gestendo ruoli profili etc. E’ possibile potenziarlo usando plugin.

METADATAZIONE DCAT-AP E DCAT-AP_IT

Cosa sono i metadati? Possiamo definirli come dati di 2°livello che servono descrivere e classificare altri dati o contenuti digitali.

L’obiettivo de metadati è descrivere l’informazione primaria, per organizzarla e semplificarla; in particolar modo i metadati sono importanti quando siamo dinanzi a repository di contenuti. Per semplificare possiamo associare l’’idea dei metadati all’utilizzo dei tag che ci permettono di “taggare” elementi, per identificarli.

DCAT-AP (Data Catalog Vocabulary — Application Profile ) è una specifica per i portali di dati europei basata sul vocabolario del catalogo dei dati del W3C (DCAT https://www.w3.org/TR/vocab-dcat/ ) per la descrizione dei dataset del settore della Pubblica Amministrzione in Europa tramite l’utilizzo di metadati. La specifica è stata rilasciata nel novembre 2015 e definita nell’ambito del programma ISA (Interoperability Solutions for European Public Administrations) della Commissione Europea

L’AGID (Agenzia per l’Italia digitale) ha prodotto il profilo italiano del DCAT-AP denominato DCAT-AP_IT il 26 aprile dopo consultazione pubblica.(http://www.dati.gov.it/sites/default/files/DCAT-AP_IT_v10.pdf).

Il 5 Aprile del 2017 è stata rilasciata la Release 1.0 delle “linee guida per i cataloghi dati” che presentano le linee guida per l’alimentazione e gestione di cataloghi dati secondo il profilo nazionale di metadatazione DCAT-AP_IT, così come raccomandato nelle linee guida per la valorizzazione del patrimonio informativo pubblico (anno 2016). Le linee guida forniscono indicazioni forniscono una descrizione degli elementi principali (e proprietà) del profilo di metadazione con le relative proprietà.

Particolarmente interessante è la tabella a pagina 6 e 7 che riporta l’elenco delle classi e proprietà definite nel profilo italiano con il relativo livello di obbligatorietà; in particolare, “M” indica che la classe è obbligatoria, “R” indica che è raccomandata e “O” indica che è opzionale.

Su CKAN si possono installare plugin per gestire DCAT-AP DCAT-AP_IT.

Per farla breve: se una Pubblica Amministrazione vuole rilasciare un dataset sul proprio portale deve seguire delle regole di metadazione secondo il profilo DCAT-AP_IT che a sua volta è una estenzione del DCAT-AP europeo per utilizzare i metadati corretti.

HARVESTING

L’Harvesting è una tecnica che permette di raccogliere le informazioni relative agli archivi pubblicati su singoli nodi tramite metadati e renderli disponibili all’utenza su portali “centrali”. Quindi se un piccolo comune produce un dataset e lo pubblica sul suo portale Open Data utilizzando i metadati del profilo DCAT-AP_IT automaticamente questo dataset sarà disponibilie su altri portali Nazionali ed Europei.
CKAN permette di effettuare l’harvesting su altri CKAN e a sua volta puo mettere a disposizione i propri dataset per l’harvesting di altri.

Per farla breve tramite la tecnica dell’ harvesting un dataset metadatato correttamente, presente su un portale CKAN, può essere automaticamente indicizzato e ricercabile su un altro portale o che all’interno di un nostro portale CKAN siano ricercabili dataset non inseriti da noi ma presenti su altri portali CKAN ed automaticamente diventati patrimonio del nostro portale.

CONCLUSIONI

Ora che il team digitale ha rilasciato un container ufficiale potrete facilmente:

  1. Installare docker (https://www.docker.com)
  2. Scaricare e installare il container del team digitale con CKAN e plugin per DCAT-AP_IT https://github.com/italia/dati-ckan-docker (ci sono tutte le informazioni per installarlo a riga di comando)
  3. Caricare un dataset e metadatarlo secondo le regole DCAT-AP_IT
  4. Fare Harvesting su altri portali o permetterlo ad altri di farlo sui vostri dataset.

RINGRAZIAMENTI

Per questo post devo ringraziare diverse perosone con il quale mi sono confrontato negli ultimi mesi: Marcello Vetro con il quale abbiamo studiato Docker ma che ormai movimenta piu container lui che l’ente portuale di Palermo; Fabio Catania che è impazzito per installare su un CKAN dockerizzato il DCAT-AP_IT prima che venisse rilasciato dal team digitale; Andrea Borruso, Davide Taibi e Ciro Spataro con il quale ho condiviso dubbi e incertezze affidandomi alla loro esperienza.