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:
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`):
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.
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).
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.
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:
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
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.