Outdated version of the documentation. Find the latest one here.

6.4. Lesson: Azioni

Ora che hai visto un’azione predefinita nella lezione precedente, è il momento di definire le proprie azioni. Un’azione è qualcosa che accade quando si fa clic su una geometria. Puoi aggiungere molte funzionalità in più per la vostra mappa, permettendoti di recuperare ulteriori informazioni su un oggetto. Assegnare azioni può aggiungere una nuova dimensione alla tua mappa!

Obiettivo di questa lezione: Imparare come aggiungere azioni personalizzate.

6.4.1. basic Follow Along: Apri un’immagine

Usa il layer school_property che hai creato in precedenza. I materiali del corso comprendono foto di ciascuna delle tre proprietà che hai digitalizzato. Quello che stai facendo è associare ogni proprietà con la sua immagine. Poi creerai un’azione che aprirà l’immagine della proprietà quando si fa clic sulla proprietà.

6.4.2. basic Follow Along: Aggiungi un campo per le immagini

Il layer school_property non ha ancora modo di associare un’immagine con una proprietà. Per prima cosa creiamo un campo per questo scopo.

  • Apri la finestra Proprietà vettore.

  • Spostati sulla scheda Campi.

  • Attiva modifica:

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

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

../../../_images/column_settings.png
  • Dopo che il campo è stato creato, clicca su :guilabel: Modifica testo accanto al nuovo campo.

  • Posiziona su Nome file:

../../../_images/select_file_name.png
  • Clicca OK sulla finestra Proprietà vettore dialog.

  • Usa il Informazione elementi cliccando su una delle tre geometrie del layer school_property.

Dal momento che sei ancora in modalità di modifica, la finestra dovrebbe essere attiva e simile a questa:

../../../_images/school_property_no_image.png
  • Clicca il bottone di selezione ( il ... vicino al campo image).

  • Seleziona il percorso per la tua immagine. Le immagini sono in exercise_data / school_property_photos / e hanno lo stesso nome degli oggetti a cui sono associati.

  • Click OK.
  • In questa maniera associa tutte le immagini con gli oggetti corretti.

  • Salva le modifiche ed esci da modalità modifica.

6.4.3. basic Follow Along: Creare un’azione

  • Apri la scheda Azioni per il layer school_property.

  • Nel pannello Proprietà azioni, inserisci le parole: kbd:Show Image nel campo Nome:

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

Cosa fare dopo varia a seconda del sistema operativo:

6.4.3.1. Windows

  • Clicca Type sulla tendina e scegli Apri.

6.4.3.2. Ubuntu Linux

  • Sotto Azione, scrivi eog per Gnome Image Viewer, o scrivi display‘ per usare ImageMagick . Ricordati di inserire uno spazio dopo il comando!

6.4.3.3. MacOS

  • Clicca Type sulla tendina e scegli Mac.

  • Sotto Azione, scrivi apri . Ricordati di inserire uno spazio dopo il comando!

6.4.3.4. Continua a scrivere il comando

Vuoi aprire l’immagine, e QGIS sa dove è. Tutto ciò che devi fare è dire a Azioni dove è l’immagine.

  • Seleziona dalla lista image.

../../../_images/select_image.png
  • Clicca su :guilabel: Inserirsci campo. QGIS aggiungerà la frase :kbd: [%” immagine”%] nel campo :guilabel: Azione.

  • Clicca su Aggiungi alla lilsta azioni.

  • Clicca OK sulla finestra Proprietà vettore dialog.

Ora testa la nuova azione:

  • Click on the school_property layer in the Layers list so that it is highlighted.

  • Trova l’icona guilabel:Run feature action (sulla stessa barra degli strumenti, di :guilabel:` Apri tabella attributi`):

    actionRun

  • Clicca sulla freccia in basso a destra di questo pulsante. Fino ad ora c’è solo un’azione definita per questo livello, che è quella che avete appena creato.

  • Clicca il pulsante per attivare lo strumento.

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

  • Verrà aperta l’immagine di quell’oggetto.

6.4.4. moderate Follow Along: Cercare in internet

Stai guardando la mappa e vuoi sapere di più sulla zona relativa ad un’szienda. Supponi di non sapere nulla della zona in questione e desideri trovare informazioni di carattere generale su di essa. Il tuo primo impulso, se si considera che si sta utilizzando un computer in questo momento, sarebbe probabilmente di inserire in Google il nome della zona. Allora dì a QGIS di farlo automaticamente per te!

  • Aprire la tabella attributi per il layer landuse.

Userai il campo :kbd: name per ciascuna delle nostre aree dell’uso del suolo per la ricerca di Google.

  • Chiudi la tabella attributi

  • Torna a Azioni nella finestra Proprietà vettore.

  • Nel campo Proprietà azioni ‣ Nome, scrivi Google search.

Cosa fare dopo varia a seconda del sistema operativo:

6.4.4.1. Windows

  • Sotto: guilabel:Tipo, scegli Apri. Questo dirà a Windows di aprire un indirizzo Internet nel browser predefinito, ad esempio Internet Explorer.

6.4.4.2. Ubuntu Linux

  • Sotto: guilabel:Azione, scrivi xdg-open. Questo dirà a Ubuntu di aprire un indirizzo Internet nel browser predefinito, come Chrome o Firefox.

6.4.4.3. MacOS

  • Sotto: guilabel:Azione, scrivi open. Questo dirà a MacOs di aprire un indirizzo Internet nel browser predefinito, come Safari.

6.4.4.4. Continua a scrivere il comando

Qualunque sia il comando che usasti in precedenza, è necessario dire l’indirizzo Internet. Vuoi usare Google per la ricerca di una frase automaticamente.

Usually when you use Google, you enter your search phrase into the Google Search bar. But in this case, you want your computer to do this for you. The way you tell Google to search for something (if you don’t want to use its search bar directly) is by giving your Internet browser the address http://www.google.com/search?q=SEARCH_PHRASE, where SEARCH_PHRASE is what you want to search for. Since we don’t know what phrase to search for yet, we’ll just enter the first part (without the search phrase).

  • In the Action field, write http://www.google.com/search?q=. Remember to add a space after your initial command before writing this in!

Ora vuoi che QGIS dica al navigatore di indicare a Google di cercare il valore di nome per qualsiasi oggetto su cui potresti cliccare.

  • Selaziona il campo noame.

  • Clicca Inserisci campo:

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

Questo dirà a QGIS di aggiungere la prossima frase.

../../../_images/google_search_entry.png

What this means is that QGIS is going to open the browser and send it to the address http://www.google.com/search?q=[% "name" %]. But [% "name" %] tells QGIS to use the contents of the name field as the phrase to search for.

So if, for example, the landuse area you click on is named Marloth Nature Reserve, then QGIS is going to send the browser to http://www.google.com/search?q=Marloth%20Nature%20Reserve, which will cause your browser to visit Google, which will in turn search for “Marloth Nature Reserve”.

  • Se non l’hai ancora fatto, configura come spiegato sopra.

  • Clicca su Aggiungi alla lilsta azioni. La nuova azione apparirà nella lista seguente.

  • Clicca OK sulla finestra Proprietà vettore dialog.

Ora testa la nuova azione:

  • With the landuse layer active in the Layers list, click on the Run feature action button.
  • Clicca su qualsiasi area di uso del suolo sulla mappa. Il tuo navigator si aprirà e si avvierà automaticamente una ricerca su Google per la città registrata come quella della zona name.

Nota

Se l’azione non funziona, controlla che tutto sia stato inserito correttamente; errori di battitura sono comuni con questo tipo di lavoro!

6.4.5. hard Follow Along: Apri un sito direttamente in QGIS

Sopra, hai visto come aprire una pagina web in un navigatore esterno. Con questo approccio ci sono alcune lacune su eventuali dipendenze sconosciute - avrà l’utente finale il software necessario per eseguire l’azione sul loro sistema? Come hai visto, se non si sa quale sistema operativo che verrà utilizzato, non sisa il tipo di comandi di base per lo stesso tipo di azione. Con alcune versioni del sistema operativo, i comandi per aprire il navigatore potrebbero non funzionare affatto. Questo potrebbe essere un problema insormontabile.

Tuttavia, QGIS usa l’incredibilmente potente e versatile libreria Qt4. Inoltre, le azioni QGIS può essere arbitrario, tokennizate (cioè con informazioni variabili in base al contenuto di un campo di attributo) comandi Python!

Ora vedrai come utilizzare un’azione python per mostrare un sito. E’ la stessa idea per l’apertura di un sito in un navigatore esterno, ma non richiede nessunnavigatore sul sistema dell’utente in quanto utilizza la classe Qt4 QWebView (che è un widget basato su HTML WebKit) per visualizzare il contenuto di una finestra.

Invece di Google, usa Wikipedia. Così l’URL da richiedere sarà simile a questa:

http://wikipedia.org/wiki/SEARCH_PHRASE

Per creare l’azione sul layer

  • Apri la finestra Proprietà vettore e vai sulla scheda Azioni.

  • Configura una nuova azione usando le seguenti proprietà:

    • Tipo: Python

    • Nome: Wikipedia

    • Action (all on one line): from PyQt4.QtCore import QUrl; from PyQt4.QtWebKit import QWebView;  myWV = QWebView(None); myWV.load(QUrl('http://wikipedia.org/wiki/[% "name" %]')); myWV.show()
../../../_images/python_action_example.png

Ci sono un paio di cose da dire:

  • Tutto il codice Python è in una sola riga con punti e virgola che separano i comandi (al posto di a capo)

  • [% "nome" %] sarà sostituito dal valore di attributo reale quando viene richiamato l’azione (come prima).

  • Il codice crea semplicemente una nuova istanza QWebView, imposta l’URL, e quindi chiam show() su di esso per renderlo visibile come una finestra sul desktop dell’utente.

Nota che questo è un esempio un po ‘forzato’. Python lavora con indentazione semanticamente significante, così separare le cose con un punto e virgola non è il modo migliore per scriverlo. Così, nel mondo reale, devi essere più propenso a importare la logica da un modulo Python e quindi chiamare una funzione con un attributo campo come parametro.

Potresti ugualmente utilizzare il metodo per visualizzare un’immagine senza richiedere che l’utente abbia un particolare visualizzatore di immagini sul suo sistema.

  • Prova a usare i metodi descritti in precedenza per caricare una pagina di Wikipedia utilizzando l’azione Wikipedia appena creata.

6.4.6. In Conclusion

Le azioni consentono di dare alla tua carta funzionalità extra, utile per l’utente finale che vede la stessa mappa in QGIS. A causa del fatto che è possibile utilizzare i comandi della shell per qualsiasi sistema operativo, così come Python, ci sono pochi limiti delle funzioni che potresti incorporare!

6.4.7. What’s Next?

Useremo il: kbd: name campo per ciascuna delle nostre aree dell’uso del suolo per la ricerca di Google.