5.4. Lesson: Azioni
Ora che hai visto un’azione predefinita nella lezione precedente, è il momento di definire le tue azioni.
Un’azione è qualcosa che accade quando clicchi su un elemento. Può aggiungere alla tua mappa molte funzionalità, per esempio, permettendoti di recuperare informazioni addizionali su un oggetto. L’assegnazione di azioni può aggiungere alla tua mappa un’intera nuova dimensione.
Obiettivo di questa lezione: Imparare come aggiungere azioni personalizzate.
In questa lezione useremo il layer school_property creato precedentemente. I dati di esempio comprendono foto di ognuna delle tre proprietà che hai digitalizzato. Quello che faremo è associare ogni proprietà con la sua immagine. Poi creeremo un’azione che aprirà l’immagine della proprietà quando si clicca sulla proprietà.
5.4.1. Follow Along: Aggiungi un campo per le immagini
Al momento il layer school_property
non ha modo di associare una proprietà con un’immagine. Prima creeremo un campo a questo scopo.
Apri la finestra Proprietà vettore.
Spostati sulla scheda Campi.
Attiva modifica:
Aggiungi una nuova colonna
Inserisci i seguenti valori:
Dopo aver creato il campo, vai alla scheda Modulo Attributi e seleziona il campo
image
.Imposta il Tipo widget in Allegato:
Clicca su OK nel dialogo Proprietà vettore.
Usa lo strumento Informazioni elementi cliccando su una delle tre geometrie del layer school_property.
Dato che sei ancora in modalità modifica, il dovrebbe essere attivo e apparire come questo:
Clicca il pulsante di selezione ( il … vicino al campo image).
Seleziona il percorso per la tua immagine. Le immagini sono in
exercise_data/school_property_photos/
e sono nominate allo stesso modo degli elementi a cui dovrebbero essere associate.Clicca OK.
Usando questo metodo associa tutte le immagine con gli elementi corretti.
Salva le modifiche ed esci da modalità modifica.
5.4.2. Follow Along: Creare un’azione
Apri la scheda Actions per il layer school_property, e clicca sul pulsante Aggiunge una nuova azione.
Nel dialogo Aggiungi nuova azione, inserisci nel campo Descrizione le parole``Show Image``:
Cosa fare dopo varia a seconda del sistema operativo, quindi scegli il percorso appropriato:
Windows
Clicca Type sulla tendina e scegli Apri.
Ubuntu Linux
Sotto Testo Azione, scrivi
eog
per Gnome Image Viewer, oppure scrividisplay
per usare ImageMagick. Ricorda di inserire uno spazio dopo il comando!macOS
Clicca Type sulla tendina e scegli Mac.
Sotto Testo Azione, scrivi
open
. Ricorda di inserire uno spazio dopo il comando!
Ora puoi continuare scrivendo il comando.
Vogliamo aprire l’immagine, e QGIS sa dove è. Tutto ciò che devi fare è dire a Azioni dove è l’immagine.
Seleziona dalla lista image:
Clicca il pulsante Inserisci campo. QGIS aggiungerà la frase
[% "image" %]
nel campo Testo Azione.Clicca sul pulsante OK per chiudere il dialogo Aggiungi nuova azione
Clicca su OK per chiudere il dialogo Proprietà vettore
Ora è il momento di provare la nuova azione:
Clicca sul layer school_property nel pannello Layer in modo che sia evidenziato.
Trova il pulsante Esegui azione elemento (nella Barra strumenti attributi).
Clicca sulla freccia verso il basso a destra del pulsante. C’è solo un’azione definita per questo layer, che è quella appena creata.
Clicca il pulsante per attivare lo strumento.
Utilizzando questo strumento, clicca su uno dei tre oggetti della scuola.
L’immagine per quella proprietà dovrebbe aprirsi.
5.4.3. Follow Along: Cercare in internet
Mettiamo che stiamo guardando la mappa e vogliamo sapere di più riguardo l’area dove c’è una fattoria. Supponi di non sapere nulla dell’area in questione e vuoi trovare delle informazioni generiche al riguardo. Il primo impulso, considerando che stai usando un computer, probabilmente sarà di cercare in Google il nome dell’area. Diciamo a QGIS di farlo automaticamente per noi!
Aprire la tabella attributi per il layer landuse.
Useremo il campo
name
per ognuna delle nostre landuse per la ricerca in Google.Chiudi la tabella attributi
Torna a Azioni nella finestra Proprietà vettore.
Clicca sul pulsante Crea Azioni Predefinite per aggiungere delle azioni predefinite.
Rimuovi tutte le azioni tranne Apri URL con titolo breve Cerca nel Web usando il pulsante Rimuovi l’azione selezionata in basso.
Fai doppio click sull’azione rimasta per modificarla
Cambia la Descrizione in
Google Search
, e rimuovi il contenuto del campo Breve descrizione.Assicurati che Mappa sia fra gli Ambiti Azione selezionati.
Cosa fare dopo varia a seconda del sistema operativo, quindi scegli il percorso appropriato:
Windows
Sotto: guilabel:Tipo, scegli Apri. Questo dirà a Windows di aprire un indirizzo Internet nel browser predefinito, ad esempio Internet Explorer.
Ubuntu Linux
Sotto Testo Azione, scrivi
xdg-open
. Questo dirà ad Ubuntu di aprire un indirizzo Internet nel tuo browser predefinito, come Chrome o Firefox.macOS
Sotto Azione, scrivi
apri
. Questo indicherà a macOS di aprire un indirizzo Internet nel browser predefinito, come Safari.
Ora puoi continuare scrivendo il comando
Qualunque sia il comando usato in precedenza, è necessario dare l’indirizzo Internet. Vuoi usare Google, cercare una frase automaticamente.
Normalmente quando usi Google, inserisci la frase di ricerca nella barra di ricerca Google. Ma in questo caso, vuoi che sia il computer a fare questo per te. Il modo in cui dici a Google di cercare qualcosa (se non vuoi usare direttamente la barra di ricerca) è dando al tuo browser l’indirizzo
https://www.google.com/search?q=SEARCH_PHRASE
, doveSEARCH_PHRASE
è quello che vuoi cercare. Dato che ancora non conosciamo cosa cercare, inseriremo la prima parte (senza la frase di ricerca).Nel campo Testo Azioni, scrivere
https://www.google.com/search?q=
. Ricorda di aggiungere uno spazio dopo il comando iniziale e prima di aggiungere questo!Ora vuoi che QGIS dica al browser di dire a Google di cercare il valore di
name
per ogni elemento su cui potresti cliccare.Seleziona il campo name.
Clicca il pulsante Inserisci:
Questo significa che QGIS aprirà il browser e lo invierà all’indirizzo
https://www.google.com/search?q=[% "name" %]
.[% "name" %]
dice a QGIS di usare il contenuto del camponame
come frase di ricerca.Se, per esempio, l’area landuse su cui clicchi ha nome
Marloth Nature Reserve
, QGIS invierà il browser a https://www.google.com/search?q=Marloth%20Nature%20Reserve`, che visiterà Google, che cercherà «Marloth Nature Reserve».Se non lo hai già fatto, imposta tutto come sopra indicato.
Clicca sul pulsante OK per chiudere il dialogo Aggiungi nuova azione
Clicca su OK per chiudere il dialogo Proprietà vettore
Ora prova la nuova azione.
Con il layer landuse attivo nel pannello Layer, clicca sulla freccia verso il basso a destro del pulsante Esegui azione elemento, e seleziona l’unica azione (
Google Search
) definita per questo layer.Clicca su qualche area landuse che vedi sulla mappa. Il tuo browser si aprirà, ed inizierà una ricerca Google per il luogo che è registrato come valore
name
dell’area.
Nota
Se l’azione non funziona, controlla che tutto sia stato inserito correttamente; errori di battitura sono comuni con questo tipo di lavoro!
5.4.4. Follow Along: Apri un sito direttamente in QGIS
Sopra, hai visto come aprire una pagina web in un browser esterno. Ci sono alcuni difetti con questo approccio nel fatto che viene aggiunta una dipendenza sconosciuta - l’utente finale nel suo sistema avrà il software necessario per eseguire l’azione? Come hai visto, non hanno necessariamente lo stesso tipo di comando per lo stesso tipo di azione, se non sai su quale sistema operativo sarà usata. Con alcune versioni di sistema operativo, i comandi usato per aprire il browser potrebbero non funzionare. Questo potrebbe essere un problema insormontabile.
Comunque, QGIS opera utilizzando l’incredibilmente potente e versatile libreria Qt. Inoltre, le azioni QGIS posso essere arbitrari comandi Python, composti (p.e. usando informazioni variabili basate sul contenuto dell’attributo di un campo)!
Ora vedrai come utilizzare un’azione python pe mostrare una pagina web. È la stessa idea generale per aprire un sito in un browser esterno, ma non richiede alcun browser nel sistema dell’utente dato che utilizza la classe Qt QWebView (che è un widget html basato su webkit) per visualizzare il contenuto in una finestra a comparsa.
Questa volta useremo Wikipedia. Quindi il URL che richiederai sarà come questo:
https://wikipedia.org/wiki/SEARCH_PHRASE
Per creare l’azione sul layer:
Apri la finestra Proprietà vettore e vai alla scheda Azioni.
Configura una nuova azione usando le seguenti proprietà:
Type:
Python
Descrizione:
Wikipedia
Scope:
Feature
,Canvas
Action Text:
from qgis.PyQt.QtCore import QUrl from qgis.PyQt.QtWebKitWidgets import QWebView myWV = QWebView(None) myWV.load(QUrl('https://wikipedia.org/wiki/[%name%]')) myWV.show()
Ci sono un paio di cose da dire:
[%name%]
sarà rimpiazzato con l’attuale valore dell’attributo quando l’azione è invocata (come precedentemente).Il codice semplicemente crea una nuova istanza di
QWebView
, imposta il suo URL, e chiamashow()
per renderla visibile come una finestra sullo schermo dell’utente.
Puoi anche usare questo approccio per visualizzare un’immagine senza richiedere che l’utente abbia un particolare visualizzatore di immagini sul suo sistema.
Prova ad utilizzare i metodi sopra descritti per caricare una pagina Wikipedia utilizzando l’azione Wikipedia appena creata.
5.4.5. In Conclusion
Le azioni di permettono di dare alla tua mappa della funzionalità extra, utili per l’utente finale che vede la stessa mappa in QGIS. Dato che puoi utilizzare dei comandi shell per qualunque sistema operativo, oppure puoi usare Python, non c’è limite alle funzioni che potresti incorporare!
5.4.6. What’s Next?
Ora che hai fatto tutti i tipi di creazione di vettori dati, imparerai come analizzare i dati per risolvere problemi. È l’argomento del prossimo modulo.