Publiceret: 5. november 2024 Læsetid: 15 min.
QGIS plugin udvikling – er det noget for dig?
Inden du slår korsets tegn for dig, springer dette blogindlæg over og skynder dig videre til noget, der virker mere relevant for dig – så giv mig lige en chance for at forklare, at det faktisk godt KAN være noget for dig at udvikle egne QGIS plugins!
Hvorfor plugins?
Plugin-udvikling lyder superkompliceret, tænker du måske? Så hvorfor overhovedet overveje at lave egne QGIS plugins?
Fordi det giver dig mulighed for at skræddersy og automatisere funktionalitet, som lynhurtigt kan løse dine opgaver! Og ofte også sikre, at du ikke overser noget i opgaveløsningen. Så du altså ender med en højere datakvalitet!
Lad os se på et par eksempler:
Download og “berigelse” af egne data med de åbne grunddata
Måske sidder du med opgaver, hvor du – indenfor et udvalgt område – skal hente eksterne data og joine disse data på dine egne.
Det kan selvfølgelig gøres med standardfunktionalitet, men det er typisk en lidt omstændelig proces. Det kræver måske login, udvalg af nødvendige data, download, etablering af midlertidige tabeller, join og tilpasning.
Hvis du jævnligt har dette behov, er det derfor en stor fordel for dig at samle det hele i ét enkelt plugin, som sørger for alt nødvendigt!
Det er smart!
Tjek af egne data i forhold til overholdelse af specifikke forudsætninger
Måske sidder du med et datasæt, hvor det er et krav, at en række givne forudsætninger er opfyldt. Det kan eksempelvis være et ledningsnet, som skal hænge topologisk sammen. Samtidig er der fx krav til de indsatte komponenter, som skal overholde bestemte specifikationer i forhold til underliggende ledninger.
Igen kan man jo begynde manuelt at lede efter eventuelle fejl. Men det er tidskrævende. Samtidig er der stor risiko for, at man overser fejl.
De indbyggede topologi-tjek faciliteter kan hjælpe en del af vejen.
Vil du have men den ultimative, sikre og skræddersyede funktion, så må du selv udvikle den.
Fælles for de to nævnte eksempler er, at de faktisk tager udgangspunkt i konkrete situationer, hvor jeg har hjulpet med udviklingen af de nødvendige plugins.
Så det er altså “real life” eksempler!
Alle processer, som du med jævne mellemrum gentager, kan typisk med stor fordel samles i et plugin eller script.
Udvikling af QGIS plugins eller scripts
Lad os starte med at slå fast, at QGIS er en fantastisk fleksibel og veludbygget platform, der understøtter en lang række forskellige muligheder at udbygge og skræddersy funktionaliteten.
For eksempel kan man udvikle almindelige plugins, processeringsplugins og processeringsscript.
At udvikle sit eget QGIS plugin kræver først og fremmest et specifikt kendskab til QGIS “behind the scenes” (hvordan er tingene egentlig skruet sammen?).
Herudover kræver det et generelt kendskab til udvikling i udviklingssproget Python. Men alle de nødvendige værktøjer og dokumentation er frit tilgængeligt og kræver ingen investeringer i udviklingssoftware eller lignende.
Én mulighed er derfor, at man selv lærer sig håndværket at udvikle plugins. Afhængig af udgangspunktet kan dette være en mere eller mindre lettilgængelig proces.
MEN der er også den mulighed – og her kommer min egentlige pointe med dette blogindlæg – at man overlader udviklingsarbejdet til én, som allerede har de fornødne forudsætninger!
“Men det er jo dyrt, langvarigt og tungt”, tænker du måske?
Men sådan er plugin-udvikling ikke, hvis det gribes rigtigt an!
Først og fremmest fordi man ikke udvikler et GENERELT plugin, som skal anvendes af mange (ikke i forvejen kendte) brugere, som anvender alle mulige data-varianter og forskellige forudsætninger.
Når man udvikler til et SPECIFIKT formål, kan man typisk aftale at begrænse sig til tilsvarende specifikke data, forudsætninger m.v. Det gør såvel udviklingsarbejdet som – ikke mindst – testarbejdet væsentlig mere overkommeligt!
Desuden betyder udgangspunktet i QGIS, at der findes hundredevis af standardfunktioner, som er mere eller mindre finkornede og kan håndtere mange opgaver for en.
Det begrænser udviklingsarbejdet rigtig meget, at man ikke starter fra bunden hver gang, men kan “nøjes med” at sammensætte den tilgængelige standardfunktionalitet.
Hvordan så?
Okay, vi har et behov for skræddersyet funktionalitet! Men vi har ikke, og vi ønsker ikke at få kompetencer til selv at udvikle! Hvad gør vi?
I priser jer først og fremmest lykkelige over at have valgt en open source GIS platform som QGIS, hvor I kan hente bistand hos mange forskellige virksomheder. Well done!
Herefter kontakter I én af disse virksomheder og hører, om de kan hjælpe med den slags… I vil sikkert opleve forskellige tilgangsvinkler og forskellige vilkår for et sådant stykke arbejde, og så må I jo vælge den, der lyder mest attraktiv i jeres ører!
Jeg er én af dem, der efterhånden har en del erfaring med den slags opgaver.
Mit udgangspunkt er altid, at udviklingen sker på open source vilkår. Det betyder, at jeg udvikler det ønskede plugin eller script for jer til den aftalte pris.
Herefter er plugin’et jeres til fri anvendelse og uden yderligere omkostninger fremover – med mindre I ønsker funktionaliteten ændret eller udvidet.
Det betyder så også, at I – udover egen anvendelse – også kan forære (eller bytte 😉) med nogen, som er i samme branche eller af anden grund har samme behov som jer.
Omvendt må jeg også anvende det udviklede helt eller delvist i andre sammenhænge, hvis det skulle blive aktuelt.
Hvad koster det?
Det er selvfølgelig svært at sige helt generelt – det afhænger jo rigtig meget af, hvad der skal udvikles. Men med udgangspunkt i de ovennævnte eksempler kan jeg sige, at det kan kræve alt mellem 5 og 50 timer at udvikle et lille-mellemstort plugin, og det aftaler vi selvfølgelig, inden arbejdet påbegyndes.
Har du fået blod på tanden?
Sidder du med en tilbagevendende opgave, som du tænker måske med fordel kunne automatiseres via et plugin, er jeg altid klar til en uforpligtende snak om mulighederne.
Kontakt mig endelig – også hvis du er i tvivl om, hvorvidt det overhovedet er relevant at udvikle eller få udviklet sit egne QGIS plugins til lige netop dine opgaver! Så finder vi sammen ud af, om det giver mening at gå ud ad den vej!