I förra inlägget visade jag hur man i QGIS 3.14 kommer att kunna skapa anpassade symboler för teckenförklaringen. I detta inlägg tänkte jag visa två sätt att skapa riktigt avancerade teckenförklaringar redan i nuvarande version av QGIS. Men det är lite ”hackigt” och en hel del manuellt arbete…
För det första, så använder jag Lantmäteriets terrängkarta i skala 1:50’000 i vektorformat.

För den första metoden har jag även skapat ett polygonlager som jag döpt till ”patches”, där jag skapar polygoner på representativa platser och ger dessa en ”beskrivning” som jag skulle kunna använda som text i en teckenförklaring. För att ha lika stora rutor (även om det inte är nödvändigt) så använder jag verktyget ”Copy and Move Feature”.
Det finns platser där jag skulle vilja rotera innehållet något och det kan jag göra genom att lägga till ett värde i ”Rotation” fältet. Detta roterar inte rektangeln, men den bild som genereras blir roterad.
Nästa steg blir skriptprogrammering.

Innan jag kör mitt illa skrivna skript så ”släcker” jag lagret med rektanglar så att detta inte kommer med i mina bilder. Jag ser till att mitt projekt är sparat på lämplig plats. Skriptet kommer nämligen att generera bilderna på samma plats. Och om jag vill så kan jag ändra den bredd på bilderna som skall genereras i skriptet (röd text i bilden ovan).
När skriptet är klart så har dels alla bilder genererats, och dels finns det en ”HTML” text i konsolfönstret. Denna markeras och kopieras. Därefter är det dags för layout.

I layouten lägger jag till en HTML ruta, där den kopierade koden klistras in som ”Source”.
Detta kommer initialt inte att se färdigt ut, men det är där css kommer in i bilden.

Längre ner i inställningarna för HTML rutan finns ”User Stylesheet”. Där lägger jag till styrningar för stilarna så att jag får till det utseende på teckenförklaringen som jag önskar.
.patch { width: 110px; } .title { font-family: Arial; font-size: 12pt; text-align: left; padding: 0px 16px; } table { border-spacing: 0px 4px; } body { margin: 0; }
Här ovan är hela css koden jag använt i bilden.
Det går att göra betydligt mera i css om man vill det, men detta räcker till att börja med.
Vill du prova själv? Du kan hämta pythonskriptet från min GitHub och det öppnar du i pythonkonsolen. tänk på att det lager du använder för att generera bilderna skall:
- vara ett polygonlager
- skall ha tre kolumner (fid, text, rotera)
- vara släckt om du inte vill att det skall synas i bilderna
- vara markerat när skriptet körs
Skriptfri metod
Skript har sina fördelar. De kan vara krångliga att konstruera, men sedan är de återanvändningsbara i liknande situationer i framtiden. Om du inte skapar kartor speciellt ofta så kan det finnas motiv till att använda en metod som inte kräver skript.
Fördelen med denna metod är dels att man inte behöver skapa ett patch-lager i förväg, samt att man använder standardmetoder för att hantera stilar i layouten. Man kan även vara mera flexibel än med skriptmetoden.

Lägg till en ny liten kartram samt etikett som första teckenförklaringspost. Använd denna för att justera utseendet med typsnitt, justeringar och liknande. Bry dig inte om innehållet i kartramen ännu, det löser vi härnäst.
I QGIS kartfönster så letar du reda på en plats du vill använda för att beskriva exempelvis ”Byggnader”.

Zooma in så att det område du är ute efter dominerar kartan. Växla sedan tillbaka till layouten och markera den lilla dataramen där området skall visas.

Klicka på knappen markerad i bilden. Detta justerar innehållet i kartramen så att det överensstämmer med innehållet i QGIS kartan. Använd sedan skala och rotation för att justera utsträckningen i detalj. Det går även att manuellt panorera kartan på vanligt sätt.
Det kommer att bli en del dataramar så passa på att döpa om ramen till något passande i ”Items” listan.

Kopiera kartramen och etiketten till en ny teckenförklaringspost. Gå tillbaka till QGIS kartan, leta upp ett nytt område, sätt kartramen till utsträckningen och justera. Sedan är det bara att upprepa så många gånger det behövs.
En stor fördel med denna metod är att man har större kontroll på detaljerna, och det är lite enklare att vara kreativ.

Om man vill ”isolera” några objekt i en karta så kan man skapa ett tema för de lager man vill skall vara aktiva och använda det temat i just dessa teckenförklaringar.
Vill man ta det ett steg längre så kan man skapa geografiska objekt i ett eget tema som är helt anpassade till den teckenförklaring man önskar.

Nu är vi dock inne på en betydligt större arbetsinsats för att detta skall bli bra.
Avslutning
Om man nu vill skapa anpassade teckenförklaringar ofta och tycker att man hittat en bra stilmall för ett lämpligt skript, så är nog skriptmetoden det som är mest effektivt.
Vill man vara mera flexibel och inte har något emot att jobba lite extra med teckenförklaringen så är kartramar att föredra.
När resultatet är viktigare än den tid det tar, så är metoden med kartramar extremt anpassningsbar, inte minst om man tar sig tid att skapa anpassade geodata för att visa exakt de klasser man vill förklara.
Sedan behöver man inte vara konsekvent med texters placering. Det går att placera dessa mera fritt och exempelvis använda pilar för att peka ut olika stilar.
Vill man dra det hela ännu längre så kan man skapa en helt anpassad karta där man använder QGIS etiketter vid objekten i kartan…

Men nu är vi snart inne på att använda ett dedikerat layoutprogram som Inkscape för att ”designa” teckenförklaringen. Mitt initiala syfte med att undersöka alternativen var att det skulle vara snabbt och enkelt…