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.
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à.
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:
Aggiungi una nuova colonna
Inserisci i seguenti valori:
Dopo che il campo è stato creato, clicca su :guilabel: Modifica testo accanto al nuovo campo.
Posiziona su Nome file:
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:
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.
In questa maniera associa tutte le immagini con gli oggetti corretti.
Salva le modifiche ed esci da modalità modifica.
Apri la scheda Azioni per il layer school_property.
Nel pannello Proprietà azioni, inserisci le parole: kbd:Show Image nel campo Nome:
Cosa fare dopo varia a seconda del sistema operativo:
Clicca Type sulla tendina e scegli Apri.
Sotto Azione, scrivi eog per Gnome Image Viewer, o scrivi display‘ per usare ImageMagick . Ricordati di inserire uno spazio dopo il comando!
Clicca Type sulla tendina e scegli Mac.
Sotto Azione, scrivi apri . Ricordati di inserire uno spazio dopo 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.
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:
Clicca sul layer school_property del Layer panel per evidenziarlo.
Trova l’icona guilabel:Run feature action (sulla stessa barra degli strumenti, di :guilabel:` Apri tabella attributi`):
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.
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:
Sotto: guilabel:Tipo, scegli Apri. Questo dirà a Windows di aprire un indirizzo Internet nel browser predefinito, ad esempio Internet Explorer.
Sotto: guilabel:Azione, scrivi xdg-open. Questo dirà a Ubuntu di aprire un indirizzo Internet nel browser predefinito, come Chrome o Firefox.
Sotto: guilabel:Azione, scrivi open. Questo dirà a MacOs di aprire un indirizzo Internet nel browser predefinito, come Safari.
Qualunque sia il comando che usasti in precedenza, è necessario dire l’indirizzo Internet. Vuoi usare Google per la ricerca di una frase automaticamente.
Di solito quando usi Google, inserisi la frase di ricerca nella barra di ricerca di Google. Ma in questo caso, vuoi che il tuo computer faccia questo per te. Il modo in cui dici a Google per la ricerca di qualcosa (se non vuoi utilizzare direttamente la barra di ricerca) è dare al navigatore Internet l’indirizzo http://www.google.com/search?q=SEARCH_PHRASE, dove SEARCH_PHRASE è ciò che desideri cercare. Dal momento che non sai ancora quale frase cercare, limitati a immettere la prima parte (senza la frase di ricerca).
Nel campo Azione scrivi http://www.google.com/search?q=. Ricordarti di aggiungere uno spazio dopo il tuo comando iniziale prima di scriverci questo!
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:
Questo dirà a QGIS di aggiungere la prossima frase.
Ciò significa che QGIS sta per aprire il navigatore a cui manderà l’indirizzo http://www.google.com/search?q=[% "nome" %]. But [% "nome" %] dice a QGIS di utilizzare il contenuto del campo nome come la frase da cercare.
Quindi, se, per esempio, l’area di uso del suolo che clicchi è nominata :kbd: Marloth Nature Reserve, allora QGISmanderà al navigatore http://www.google.com/search?q=Marloth%20Nature%20Reserve, che attiverà Google, che a sua volta cercherà “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:
Con il layer landuse attivo nella Layer panel, clicca sul pulsante Run feature action.
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!
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
Azione (tutto in una riga): from PyQt4.QtCore import QUrl; from PyQt4.QtWebKit import QWebView; myWV = QWebView(None); myWV.load(QUrl('http://wikipedia.org/wiki/[% "nome" %]')); myWV.show()
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.
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!
Useremo il: kbd: name campo per ciascuna delle nostre aree dell’uso del suolo per la ricerca di Google.