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

6.4. Lesson: Acţiuni

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.

6.4.1. basic Follow Along: Deschiderea unei Imagini

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.

6.4.2. basic Follow Along: Adăugarea unui Câmp pentru Imagini

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:

../../../_images/toggle_editing_mode.png
  • Adăugați o nouă coloană:

../../../_images/add_new_column.png
  • Introduceți valorile de mai jos:

../../../_images/column_settings.png
  • 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:

../../../_images/select_file_name.png
  • 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:

../../../_images/school_property_no_image.png
  • 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.

6.4.3. basic Follow Along: Crearea unei Acțiuni

  • Deschideți formularul Actions pentru stratul school_property.

  • În panoul Action properties, introduceți cuvintele Show Image în dreptul câmpului Nume:

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

Ceea ce veți face în continuare diferă în funcție de sistemul de operare, asa că alegeți un curs adecvat:

6.4.3.1. Windows

  • Dați clic pe meniul vertical Type și alegeți Open.

6.4.3.2. Ubuntu Linux

  • Î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ă!

6.4.3.3. MacOS

  • 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ă!

6.4.3.4. Continuați scrierea comenzilor

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ă:

../../../_images/select_image.png
  • 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:

  • Clic pe stratul school_property în Layers list astfel încât acesta să fie evidențiat.

  • Găsiți butonul Run feature action (în aceeași bară de instrumente cu butonul Open Attribute Table):

    actionRun

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

6.4.4. moderate Follow Along: Căutarea pe Internet

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:

6.4.4.1. Windows

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

6.4.4.2. Ubuntu Linux

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

6.4.4.3. MacOS

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

6.4.4.4. Continuați scrierea comenzilor

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.

În mod uzual când folosiți Google introduceți termenii de căutare în Bara de Căutare Google. Dar în acest caz, calculatorul trebuie să facă asta. Modul de a-i spune lui Google să caute ceva (dacă nu vreți să folosiți bara lui de căutare în mod direct) este prin a-i transmite browser-ului tău Internet adresa http://www.google.com/search?q=SEARCH_PHRASE, unde SEARCH_PHRASE este ceea ce vreți să căutați. De vreme ce nu știm încă ce termen de căutare dorim, o să introducem doar prima parte (fără termenul de căutare).

  • În câmpul Acțiune, scrieți http://www.google.com/search?q=. Amintiți-vă să adăugați un spațiu după comanda inițială, înainte de a introduce link-ul!

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:

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

Aceasta va spune QGIS să adauge fraza următoare:

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

Asta înseamnă că QGIS va deschide browser-ul și îl va trimite la adresa http://www.google.com/search?q=[% "name" %]. Dar [% "name" %] îi spune lui QGIS să folosească conținutul câmpului name ca termen de căutare.

Deci, de exemplu, dacă zona pe care dați clic se numește Marloth Nature Reserve, atunci QGIS va trimite browserul la http://www.google.com/search?q=Marloth%20Nature%20Reserve, ceea ce va face ca browerul să acceseze Google, care va căuta la rândul lui “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.

  • Cu stratul landuse activ în Layers list, dați clic pe butonul Run feature action.

  • 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!

6.4.5. hard Follow Along: Deschiderea unei Pagini Web Direct din QGIS

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:

    • Type: Python
    • Name: Wikipedia
    • Acțiunea (toate pe o singură linie): 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

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

6.4.6. In Conclusion

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!

6.4.7. What’s Next?

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.