Nej, det handlar inte om QGIS historia. Utan om ett insticksprogram jag håller på med, som jag tänkte presentera i detta inlägg. Mot slutet så finns det även länkar till insticksprogrammet om du känner dig järv nog att prova, även om jag tror att det är helt ofarligt.
För mig är sommaren nu slut. Jag hade funderingar på en mängd olika experiment som skulle kunna bli längre artiklar på bloggen, men väder och trädgård har inte gjort det möjligt.
I stället har jag suttit ganska mycket när det passat och programmerat Python plugin för QGIS. Ett av dessa har jag kommit så pass långt med att det kan vara dags att berätta lite hur det går, och kanske få in synpunkter eller buggrapporter, så att det så småningom blir så pass dugligt att det är lönt att lägga upp i det officiella biblioteket.
Det är ett tillägg som tar data och karthantering från QGIS och skapar en ”berättelse” (story) som går att öppna i en webbläsare med hjälp av Javaskript och OpenLayers.
Förbehåll
Just nu så fungerar det ganska bra att skapa enkla berättelser som enbart baseras på en bakgrundskarta. I dessa fall är nog tillägget ganska färdigt, det skall bara till fler och bättre mallar och stilfiler.
Vektordata, som identifieras som just vektordata, exporteras till publiceringskatalogen i GeoJSON format. Detta kan bli väldigt mycket data om man inte är försiktig och för närvarande görs inga kontroller att det är en rimlig export. Se därför till att endast de lager du vill exportera är ”tända” i lagerlistan. Vektordata ges heller ingen stil, eftersom detta just nu kräver mycket översättningar mellan QGIS stilformat och OL3. Just nu väljer jag att avvakta och se om det kanske kommer SLD stöd i OL3, som ju redan finns i OL2. Detta skulle delvis lösa de problem som finns med stilkonvertering. En annan möjlighet är ju att använda QGIS Server för att rendera projektet till en WMS tjänst…
Raster data, vilket inkluderar WMS, stöds i viss utsträckning. Om en WMS tjänst, så som den visas i QGIS, även kan visas i OpenLayers, så bör den visas ok. Det kan vara bekymmer med koordinatsystem med mera, men jag vet för lite om vilka parametrar som spelar in för att kunna anpassa insticksprogrammet fullständigt. För lokala rasterlager så är det en begränsning i att en webbläsare inte kan visa vilka bildformat som helst. Exempelvis så stöds inte TIF. Ambitionen är att alla lager i QGIS skall exporteras och visas korrekt i berättelsen, även om det just nu verkar vara lite strul med just denna funktion. Tillägget försöker endast att exportera JPG och PNG filer, med blandad framgång.
Insticksprogrammet
QGIS Story är en panel som aktiveras med en egen knapp, och som i sig består av ett antal flikar.
På den första fliken sätter man berättelsens övergripande titel och väljer vilken mall och stil som berättelsen skall baseras på. Här kan man även återställa hela berättelsen och börja från början.
Den andra fliken hanterar alla bilder (slides). Bildtitel och innehåll anges i separata rutor och med hjälp av en knapp så hämtar man kartans centrumkoordinat och en uppskattad zoomnivå. Här kan man även navigera bland skapade bilder, ändra ordning på bilderna samt lägga till och ta bort enskilda bilder. Det finns även möjlighet att sätta en alternativ stil på varje bild, så länge den stil man valt stödjer detta.
Den tredje fliken hanterar berättelsefiler där man kan öppna och spara dessa i ett eget xml-format. Det är även här man kan välja att ”publicera” sin berättelse, vilket genererar alla filer och kopierar eventuella lager till en utpekad katalog, samt öppnar berättelsen i webbläsaren. Om du inte har Firefox som standardwebbläsare så är det inte säkert att berättelsen kommer att fungera speciellt bra. Du kan då gå till katalogen där du publicerat din berättelse i terminalen/kommandotolken och där ange ett pythonkommando som startar en webbläsare.
python -m SimpleHTTPServer
Du kan sedan peka din webbläsare på http://localhost:8000 för att se berättelsen. Här har jag för avsikt att bygga in stöd för en motsvarande webbserver i insticksprogrammet, men det är lite brister i min ”script-fu” för närvarande.
Den fjärde fliken visar den valda stilfilens innehåll. Här går det att göra justeringar, exempelvis rörande färger, placeringar eller justeringar. Det går även att skapa eller ändra de anpassningar som kan göras för varje bild. Dessa styrs av CSS-klasser benämnda A till H. I dessa kan man exempelvis åsidosätta den ”slide” stil som gäller generellt och byta form och placering på innehållsrutorna, som jag gjort i exemplet ovan.
Om du klickar på animeringen först i inlägget, så kommer hela berättelsen att visas vilket delvis demonstrerar hur man kan hantera anpassningar av stil.
Den sista fliken innehåller lite information om tillägget och kända problem etc.
Prova själv
Vill du nu prova insticksprogrammet så finns det på min GitHub. Där finns hela källkoden, men även en zip-fil med insticksprogrammet paketerat och klart. Packa bara upp zip-filen i din QGIS plugin-katalog och starta om QGIS så skall tillägget vara installerat.
Om du får problem vid uppstart så kan det bero på en brist i QGIS plugin-skript som lägger till en resurs i slutet på en av filerna. Detta kan du själv fixa med en texteditor. Öppna bara filen ”story_dockwidget_base.ui” i plugin-katalogen och leta reda på följande längst ned i filen:
<resources> <include location="resources.qrc"/> </resources>
Dessa rader tar du helt enkelt bort, sparar filen och startar om QGIS.
Detta är för närvarande ett experiment och jag kan därför inte garantera någon viss funktionalitet. Däremot så är det lätt att ta bort tillägget om du tycker det strular, det är bara att radera ”story” mappen från plugin-katalogen och starta om QGIS.
Eftersom jag nu börjar jobba igen, så är det heller inte säkert att jag kommer att ha så mycket tid över till stora förändringar i insticksprogrammet, så om du provar och kanske kikar lite på koden och har förbättringsförslag så är detta välkommet. Exempelvis så försöker jag isolera lagerexporten i en egen pythonfil, så är det någon som känner sig hågad så kan man kasta sig över den funktionen.
1 svar på ”QGIS Story”