En av de mest intressanta nyheterna i QGIS 3.18 för mig var möjligheten att dynamiskt anpassa SVG symboler. Jag har tidigare ”genererat” SVG källkod för olika syften dynamiskt, men i 3.18 så är det möjligt att dynamiskt ändra koden i en SVG, så länge den är gjord för det…
Det finns en risk med detta, och det gäller 3.18.0, där QGIS omedelbart kraschar om man trycker lite fel i stilpanelen.

Under den vanliga SVG browser när man valt SVG Marker som symboltyp, så finns det en ny fältgrupp med namnet Dynamic SVG parameters. Här kan man lägga till hur många parametrar man vill och namnge dessa på ett sätt som överensstämmer med de parametrar man skapat i SVG filen.
Men vad du än gör! KLICKA INTE PÅ TRIANGELN TILL VÄNSTER!!! Detta kraschar nämligen QGIS omedelbart. Detta är bara ett av många problem med QGIS 3.18.0 och det skall vara fixat i 3.18.1 som du bör uppgradera till snarast möjligt.
Det går tyvärr inte att använda funktionen för vilken SVG som helst, och även om man har anpassade SVG-filer så ”autofylls” inte parameterlistan i QGIS, vilket vore trevligt…

För att testa så skapar jag en ytterst enkel SVG med två ytor och två texter. Filen sparas som enklast möjliga SVG där jag även namngivit de olika objekten för att de skall bli enklare att hitta i koden.

SVG filen kan man öppna i en vanlig texteditor och här letar man reda på den kod man vill ersätta med en parameter. Exempelvis kan man byta koden för en fyllningsfärg mot en parameter:
"#FF0000" --> "param(back_fill_color) #FF0000"
Genom att helt enkelt byta ut värdet mot texten param(namn), där namn är det namn man vill ge parametern, så har man skapat möjlighet att dynamiskt modifiera detta värde i QGIS.
Just det här sättet att hantera parametrar i SVG är standardiserat i SVG, så det är inte helt unikt för QGIS, men jag vet inte om några andra program som faktiskt använder detta. Det går även som i mitt exempel ovan lägga till ett default värde efter param(namn) men just det verkar fungera sådär i QGIS.

I listan med Dynamic SVG parameters, så lägger man till en rad (gröna plus-tecknet) för varje parameter man vill kontrollera. Det namn man gett parametern skriver man i Name kolumnen (TRYCK INTE PÅ TRIANGELN) och i kolumnen Expression så anger man antingen ett värde manuellt, eller med ett uttryck eller som en hänvisning till ett attributfält. Med andra ord precis som vanligt med åsidosättningar i QGIS.
I det här fallet har jag skapat flera färgparametrar, och då passar det att välja widgettypen Color i lagerinställningarna för de attribut som skall hantera färgerna. Även om det lagras en ”hex kod” så kan man därför använda den vanliga färgväljaren för att sätta de färger man önskar när man redigerar ett lager.
Det går med denna metod att skapa helt dynamiska lagerstilar, där man även bäddat in själva SVG koden i stilen.
Exakt hur långt det går att dra detta har jag inte experimenterat speciellt mycket med ännu, men det kommer nog.
Och det hade som sagt varit trevligt om listan med parametrar hade fyllts automatiskt med de parametrar som hittas i SVG koden.