Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
5.4. Lektion: Åtgärder
Nu när du har sett en standardåtgärd i den föregående lektionen är det dags att definiera dina egna åtgärder.
En åtgärd är något som händer när du klickar på en funktion. Det kan ge många extra funktioner till din karta, t.ex. att du kan hämta ytterligare information om ett objekt. Genom att tilldela åtgärder kan du ge din karta en helt ny dimension!
Målet med den här lektionen: Att lära dig hur du lägger till anpassade åtgärder.
I den här lektionen kommer du att använda skiktet school_property som du skapade tidigare. Exempeldata innehåller foton av var och en av de tre fastigheter som du digitaliserade. Vad vi ska göra är att associera varje fastighet med dess bild. Sedan ska vi skapa en åtgärd som öppnar bilden för en fastighet när du klickar på fastigheten.
5.4.1. ★☆☆ Följ med: Lägg till ett fält för bilder
Lagret school_property
har ännu inget sätt att associera en bild med en fastighet. Först ska vi skapa ett fält för detta ändamål.
Öppna dialogrutan Layer Properties.
Klicka på fliken Fields.
Växla redigeringsläge:
Lägg till en ny kolumn:
Ange värdena nedan:
När fältet har skapats går du till fliken Attributes Form och väljer fältet
image
.Ställ in Widget Type på Attachment:
Klicka på OK i dialogrutan Layer Properties.
Använd verktyget Identify för att klicka på en av de tre objekten i skiktet school_property.
Eftersom du fortfarande befinner dig i redigeringsläge bör dialogen vara aktiv och se ut så här:
Klicka på bläddringsknappen (… bredvid fältet image).
Välj sökvägen för din bild. Bilderna finns i :file:``exercise_data/school_property_photos/` och har samma namn som de funktioner de ska associeras med.
Klicka på OK.
Associera alla bilder med rätt funktioner med hjälp av den här metoden.
Spara dina ändringar och avsluta redigeringsläget.
5.4.2. ★☆☆ Följ med: Skapa en åtgärd
Öppna fliken Actions för skiktet school_property och klicka på knappen
Lägg till en ny åtgärd.
I dialogrutan Add New Action skriver du in orden
Show Image
i fältet Description:Vad du ska göra härnäst varierar beroende på ditt operativsystem, så välj lämplig väg att följa:
Windows
Klicka på rullgardinsmenyn Type och välj Open.
Ubuntu Linux
Under Action, skriv
eog
för Gnome Image Viewer, eller skrivdisplay
för att använda ImageMagick. Kom ihåg att sätta ett mellanslag efter kommandot!macOS
Klicka på rullgardinsmenyn Type och välj Mac.
Under Action, skriv
open
. Kom ihåg att sätta ett mellanslag efter kommandot!
Nu kan du fortsätta att skriva kommandot.
Du vill öppna bilden, och QGIS vet var bilden finns. Allt den behöver göra är att tala om för Action var bilden finns.
Välj image från listan:
Klicka på knappen Insert field. QGIS kommer att lägga till frasen
[% "image" %]
i fältet Action Text.Klicka på knappen OK för att stänga dialogrutan Add New Action
Klicka på OK för att stänga dialogrutan Layer Properties
Nu är det dags att testa den nya åtgärden:
Klicka på lagret school_property i panelen Layers så att det blir markerat.
Hitta knappen
Run feature action (i verktygsfältet Attributes Toolbar).
Klicka på nedåtpilen till höger om den här knappen. Hittills har endast en åtgärd definierats för detta lager, nämligen den som du just skapade.
Klicka på själva knappen för att aktivera verktyget.
Med hjälp av detta verktyg klickar du på någon av de tre skolegenskaperna.
Bilden för den fastigheten bör öppnas.
5.4.3. ★★☆ Följ med: Söka på Internet
Låt oss säga att vi tittar på kartan och vill veta mer om det område som en gård ligger i. Anta att du inte vet något om området i fråga och vill hitta allmän information om det. Din första impuls, med tanke på att du använder en dator just nu, skulle förmodligen vara att googla områdets namn. Så låt oss säga till QGIS att göra det automatiskt åt oss!
Öppna attributtabellen för skiktet landuse.
Vi kommer att använda fältet
namn
för vart och ett av våra markanvändningsområden för att söka på Google.Stäng attributtabellen.
Gå tillbaka till Actions i Layer Properties.
Klicka på knappen Create Default Actions för att lägga till ett antal fördefinierade åtgärder.
Ta bort alla åtgärder utom åtgärden Öppna URL med det korta namnet Sök på webben med hjälp av knappen
Ta bort den valda åtgärden nedan.
Dubbelklicka på den återstående åtgärden för att redigera den
Ändra Description till
Google Search
, och ta bort innehållet i fältet Short Name.Kontrollera att Canvas finns med bland de kontrollerade Action scopes.
Vad du ska göra härnäst varierar beroende på ditt operativsystem, så välj lämplig väg att följa:
Windows
Under Type väljer du Open. Detta kommer att tala om för Windows att öppna en Internetadress i din standardwebbläsare, till exempel Internet Explorer.
Ubuntu Linux
Under Action, skriv
xdg-open
. Detta kommer att tala om för Ubuntu att öppna en Internetadress i din standardwebbläsare, t.ex. Chrome eller Firefox.macOS
Under Action skriver du
open
. Detta kommer att tala om för macOS att öppna en Internetadress i din standardwebbläsare, till exempel Safari.
Nu kan du fortsätta att skriva kommandot
Oavsett vilket kommando du använde ovan måste du tala om vilken Internetadress som ska öppnas härnäst. Du vill att den ska besöka Google och söka efter en fras automatiskt.
Vanligtvis när du använder Google skriver du in din sökfras i Googles sökfält. Men i det här fallet vill du att din dator ska göra det åt dig. Det sätt du säger till Google att söka efter något (om du inte vill använda sökfältet direkt) är att ge din webbläsare adressen
https://www.google.com/search?q=SEARCH_PHRASE
, därSEARCH_PHRASE
är det du vill söka efter. Eftersom vi inte vet vilken fras vi ska söka efter ännu, kommer vi bara att ange den första delen (utan sökfrasen).I fältet Action skriver du
https://www.google.com/search?q=
. Kom ihåg att lägga till ett mellanslag efter ditt första kommando innan du skriver in detta!Nu vill du att QGIS ska säga till webbläsaren att säga till Google att söka efter värdet på
name
för alla funktioner som du kan klicka på.Välj fältet name.
Klicka på Insert-knappen:
Detta innebär att QGIS kommer att öppna webbläsaren och skicka den till adressen
https://www.google.com/search?q=[% "name" %]
.[% "name" %]
säger till QGIS att använda innehållet i fältetname
som den fras som ska sökas efter.Om det markanvändningsområde som du klickar på till exempel heter ”Marloth Nature Reserve”, kommer QGIS att skicka webbläsaren till ”https://www.google.com/search?q=Marloth%20Nature%20Reserve”, vilket leder till att webbläsaren besöker Google, som i sin tur söker efter ”Marloth Nature Reserve”.
Om du inte redan har gjort det, ställ in allt enligt beskrivningen ovan.
Klicka på knappen OK för att stänga dialogrutan Add New Action
Klicka på OK för att stänga dialogrutan Layer Properties
Nu ska vi testa den nya åtgärden.
Med lagret landuse aktivt i panelen Layers klickar du på nedåtpilen till höger om knappen
Run feature action och väljer den enda åtgärd (
Google Search
) som definierats för detta lager.Klicka på ett markanvändningsområde som du kan se på kartan. Din webbläsare öppnas nu och startar en Google-sökning efter den plats som är registrerad som områdets ”namn”-värde.
Observera
Om din åtgärd inte fungerar, kontrollera att allt har matats in korrekt; skrivfel är vanliga i den här typen av arbete!
5.4.4. ★★★★ Följ med: Öppna en webbsida direkt i QGIS
Ovan har du sett hur du öppnar en webbsida i en extern webbläsare. Det finns vissa brister med det här tillvägagångssättet eftersom det lägger till ett okänt beroende - kommer slutanvändaren att ha den programvara som krävs för att utföra åtgärden på sitt system? Som du har sett har de inte nödvändigtvis ens samma typ av baskommando för samma typ av åtgärd, om du inte vet vilket operativsystem de kommer att använda. Med vissa OS-versioner kanske ovanstående kommandon för att öppna webbläsaren inte fungerar alls. Detta kan vara ett oöverstigligt problem.
QGIS bygger dock på det otroligt kraftfulla och mångsidiga Qt-biblioteket. Dessutom kan QGIS-åtgärder vara godtyckliga, tokeniserade (dvs. använda variabelinformation baserad på innehållet i ett fältattribut) Python-kommandon!
Nu ska du få se hur man använder en python-action för att visa en webbsida. Det är samma generella idé som att öppna en webbplats i en extern webbläsare, men det kräver ingen webbläsare på användarens system eftersom den använder Qt QWebView-klassen (som är en webkit-baserad html-widget) för att visa innehållet i ett popup-fönster.
Låt oss använda Wikipedia den här gången. Så den URL du begär kommer att se ut så här:
https://wikipedia.org/wiki/SEARCH_PHRASE
För att skapa en lageråtgärd:
Öppna dialogrutan Layer Properties och gå till fliken Actions.
Skapa en ny åtgärd med följande egenskaper för åtgärden:
Typ:
Python
Beskrivning:
Wikipedia
Scope:
Funktion
,Canvas
Aktionstext:
from qgis.PyQt.QtCore import QUrl from qgis.PyQt.QtWebKitWidgets import QWebView myWV = QWebView(None) myWV.load(QUrl('https://wikipedia.org/wiki/[%name%]')) myWV.show()
Det är ett par saker som händer här:
[%name%]
kommer att ersättas av det faktiska attributvärdet när åtgärden anropas (som tidigare).Koden skapar helt enkelt en ny
QWebView
-instans, anger dess URL och anropar sedanshow()
på den för att göra den synlig som ett fönster på användarens skrivbord.
Du kan också använda den här metoden för att visa en bild utan att kräva att användarna har en viss bildvisare på sitt system.
Försök att använda de metoder som beskrivs ovan för att ladda en Wikipedia-sida med hjälp av den Wikipedia-åtgärd som du just skapade.
5.4.5. Sammanfattningsvis
Med hjälp av åtgärder kan du ge din karta extra funktionalitet som är användbar för slutanvändaren som tittar på samma karta i QGIS. Eftersom de processer som anropas kan vara shell-kommandon för alla operativsystem, liksom Python, är det bara fantasin som sätter gränser för vilka funktioner du kan lägga till!
5.4.6. Vad händer härnäst?
Nu när du har skapat alla typer av vektordata ska du lära dig hur du analyserar data för att lösa problem. Det är ämnet för nästa modul.