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.

  1. Öppna dialogrutan Layer Properties.

  2. Klicka på fliken Fields.

  3. Växla redigeringsläge:

    ../../../_images/toggle_editing_mode.png
  4. Lägg till en ny kolumn:

    ../../../_images/add_new_column.png
  5. Ange värdena nedan:

    ../../../_images/column_settings.png
  6. När fältet har skapats går du till fliken Attributes Form och väljer fältet image.

  7. Ställ in Widget TypeAttachment:

    ../../../_images/select_file_name.png
  8. Klicka på OK i dialogrutan Layer Properties.

  9. 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:

    ../../../_images/school_property_no_image.png
  10. Klicka på bläddringsknappen ( bredvid fältet image).

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

  12. Klicka på OK.

  13. Associera alla bilder med rätt funktioner med hjälp av den här metoden.

  14. Spara dina ändringar och avsluta redigeringsläget.

5.4.2. ★☆☆ Följ med: Skapa en åtgärd

  1. Öppna fliken Actions för skiktet school_property och klicka på knappen symbologyAdd Lägg till en ny åtgärd.

    ../../../_images/layer_actions.png
  2. I dialogrutan Add New Action skriver du in orden Show Image i fältet Description:

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

    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 skriv display för att använda ImageMagick. Kom ihåg att sätta ett mellanslag efter kommandot!

    • macOS

      1. Klicka på rullgardinsmenyn Type och välj Mac.

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

  3. Välj image från listan:

    ../../../_images/select_image.png
  4. Klicka på knappen Insert field. QGIS kommer att lägga till frasen [% "image" %] i fältet Action Text.

  5. Klicka på knappen OK för att stänga dialogrutan Add New Action

  6. Klicka på OK för att stänga dialogrutan Layer Properties

Nu är det dags att testa den nya åtgärden:

  1. Klicka på lagret school_property i panelen Layers så att det blir markerat.

  2. Hitta knappen actionRun Run feature action (i verktygsfältet Attributes Toolbar).

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

    ../../../_images/run_feature_action_select.png
  4. Klicka på själva knappen för att aktivera verktyget.

  5. 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!

  1. Ö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.

  2. Stäng attributtabellen.

  3. Gå tillbaka till Actions i Layer Properties.

  4. Klicka på knappen Create Default Actions för att lägga till ett antal fördefinierade åtgärder.

  5. Ta bort alla åtgärder utom åtgärden Öppna URL med det korta namnet Sök på webben med hjälp av knappen symbologyRemove Ta bort den valda åtgärden nedan.

  6. Dubbelklicka på den återstående åtgärden för att redigera den

  7. Ändra Description till Google Search, och ta bort innehållet i fältet Short Name.

  8. 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är SEARCH_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).

  9. 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å.

  10. Välj fältet name.

  11. Klicka på Insert-knappen:

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

    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ältet name 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”.

  12. Om du inte redan har gjort det, ställ in allt enligt beskrivningen ovan.

  13. Klicka på knappen OK för att stänga dialogrutan Add New Action

  14. Klicka på OK för att stänga dialogrutan Layer Properties

Nu ska vi testa den nya åtgärden.

  1. Med lagret landuse aktivt i panelen Layers klickar du på nedåtpilen till höger om knappen actionRun Run feature action och väljer den enda åtgärd (Google Search) som definierats för detta lager.

  2. 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:

  1. Öppna dialogrutan Layer Properties och gå till fliken Actions.

  2. 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()
      
    ../../../_images/python_action_example.png

    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 sedan show() 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.

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