18.4. Creare un Report
Questa sezione ti aiuterà a impostare un report in QGIS.
18.4.1. Che cos’è?
Per definizione, un report GIS è un documento contenente informazioni organizzate in modo narrativo, contenente mappe, testo, grafici, tabelle, ecc. Un report può essere preparato ad hoc, periodico, ricorrente, regolare o come desiderato. I report possono riferirsi a periodi specifici, eventi, ricorrenze, soggetti o luoghi.
In QGIS, un Report è un’estensione di un Layouts.
I report permettono agli utenti di produrre i risultati dei loro progetti GIS in modo semplice, veloce e strutturato.
Un report può essere creato con
o all’interno di .Nota
Le mappe nei report QGIS si comportano allo stesso modo delle mappe nei layout di stampa e negli atlanti. Ci concentreremo sulle peculiarità dei report QGIS. Per i dettagli sulla gestione delle mappe, vedi le sezioni su print layouts e atlases.
18.4.2. Comincia da qui
Nella finestra di dialogo Gestore dei Layout… un report può essere creato tramite Nuovo da Modello selezionando l’opzione a discesa Report vuoto e premendo il pulsante Crea….
Per questo esempio, usiamo alcuni confini amministrativi, luoghi popolati, porti e aeroporti dall’insieme dei dati Natural Earth (1:10M).
Usando il comando Struttura Report sulla sinistra:
, creiamo un report vuoto. Inizialmente, non c’è molto da guardare - la finestra di dialogo che viene visualizzata assomiglia molto al designer del layout di stampa, eccetto per il pannello18.4.3. Area di lavoro Layout Report
I report di QGIS possono essere composti da più sezioni annidate. Nel nostro nuovo report vuoto abbiamo inizialmente solo la sezione principale del report. Le uniche opzioni per questa sezione sono Inserisci intestazione del Report e Inserisci piè di pagina del Report. Se abilitiamo queste opzioni, un’intestazione sarà inclusa come prima pagina(e) nel report (le singole parti dei report possono essere a più pagine se lo si desidera), e un piè di pagina costituirà l’ultima pagina(e). Abilita l’intestazione (Inserisci intestazione del Report) e premi il pulsante Modifica accanto ad essa:
Di conseguenza, accadono alcune cose. In primo luogo, viene mostrata una matita di modifica accanto a Report nella Struttura Report, indicando che la sezione del report è attualmente in fase di modifica nel designer. Vediamo anche una nuova pagina con un piccolo titolo Intestazione Report. La pagina ha un orientamento orizzontale per impostazione predefinita, ma questo (e altre proprietà della pagina) possono essere cambiate cliccando con il tasto destro sulla pagina e scegliendo . Questo farà apparire la scheda per la pagina Proprietà dell’oggetto, e si possono specificare Dimensione, Larghezza, Altezza e altro.
Nei report di QGIS, ogni componente del report è costituito da singoli layout. Essi possono essere creati e modificati usando gli stessi strumenti dei layout di stampa standard - così si può usare qualsiasi combinazione desiderata di etichette, immagini, mappe, tabelle, ecc. Aggiungiamo alcuni elementi all’intestazione del nostro rapporto per dimostrarlo:
Creeremo anche un semplice piè di pagina per il report selezionando l’opzione Inserisci piè di pagina del Report e premendo Modifica.
Prima di procedere oltre, esportiamo questo report e vediamo cosa otteniamo. L’esportazione viene fatta dal menu
- in questo caso selezioniamo per restituire l’intero report in un file PDF. Ecco il risultato non molto impressionante - un PDF di due pagine composto dalla nostra intestazione e piè di pagina:Rendiamo le cose più interessanti. Premendo il pulsante Aggiungi Sezione nella Struttura Report, ci viene data una scelta di nuove sezioni da aggiungere al nostro report.
Ci sono due opzioni: Sezione Layout Statica e Sezione Gruppo Campo.
La Sezione Layout Statica è un singolo, corpo statico layout. Può essere usata per incorporare layout statici in un report.
La Sezione Gruppo Campo ripete il layout del suo corpo per ogni elemento di un layer. Gli elementi sono ordinati in base all’elemento di raggruppamento selezionato (con un’opzione per l’ordinamento ascendente/discendente). Se una sezione del gruppo di campi ha sezioni figlie (per esempio un’altra sezione del gruppo di campi con un campo diverso), allora solo gli elementi con valori univoci per l’elemento del gruppo vengono iterati. Questo permette report annidati.
Per ora aggiungeremo una Sezione Gruppo Campo al nostro report. Al suo livello più elementare, si può pensare a Sezione Gruppo Campo come all’equivalente di un print atlas: si seleziona un layer su cui iterare, e il report inserirà una sezione per ogni elemento trovato. Selezionando la nuova Sezione Gruppo Campo mostra una serie di nuove impostazioni correlate:
In questo caso abbiamo impostato il nostro Gruppo Campo in modo da iterare tutti gli stati del layer Admin Level 1, usando i valori del campo adm1name. Le stesse opzioni per includere header e footer sono presenti, insieme ad una nuova opzione per includere una corpo per questa sezione. Lo faremo, e modificheremo il corpo:
Il nostro corpo ora consiste in una mappa e un’etichetta che mostra il nome dello stato. Per includere il nome dello stato, abbiamo selezionato Proprietà Principali con l’aiuto di Inserisci o Modifica un Espressione….
e abbiamo definito il testo sottoIl risultato era la seguente espressione (name è il nome dell’attributo nel layer Admin Level 1 che contiene il nome dello stato):
[% "name" %]
La mappa è impostata per seguire l’elemento corrente del report (abilitato selezionando Controllato dal Report - proprio come un elemento della mappa in un atlante seguirà l’elemento corrente dell’atlante quando Controlled by Atlas è selezionato):
Se andassimo avanti ed esportassimo il nostro rapporto ora, otterremmo qualcosa come questo:
Quindi più o meno un atlante, ma con una pagina di intestazione e di piè di pagina.
Rendiamo le cose più interessanti aggiungendo una sottosezione al nostro gruppo di stati. Lo facciamo selezionando prima il gruppo di campi Admin Level 1 nell’organizzatore, poi premendo il pulsante Aggiungi campo e aggiungendo una nuova Sezione Gruppo Campo:
Quando si itera sugli elementi di una Sezione Gruppo Campo, gli elementi saranno filtrati per corrispondere al campo che definisce il suo gruppo padre (adm1name
in questo caso). Qui, la sottosezione che abbiamo aggiunto itererà su un layer Populated Places, includendo una sezione corpo per ogni luogo incontrato. La magia qui è che il layer Populated Places ha un attributo con lo stesso nome del campo che lo definisce nel layer padre, adm1name, etichettando ogni luogo con lo stato in cui è contenuto (se sei fortunato i tuoi dati saranno già strutturati in questo modo - se no, esegui l’algoritmo di elaborazione Join Attributes by Location e crea il tuo campo). Quando esportiamo questo report, QGIS prenderà il primo stato dal layer Admin Level 1, e poi itererà su tutti i Populated Places con un valore adm1name corrispondente. Ecco cosa otteniamo:
Qui abbiamo creato un corpo di base per il gruppo Populated Places, includendo una mappa del luogo e una tabella di alcuni attributi del luogo. Così il nostro report è ora composto da un’intestazione, una pagina per il primo stato, seguita da una pagina per ogni luogo popolato all’interno di quello stato, poi il resto degli stati con i loro luoghi popolati, e infine il piè di pagina del report. Se dovessimo aggiungere un’intestazione per il gruppo dei luoghi popolati, verrebbe inclusa appena prima di elencare i luoghi popolati per ogni stato, come mostrato nell’illustrazione qui sotto.
Allo stesso modo, un piè di pagina per il gruppo Luoghi Popolati verrebbe inserito dopo che è stato incluso il posto finale per ogni stato.
In aggiunta alle sottosezioni annidate, le sottosezioni in un rapporto possono anche essere incluse consecutivamente. Se aggiungiamo una seconda sottosezione al gruppo Admin Level 1 group per Airports, allora (se il layer Airports ha un attributo adm1name che può collegarlo al gruppo padre) il nostro report elencherà prima TUTTI i luoghi popolati per ogni stato, seguito da tutti gli aeroporti all’interno di quello stato, prima di procedere allo stato successivo.
Il punto chiave qui è che il nostro gruppo Airports è una sottosezione del gruppo Admin Level 1 group - non il gruppo Populated Places.
In questo caso il nostro report sarebbe strutturato in questo modo (si noti che sono state incluse anche le bandiere di stato - la procedura per aggiungere immagini specifiche degli elementi in questo modo è descritta di seguito):
18.4.3.1. Includere immagini in un report
Le immagini possono essere abbastanza utili nei report, e QGIS ammette immagini sia nella parte statica che in quella dinamica di un report. Le immagini vengono aggiunte nello stesso modo dei layout di stampa standard, e per le parti statiche dei report (e le immagini statiche nelle parti dinamiche) non c’è altro da fare.
Ma se vuoi delle illustrazioni su misura per gli elementi del report, il tuo layer deve avere un attributo che può essere usato per definire l’immagine da includere.
QGIS si basa su nomi di file assoluti per le immagini nei report.
Per le immagini dinamiche, prima aggiungi un’immagine alla parte del corpo del gruppo, come al solito. Nelle Proprietà dell’oggetto dell’immagine, imposti Sorgente dell’immagine usando il pulsante Sovrascrittura definita dai dati, e selezioni un attributo che contiene il percorso assoluto delle immagini oppure Modifica… (per inserire un’espressione che generi il percorso assoluto dell’immagine).
Qui sotto c’è un’espressione di esempio che usa la concatenazione di stringhe per specificare il percorso assoluto delle immagini, usando la cartella dove si trova il file del progetto @project_path
) e un attributo (adm1name
) da cui viene generato il nome del file (in questo caso trasformando la stringa nell’attributo adm1name
in maiuscolo e aggiungendo “_flag.png”):
concat(@project_folder, '/naturalearth/pictures/' ,
upper("adm1name"), '_flag.png')
Questo significa che le immagini si trovano nella sottocartella naturalearth/pictures
della cartella del file del progetto.
18.4.3.2. Evidenziare l’elemento del rapporto corrente in una mappa
Nel rapporto di cui sopra, gli elementi del rapporto sono enfatizzati nelle mappe usando l’evidenziazione (state) e i cerchi (populated places). Per enfatizzare gli elementi del report nelle mappe (oltre a metterli al centro delle mappe), è necessario definire lo stile usando un collegamento tra il suo @id
e il atlas_featureid
, come per gli atlanti.
Per esempio, se vuoi usare una linea / bordo più spessa per il rapporto dell’elemento rispetto agli altri elementi, puoi definire la larghezza della linea con i dati:
if($id=@atlas_featureid, 2.0, 0.1)
L’elemento nel report avrà un contorno del poligono largo 2 unità, mentre tutte gli altri elementi avranno una linea larga 0,1 unità. È anche possibile definire il colore (magenta scuro non trasparente per l’elemento nel report e grigio chiaro semi trasparente per gli altri elementi):
if($id=@atlas_featureid, '#FF880088', '#88CCCCCC')
18.4.3.3. Più gruppi di livello 1
La combinazione di sezioni nidificate e consecutive, insieme a testate e piè di pagina, consente una grande flessibilità. Per esempio, nel report sottostante aggiungiamo un altro gruppo di campi come figlio del report principale per il layer Ports. Ora, dopo aver elencato gli stati con i loro luoghi popolati e gli aeroporti, otterremo una lista riassuntiva di tutti i porti della regione:
Questo viene realizzato nell’ultima parte del nostro report esportato come:
18.4.4. Impostazioni per l’esportazione
Quando esporti un report (
), ti verrà chiesto un nome per il file, e poi avrai la possibilità di regolare le impostazioni di esportazione per ottenere il risultato più appropriato.Come vedi, i report in QGIS sono estremamente potenti e flessibili!
Nota
Le informazioni attuali sono state adattate da un blog di North Road, Exploring Reports in QGIS 3.0 - the Ultimate Guide!