Det börjar närma sig! Om ca sex veckor så kommer nästa QGIS version att släppas. Det är mindre än två veckor kvar innan man ”fryser” koden för nya funktioner och börjar fokusera på att stabilisera de funktioner som lagts till och fixa buggar. Det är även nu som vi ”normala” användare kan börja testa den kommande versionen för att se om de arbetsmetoder vi använder kommer att fungera som de ska. Det är även nu som man kan börja kika på nyheter att se fram emot.
I detta inlägg tänkte jag bara kika på en nyhet. Nämligen anpassade symboler i teckenförklaringar.
Dessa anpassade symboler kommer att hanteras som symboler i stilhanteraren. Förhoppningen är att det skall finnas ett ordentligt urval med användbara symboler direkt från start, och här kan vem som helst bidra. Tim Sutton har startat ett GitHub projekt där han samlar dessa symboler, och ambitionen är att skapa ett bibliotek där åtminstone ett urval kan inkluderas i QGIS redan från start. Vill du bidra så hämta QGIS Master och skapa symboler. Gör sedan en pull-request för dessa mot GitHub…
Min metod för att skapa dessa symboler börjar med ett nytt tomt projekt i ett projicerat koordinatsystem.
Jag ändrar formen på kartområdet så att det är ganska kvadratiskt, men det spelar mindre roll. För UTM eller SWEREF99TM så ställer jag in skalan till 1:400 och skriver manuellt in koordinaten 50,50 i positionsfönstret.
Med mina inställningar så ger detta mig ett kartfönster med koordinater från låga (men positiva) värden nere till vänster, till värden runt 100 uppe till höger. Detta är fullt tillräckligt för att återge ganska komplexa former som teckenförklaringar.
För att skapa symbolerna så använder jag tillfälliga minneslager i samma projektion som projektet. Det är dessutom viktigt att välja multipolygoner.
Sedan kan jag använda alla de vanliga verktygen för att skapa en symbol som skulle kunna vara lämplig för att använda i en teckenförklaring.
Varje symbol skall vara en form, därför vikten av att använda multipart geometrier. Det går att direkt kopiera den färdiga formen och klistra in i ett textfönster (till vänster ovan). Det som kommer att användas senare är formen uttryckt i Well Known Text (WKT). Som synes i bilden ovan så blir det mycket text, eftersom koordinaterna presenteras med onödigt mycket decimaler. Detta kommer att fungera, men det är inte så överskådligt.
Därför har jag skapat ett enkelt pythonskript som söker reda på decimaler och tar bort dessa. Det blir tillräckligt bra, avrundning behövs inte. Skriptet kör jag med ”play-knappen” i pythonkonsolen, och resultatet presenteras i text i dialogen (markerad text uppe till höger).
import re layer = iface.activeLayer() object = layer.selectedFeatures()[0] geom_text = object.geometry().asWkt() patch_text = re.sub('.[0-9]*','',geom_text) print(patch_text)
Texten som i det här fallet inleds med ”CurvePolygon(…” kopierar jag med högerklick (ctrl-c verkar inte fungera här för mig).
I stilhanteraren finns det en ny flik för ”Legend Patch Shapes”. Nere till vänster så finns det knappar för att lägga till, ta bort och redigera stilar för dessa. För att lägga till en symbol så väljer man om det skall vara en punkt-, linje- eller polygonstil. I dialogen som visas klistrar jag in WKT texten från tidigare. Om min symbol är viktig att bevara formen på för att den skall bli tydlig så kan man även markera ”Preserve aspect ratio”. När man klickar på OK så får man välja ett namn och man kan även välja, eller lägga till flera ”taggar” för symbolen. Man kan även välja att lägga till symbolen i Favoriter.
I layouten lägger jag till en teckenförklaring och i inställningarna tar jag bort Auto update. Den symbol jag vill förändra markerar jag och klickar på ”redigera” knappen. Det går även att dubbelklicka på raden.
Här finns en sektion där det går att ändra symbolen, där ett av fälten styr valet av den form som skall användas. Det går även att justera bredd och höjd manuellt, vilket främst påverkar symbolen om man inte valt att bevara bildförhållandet.
Tillsammans med övriga inställningar så kan man skapa ganska rejält anpassade teckenförklaringar.