( Del 1, del 2, del 3 och del 4 )
Då så skall vi se om det går att knyta ihop säcken, lite granna i alla fall.
QGIS-projekt går att spara och publicera i QGIS-Server, vars tjänster går att visa i en snygg webbkarta med OpenLayers, men stegen är fortfarande många.
Målet är att kunna få till publiceringen direkt från QGIS och då behövs ett plug-in. Problemet med detta är att detta plug-in inte finns så då är det väl bara att skapa det då.
Några fält att fylla i QGIS Plugin Builder och sedan är det nya insticksprogrammet skapat.
Ui-filen redigeras i Qt Designer så att jag kan ange lite sökvägar, ett namn på lagret samt om det skall vara transparant, ett baslager och genomskinlighet. Som ni märker så skriver jag på engelska, men det är för att alla plug-in skall vara på engelska men kan översättas med speciella konfigurationsfiler. Om jag går vidare med detta plug-in så är det lika bra att det är gjort på engelska med en gång.
Över till koden och vad som skall hända när man klickar på ”OK”.
Jag har valt att använda skärmbilder från texteditorn för att syntaxen skall bli enklare att följa. Hoppas att det inte stör för mycket.
Först så läser jag helt enkelt in det som är ifyllt i ett antal variabler. De namn jag använder är de namn jag döpt kontrollerna till i Qt Designer. Här bör man ju även lägga till lite kontrollfunktioner och felhantering, men tills vidare så förutsätter jag att allt ifyllt är korrekt.
Nästa steg är att spara en kopia på projektet i den katalog som QGIS-Server använder för att publisera OGC tjänster.
Här får jag då framföra en liten varning. Det fungerar bra med lokala sökvägar, men med Linux så är det mycket svårare att få till sökvägar till utdelade Windows-kataloger (smb). Jag har inte löst detta så här fuskar jag och skriver till en lokal sökväg både för projektfilen och senare med javaskriptet. Hoppas jag kan hitta en lösning som fungerar med alla operativsystem och sökvägar…
Den sista delen i koden hanterar skapandet av filen ”lager.js” som kan kännas igen från igår. Till att börja med så måste biblioteket ”codecs” importeras för att svenska tecken skall kunna skrivas till filen, vilket inte syns i bilden ovan utan görs i skriptets början.
Jag har ”hårdkodat” var javaskriptet ligger, men det går naturligtvis att göra detta via ett formulärfält som tidigare. Raden med ”self.iface.messageBar…” är bara till för att hjälpa mig att felsöka och behövs inte alls i skriptet.
Varje gång jag kör insticksprogrammet så skrivs nu ett antal nya rader till filen ”lager.js” och det som är inställt för publicering under ”OWS” i projektinställningarna blir omedelbart tillgängligt i webbkartan.
Processen för användaren blir (tyvärr med mitt lilla fusk just nu) således:
- Skapa QGIS karta
- Kör plug-in (här kan man fixa så formuläret kommer ihåg inställningarna)
- Något magiskt inträffar
- Klart!
Frånsett strulet med nätverkssökvägar så är jag imponerad över hur enkelt det faktiskt var att få till en direktpublicering från QGIS till en webbkarta med QGIS-Server och OpenLayers.
Nästa steg blir att göra processen ytterligare användarvänlig och lägga till funktioner för att ändra inställningar för tidigare publicerade lager och kanske även samtliga publicerade lagers inbördes ordning.
När jag skall hinna med allt detta har jag ingen aning om, inte minst då förra helgen mer eller mindre spenderades i trädgården med att klippa gräs och rensa maskrosor (och dricka svala drycker).
Grymt. .. 🙂