Något dold kanske, men en ack så användbar funktion i QGIS, när man skall skapa flera likadana kartor över flera platser eller objekt. Jag talar om ”kartböcker” eller i vissa sammanhang ”Atlas”.
I detta inlägg blir det en snabbintroduktion till hur du skapar dessa i QGIS och jag tittar närmare på ett praktiskt exempel.
Kartböcker är en funktion i layouthanteraren. Genom att använda sig av ett ”indexlager” så skapar funktionen en sida baserad på aktuell layout, för varje objekt i indexlagret.
Indexlagret kan vara vilken typ av vektorlager som helst och det allra enklaste är väl att ta ett lager med orter eller platsnamn och helt enkelt använda detta som indexlager i en kartbok, så det testar jag först.
Jag använder ett punktlager med kommunnamn (terrängkartan at) för detta och lantmäteriets WMTS tjänst som bakgrund. Lagret har 147 punkter, vilket nog är mer än vad man vill använda, men det skall nog fungera ändå.
Jag börjar med att skapa en superenkel layout med en karta och en titel. Sedan behöver jag definiera mitt indexlager, vilket görs i en kartbokspanel som aktiveras med knappen ”Atlas Settings” (Kartboksinställningar).
Här kryssar man i att man vill generera en kartbok (Atlas) och väljer vilket indexlager som skall användas för detta. Om man inte vill att indexlagret skall synas så kan man kryssa i att det skall vara dolt.
Det finns sedan möjligheter att filtrera och sortera indexlagret om man vill det, men jag väljer att bara välja attributet ”text” som mitt bladnamn.
Om man vill exportera hela kartboken som en fil i exempelvis PDF så finns det ett alternativ för det (standard) och man kan även välja bildformat för export av kartboken som bilder. Om du vill exportera varje sida för sig som PDF, så tar du bort krysset och då kan du ange vilken metod som skall användas för att döpa varje fil.
Det som sedan återstår är att aktivera att kartramen i layouten skall kontrolleras av kartboken. Beroende på vilket typ av vektorlager indexlagret är så får man sedan lite olika alternativ för inställning av skalan på varje blad. För punktlager så är det endast fast skala som gäller.
För att titeln skall ändra namn mellan sidorna så använder man sig av den inbyggda variabeln @atlas_pagename.
14Sedan är det bara att aktivera förhandsgranskningen av kartboken (knappen till vänster ovan) och välja eller bläddra mellan sidorna för att se att det ser bra ut. När man är klar så skriver man ut eller exporterar kartboken till fil.
Attribut i indexlagret kan användas till mycket mer i layouten. Det finns inbyggda funktioner för exempelvis sidnummer men det går även att hämta andra värden från tabellen och använda dessa i andra sammanhang i layouten där uttrycksbyggaren går att använda.
Du kan exempelvis ha en sökväg till en bild i ett attribut och använda denna sökväg för att placera en unik bild på varje sida.
Generera indexlager
Om du inte har ett lager som kan vara ett index, så är det inte så svårt att skapa ett just för den kartbok du vill ha. Vet du vilken skala du vill ha så behövs bara ett punktlager där du anger centrumpunkten för varje kartblad.
Vill du däremot skapa en kartbok över ett område eller längs en linjesträckning, så får du först generera ett indexlager med någon av de inbyggda funktionerna i QGIS.
Jag tänker skapa en kartbok längs ån Lagan och jag använder SMHI Nätverksbildande vattendrag från Geodataportalen för att välja ut detta vattendrag och skapa ett lager att utgå ifrån.
För att skapa mitt indexlager så behöver jag först veta hur stor utsträckning varje kartblad kommer att ha i meter. Det tar jag reda på i layouten som måste skapas först. Det går inte att ändra kartans storlek i layouten i efterhand, utan att det påverkar täckningen totalt, detaljer är dock inga problem att ändra, så länge kartelementets storlek förblir oförändrad. Om man vill ha exakt matchning mellan kartbladens utsträckning så väljer man exakt det antal meter som kartans utsträckning har i layouten, men om man vill ha lite överlapp så använder man ett lite mindre mått. Du använder kartelementets ”extent” för att enkelt räkna ut utsträckningen.
Det kan finnas andra sätt, men jag använder funktionen ”skapa rutnät” i QGIS för att generera ett indexlager. Utsträckningen begränsas av mitt vektorlager där enbart Lagan är med (välj att använda lagret för att generera utsträckningen) och jag skriver in vertikalt- och horisontellt intervall i dialogrutan.
Det räcker att skapa ett temporärt lager så länge, eftersom jag behöver redigera de genererade rutorna då jag inte behöver ha med rutor som inte täcker vattensträckningen.
Utgångsläget för genereringen av rutnätet med denna metod är i vektorlagrets utsträcknings övre vänstra hörn, men det är enkelt att redigera lagret, välja alla objekt och flytta dessa så att man får en lämplig sidindelning. Sedan är det bara att radera de rutor som man inte vill ha med och spara resultatet i ett GeoPackage som indexlager.
Vill man sedan använda lagret för att döpa eller sortera sidorna, ange sidnummer eller liknande, så får man redigera attributtabellen och lägga till fält för detta. Jag nöjer mig att skapa en sidnumrering från flödets början till dess slut.
Lite mer ”styling” av lager och skapande av två olika teman för mina två kartor i layouten, så blir det ungefär som i bilden ovan. Huvudkartan är kontrollerad av kartboken och indexkartan är det inte. Där har jag i stället valt att visa indexlagrets utsträckning med sidnummer och sedan markeras det aktuella bladet som en ”översikt”.
En och samma layout kan på detta sätt generera en stor mängd kartor baserat på ett enda indexlager.