Bygga modeller i QGIS

Efter en fråga på min YouTube kanal så tänkte jag utveckla mitt svar något här.

Vad det handlar om är vad man kan göra för att förenkla befintliga processer i QGIS, speciellt sådant man gör upprepade gånger. Modeller i QGIS gör det möjligt att kombinera processverktyg och skript på ett väldigt avancerat sätt, men det behöver inte vara speciellt krångligt.

Exemplet jag tänker ta upp är ganska enkelt i sig, men man kan säkert tänka sig betydligt mycket mer avancerade modeller, och principen fungerar i de flesta fallen.

Frågan handlar om hur man tar reda på vilka objekt i valfritt lager, som finns inom ett angivet avstånd från objekt i ett annat lager.

skarmbild_2016-10-08_09-28-16

Håller man på med GIS är detta inget konstigt. Skapa en buffert med det angivna avståndet runt objekten i ett av lagren, och skapa en rumslig fråga med buffertlagret och det andra objektlagret där svaret är de objekt som överlappar.

Det är däremot ett antal steg i processen för att det skall fungera.

  1. Skapa buffert runt linjen på angivet avstånd
    1. Starta verktyget
    2. Välj lagret
    3. Skriv in avståndet
  2. Gör ett rumsligt urval baserat på bufferten för att välja ut punkter
    1. Starta ett nytt verktyg (plugin rumsliga frågor)
    2. Välj rätt lager att välja från
    3. Peka ut buffertlagret
    4. Välj rätt fråga
    5. Kör urvalet

Det ovanstående är som sagt inte så omfattande, men som princip och exempel fungerar det.

För det första så behöver vi ta reda på vilka variabler som skall gå att bestämma. I det här fallet är det två vektorlager och ett avstånd.

För det andra så behöver vi identifiera de processer som skall köras. Vilket här betyder en buffert och ett urval.

Börja med att starta modellbyggaren (ctrl-alt-m eller i menyn). Där lägger man först till de tre indatatyperna. Två vektorlager och ett tal.

skarmbild_2016-10-08_10-11-19

Jag har inte hittat ett sätt att sortera ordningen i den blivande dialogen och i bland så spelar ordningen roll rent estetiskt. Men man får helt enkelt vara tydlig hur man namnger sina parametrar.

Det ”parameternamn” som skrivs in blir rubrik för det kommande formuläret.

Efter indata så skall algoritmer läggas till.

skarmbild_2016-10-08_10-09-11

När man har hittat de algoritmer man vill använda, vilket inte är så enkelt då det kan finnas flera algoritmer från olika bibliotek som gör liknande saker, så lägger man till dessa i modellen. I dessa dialoger så sätter man antingen ”fasta” värden eller ”namn” på indata-parametrar.

Om man skapar en modell så kan man sedan i en del fall välja att skapa ett utdatalager, vilket inte är svårare än att fylla i ett namn i utdatafältet. I den här modellen är utdata ett ”urval” från ett av vektorlagren, så något utdatalager behövs inte.

Innan modellen sparas så skall man ge den ett namn och en grupp. Detta för att det skall bli lite enklare att hitta i verktygslådan. Om man vill kan man även fylla i ett formulär med modellhjälp.

Modeller sparas i ”.qgis/processing/models/” och får filtillägget *.model. Dessutom så visas den i ”verktygslådan” för processverktyg under rubriken ”Modeller”.

skarmbild_2016-10-08_10-16-27

Nu är processen mer renodlad och framför allt samlad i en dialogruta, där det enda som kan fyllas i är det som ska fyllas i.

Skapar man sedan en smart modell som man vill dela med sig av så är det bara att ta *.model filen och skicka den vidare. För att lägga till en model-fil så använder man verktyget ”Add model from file” som också finns i verktygslådan.

Vill du se det som beskrivs här ovan i rörlig bild så finns den på YouTube: https://www.youtube.com/watch?v=nTyuMndBkXk

Annonser

Taggar:

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: