Acum că am văzut o acțiune implicită în lecția precedentă, este timpul să definiți propriile acțiuni. O acțiune este ceva ce se întâmplă când dați clic pe o entitate. Puteți adăuga funcționalități extinse la hartă, permițând de exemplu colectarea de informații adiționale pentru un obiect. Asignarea acțiunilor poate adăuga o noua dimensiune hărții!
Scopul acestei lecții: De a afla cum să adăugați acțiuni particularizate.
Utilizați stratul school_property creeat anterior. Materialele cursului includ fotografii pentru fiecare din cele trei propietăți digitalizate. În continuare vom asocia fiecare propietate cu imaginea ei. Vom creea după aceea o acțiune care va deschide imaginea propietății la clic pe propietate.
Stratul school_property încă nu are nici o modalitate de a asocia o imagine cu o proprietate. În primul rând, vom crea un câmp în acest scop.
Deschideți dialogul Layer Properties.
Dați clic pe fila Fields.
Comutați în modul de editare:
Adăugați o nouă coloană:
Introduceți valorile de mai jos:
După ce a fost creat câmpul, faceți clic pe butonul Line edit de lângă noul câmp.
Setați-l pentru un Nume de fișier:
Clic OK în dialogul Layer Properties.
Folosiți instrumentul Identify pentru a faceți clic pe una dintre cele trei entități din stratul school_property.
Din moment ce sunteți încă în modul de editare, dialogul ar trebui să fie activ și va arăta astfel:
Clic pe butonul de răsfoire (... de lângă câmpul imagine).
Selectați calea pentru imagini. Imaginile se află în exercise_data/school_property_photos/ și sunt denumite la fel ca și caracteristicile cu care trebuie asociate.
Clic pe OK
Asociați toate imaginile cu entitățile corecte folosind această metodă.
Salvați modificările și ieșiți din modul de editare.
Deschideți formularul Actions pentru stratul school_property.
În panoul Action properties, introduceți cuvintele Show Image în dreptul câmpului Nume:
Ceea ce veți face în continuare diferă în funcție de sistemul de operare, asa că alegeți un curs adecvat:
Dați clic pe meniul vertical Type și alegeți Open.
În câmpul Action scrieți eog pentru Gnome Image Viewer, sau display pentru a utiliza ImageMagick. Nu uitați să puneți un spațiu după comandă!
Clic pe caseta Type, apoi alegeți Mac.
Sub Acțiuni, scrieți open. Rețineți că trebuie să puneți un spațiu după comandă!
Vreți să deschideți imaginea, si QGIS știe unde se află. Tot ce rămâne de făcut este să îi spuneți Action unde se află imaginea.
Selectați image din listă:
Dați clic pe butonul Insert field. QGIS va adăuga fraza [% "image" %] în câmpul Action.
Clic pe butonul Add to action list.
Clic OK în dialogul Layer Properties.
Acum vom testa noua Acțiune:
Click on the school_property layer in the Layers list so that it is highlighted.
Găsiți butonul Run feature action (în aceeași bară de instrumente cu butonul Open Attribute Table):
Clic pe săgeata în jos la dreapta acestui buton. Există o singură acțiune definită în acest strat, cea pe care tocmai ați creat-o.
Apăsați butonul pentru a activa instrumentul.
Folosind acest instrument, faceți clic pe oricare din cele trei proprietăți școlare.
Imaginea pentru acea proprietate se va deschide acum.
Să spunem că ne uităm la hartă și vrem să știm mai multe despre zona în care se află o fermă. Presupunem că nu știți nimic despre zona respectivă și că vreți să găsești informații generale despre ea. Primul impuls, știind că foloseșiți un calculator în acest moment, ar fi probabil să căutați pe Google numele zonei. Deci, să îi spunem lui QGIS să facă asta în mod automat!
Deschideți tabela de atribute a stratului landuse.
Vom folosi câmpul :kbd:`name`pentru fiecare dintre zonele care vor fi căutate în Google.
Închideți tabelul de atribute.
Mergeți înapoi la Acțiuni în Proprietățile Stratului.
În câmpul Action Properties ‣ Name, scrieți Google Search.
Ceea ce veți face în continuare diferă în funcție de sistemul de operare, asa că alegeți un curs adecvat:
Sub Tip, alegeți Deschidere. Acest lucru va spune Windows-ului să deschidă o adresă de Internet din browser-ul implicit, cum ar fi Internet Explorer.
Sub Action, alegeți xdg-open. Acest lucru va spune Windows-ului să deschidă o adresă de Internet din browser-ul implicit, cum ar fi Chrome sau Firefox.
Sub Action, alegeți open. Acest lucru va spune MacOS-ului să deschidă o adresă de Internet din browser-ul implicit, cum ar fi Safari.
Orice comandă ați folosit mai sus, trebuie să îi spuneți ce adresă să deschidă în continuare. Vreți să accesați Google și să căutați automat o expresie.
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).
Acum vreți ca browser-ul QGIS să caute în Google valoarea name pentru orice entitate pe care ați putea face clic.
Selectați câmpul name.
Clic pe Inserare câmp:
Aceasta va spune QGIS să adauge fraza următoare:
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”.
Dacă nu ați făcut deja acest lucru, setați totul așa cum s-a explicat mai sus.
Clic pe butonul Add to action list. Noua acțiune va apărea în lista de mai sus.
Clic OK în dialogul Layer Properties.
Acum vom testa noua versiune.
Clic pe orice zonă vizibilă pe hartă. Browserul se va deschide și va porni automat o căutare Google pentru orașul care este înregistrat în valoarea name pentru acea zonă.
Note
În cazul în care acțiunea nu funcționează, verificați dacă totul a fost introdus corect; erorile de introducere sunt comune pentru această activitate!
Mai us, am văzut cum se poate deschide o pagină într-un browser extern. Există câteva dezavantaje pentru această abordare, și anume că adaugă o dependență necunoscută – va avea utilizatorul final în sistem software-ul necesar pentru a executa acțiunea? După cum am văzut, nu este nepărat să aibă aceeași comandă de bază pentru aceeași acțiune, dacă nu stim ce sistem de operare vor folosi. Pentru anumite versiuni de sisteme de operare, comenzile de mai sus pentru deschiderea unui browser nu vor funcționa deloc. Aceasta ar putea fi o problemă de neînvins.
Dar QGIS se bazează pe librăria Qt4, care este extrem de puternică și versatilă. De asemenea, acțiunile QGIS pot fi comenzi Python arbitrare, parametrizate (de ex. utilizând informații variabile bazate pe conținutul unui cămp)!
Acum vom vedea cum să utilizăm o acțiune Python pentru a afișa o pagina web. Ideea de bază este aceeași cu a deschide un site într-un browser extern, dar nu necesită un browser pe sistemul utilizatorului deoarece folosește clasa QWebView a Qt4 (care este un widget html bazat pe webkit) pentru a afișa conținutul într-o fereastră pop-up.
În loc de Google, haideți să folosim Wikipedia de această dată. Deci URL-ul pe care îl cereți va arăta astfel:
http://wikipedia.org/wiki/SEARCH_PHRASE
Pentru a crea acțiunea stratului:
Deschideți dialogul Proprietăților Stratului și mergeți la fila Actions.
Setați o nouă acțiune, folosind următoarele proprietăți pentru acțiune:
Aici se întâmplă mai multe lucruri:
Tot codul Python este într-o singură linie, comenzile fiind separate prin punct și virgulă (în loc de linii noi, modul uzual de separare a comenzilor Python).
[% "name" %] va fi înlocuit cu valoarea atribului când se va invoca acțiunea (ca și mai devreme).
Codul creează o nouă instanță QWebView, îi setează URL-ul și apoi apelează show() pentru a o face vizibilă ca o fereastră pe ecranul utilizatorului.
De remarcat este că acesta este un exemplu forțat. Python funcționează cu indentare cu semnificație semantică, deci separarea lucrurilor cu punct și virgulă nu este cea mai bună variantă de scriere. Deci, în aplicațiile reale, ar fi mai plauzibil ca logica să fie importată dintr-un modul Python și apoi să se apeleze o funcție care să primească un cămp ca și parametru.
Ați putea utiliza de asemenea abordarea pentru a afișa o imagine fără a fi nevoie ca utilizatorul să aibă în sistem un anumit vizualizator de imagini.
Încercați să utilizați metodele descrise mai sus pentru a încărca o pagină Wikipedia utilizând acțiunea Wikipedia proaspăt creată.
Acțiunile vă permit să îi dați hărții funcționalități suplimentare, utile pentru utilizatorul final care vizualizează harta în QGIS. Datorită faptului că puteți utiliza comenzii shell pentru orice sistem de operare, și de asemenea puteți utiliza Pyton, nu există limite pentru funcțiile pe care le puteți integra!
Acum că ați completat diverse tipuri de creare date vectoriale, veți învăța cum să analizați aceste date pentru a rezolva probleme. Acesta este subiectul următorului modul.