Utöka GIS med Python – Del 2

Igår skapade jag ett Pythonskript som tog ett antal argument och använde gdal_translate för att skära upp en stor rasterbild i mindre bitar.

Idag tänkte jag bygga in skriptet i QGIS så att det blir lättare att använda nästa gång.

Det blir en del modifiering av skriptet men i huvudsak så kommer jag att arbeta i QGIS.

I morgon avslutar jag denna serien med att göra samma sak i ArcMap.

Skärmbild från 2016-03-30 12:24:52

I verktygslådan för geobearbetning så finns det en ”Skript” kategori som innehåller skapade skript och några verktyg.

Här kan man välja att skapa ett nytt skript, eller lägga till ett skript från fil. Jag har här lagt till gårdagens skript från fil och sedan högerklickat på det och valt att redigera, men det går lika bra att skapa ett nytt och skriva eller kopiera in koden och sedan spara filen.

Just nu så går det att köra skriptet med ett dubbelklick i QGIS, men det kommer inte att hända mycket.

Skärmbild från 2016-03-30 12:29:15

Det öppnas en dialog men inga parametrar finns med och när man kör processen så blir det felmeddelande.

För att fixa detta så behöver vi definiera vilka argument som processen tar.

Skärmbild från 2016-03-30 17:07:15

Det enda som egentligen behövs är att ändra hur argumenten tas emot. Det dubbla ## tecknet är en signal till QGIS att här kommer ett argument. Det följs av namnet på argumentet, vad det är för typ och eventuellt ytterligare ett argument. Det går att läsa mer om detta på QGIS webbsida.

Det är ganska långa variabler efter ##, men det är för att dessa också blir rubriker i dialogrutan. Sedan kan jag tilldela de gamla variablerna de nya värdena, så är det klart.

Skriptet behöver ändras på en plats till längre ner där ”sys.argv[1]” används. Där skriver man i stället ”r_raw”.

Skärmbild från 2016-03-30 17:09:58

Kör man processen nu så skapas dialogrutan ovan automatiskt, och här skulle vi kunna vara klara. Processen går att köra som den är, eller baka in i en modell tillsammans med andra processer, utan att man för den skull märker att detta inte är en inbyggd process.

Den är lite begränsad i dessa fall, då den inte läser eller skriver till lager i QGIS, utan enbart kör mot filer och kataloger i filsystemet. Med ytterligare vidareutveckling så går detta dock att fixa om man vill.

Jag kan dock tänka mig att man bakar ihop denna process med en process för att bygga virtuella rasterlager i en modell, för att på så sätt lägga till de resulterande klippta filerna i QGIS.

Det går att göra lite mera för att förenkla och förbättra. Vill man ge algoritmen ett namn så lägger man till ##Algoritm-namn=name. Vill man att processen skall placeras i en speciell grupp så anger man ##Gruppnamn=group. För all kod ovan så är det säkrast att undvika å, ä och ö. Jag har generellt dålig erfarenhet av dessa tecken i QGIS processer, men det kanske blir bättre så småningom.

Vill man skicka meddelande till användaren om hur processen går så kan man lägga till kod för detta också.

 

Skärmbild från 2016-03-30 17:33:43

Färdig kod och hjälptext

 

Det går att redigera en hjälptext som sparas i den färdiga processen som en *.py.help fil på samma plats där skriptet lagras. När man skapar ett nytt eller importerar ett skript så hamnar dessa i användarens hemmakatalog på den dolda sökvägen .qgis2/processing/scripts. Vill man kopiera och dela med sig av sina egna processer så är det dessa filer (och denna sökväg) som gäller.

Nästa gång jag har en 42 Gb stor satellitbild så kan jag peka ut den med detta verktyg och få den uppklippt i mindre delar, innan jag bestämmer mig för vad jag skall göra med resultatet.

Då blir det samma sak imorgon, fast med ArcGIS.

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: