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. basic 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.

  1. Apri la finestra Proprietà vettore.

  2. Spostati sulla scheda Campi.

  3. Attiva modifica:

    ../../../_images/toggle_editing_mode.png
  4. Aggiungi una nuova colonna

    ../../../_images/add_new_column.png
  5. Inserisci i seguenti valori:

    ../../../_images/column_settings.png
  6. Dopo aver creato il campo, vai alla scheda Modulo Attributi e seleziona il campo image.

  7. Imposta il Tipo widget in Allegato:

    ../../../_images/select_file_name.png
  8. Clicca su OK nel dialogo Proprietà vettore.

  9. 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:

    ../../../_images/school_property_no_image.png
  10. Clicca il pulsante di selezione ( il vicino al campo image).

  11. 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.

  12. Clicca OK.

  13. Usando questo metodo associa tutte le immagine con gli elementi corretti.

  14. Salva le modifiche ed esci da modalità modifica.

5.4.2. basic Follow Along: Creare un’azione

  1. Apri la scheda Actions per il layer school_property, e clicca sul pulsante symbologyAdd Aggiunge una nuova azione.

    ../../../_images/layer_actions.png
  2. Nel dialogo Aggiungi nuova azione, inserisci nel campo Descrizione le parole``Show Image``:

    ../../../_images/show_image_action.png

    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 scrivi display per usare ImageMagick. Ricorda di inserire uno spazio dopo il comando!

    • macOS

      1. Clicca Type sulla tendina e scegli Mac.

      2. 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.

  3. Seleziona dalla lista image:

    ../../../_images/select_image.png
  4. Clicca il pulsante Inserisci campo. QGIS aggiungerà la frase [% "image" %] nel campo Testo Azione.

  5. Clicca sul pulsante OK per chiudere il dialogo Aggiungi nuova azione

  6. Clicca su OK per chiudere il dialogo Proprietà vettore

Ora è il momento di provare la nuova azione:

  1. Clicca sul layer school_property nel pannello Layer in modo che sia evidenziato.

  2. Trova il pulsante actionRun Esegui azione elemento (nella Barra strumenti attributi).

  3. Clicca sulla freccia verso il basso a destra del pulsante. C’è solo un’azione definita per questo layer, che è quella appena creata.

    ../../../_images/run_feature_action_select.png
  4. Clicca il pulsante per attivare lo strumento.

  5. Utilizzando questo strumento, clicca su uno dei tre oggetti della scuola.

    L’immagine per quella proprietà dovrebbe aprirsi.

5.4.3. moderate 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!

  1. Aprire la tabella attributi per il layer landuse.

    Useremo il campo name per ognuna delle nostre landuse per la ricerca in Google.

  2. Chiudi la tabella attributi

  3. Torna a Azioni nella finestra Proprietà vettore.

  4. Clicca sul pulsante Crea Azioni Predefinite per aggiungere delle azioni predefinite.

  5. Rimuovi tutte le azioni tranne Apri URL con titolo breve Cerca nel Web usando il pulsante symbologyRemove Rimuovi l’azione selezionata in basso.

  6. Fai doppio click sull’azione rimasta per modificarla

  7. Cambia la Descrizione in Google Search, e rimuovi il contenuto del campo Breve descrizione.

  8. 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, dove SEARCH_PHRASE è quello che vuoi cercare. Dato che ancora non conosciamo cosa cercare, inseriremo la prima parte (senza la frase di ricerca).

  9. 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.

  10. Seleziona il campo name.

  11. Clicca il pulsante Inserisci:

    ../../../_images/google_search_action.png

    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 campo name 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».

  12. Se non lo hai già fatto, imposta tutto come sopra indicato.

  13. Clicca sul pulsante OK per chiudere il dialogo Aggiungi nuova azione

  14. Clicca su OK per chiudere il dialogo Proprietà vettore

Ora prova la nuova azione.

  1. Con il layer landuse attivo nel pannello Layer, clicca sulla freccia verso il basso a destro del pulsante actionRun Esegui azione elemento, e seleziona l’unica azione (Google Search) definita per questo layer.

  2. 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. hard 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:

  1. Apri la finestra Proprietà vettore e vai alla scheda Azioni.

  2. 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()
      
    ../../../_images/python_action_example.png

    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 chiama show() 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.

  3. 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.