Den här gången tänkte jag testa om man med små medel kan lägga till en liten finess i en vanlig karta för att lyfta den det där lilla extra. Inte så att det är påtagligt direkt när man ser den, utan mera som ”oj, hur sjutton har det där gått till”.
Det jag vill göra är att lägga till lite ”vass” i kanterna av mina sjöar i Lantmäteriets terrängkarta.
Med slumpvisa markörer så går det att hitta en inställning som placerar ut vassruggarna lagom glest över ytan, och om man har en specifik sjö i åtanke så kan man även prova olika seedningsnummer tills man hittar en fördelning som passar, men vass brukar inte växa fördelade över hela ytan…
I stället för att fördela över hela ytan kan man använda en geometrigenerator som skapar en zon längs strandkanten med lämpligt avstånd.
Det behövs bara en väldigt enkel geometrigenerator för att skapa en yta som sträcker sig lämpligt antal meter från strandkanterna:
difference( $geometry,buffer($geometry,-50))
I detta stillager kan man sedan placera slumpvis markörer med lämplig fördelning över ytan.
Vill man inte placera symbolerna helt slumpvis längs strandkanterna så kan man tänka sig att förekomsten av vass är mera sannolik i anslutning till våtmarker. För att plocka fram dessa områden så är det enklast att använda virtuella lager i stället för geometrigeneratorn (om man nu vill undvika att skapa nya lager).
Som synes av bilden ovan så har jag inte använt samma data som tidigare här. Det blir helt enkelt för mycket beräkningar för att datorn skall klara av detta. Även om jag bara tar ett litet urval med data så har jag problem med att datorn hänger sig vid beräkningarna. Genom att skapa två väldigt enkla lager med samma struktur som i originaldata så kan jag däremot visa att principen fungerar.
select st_intersection( st_buffer(sank.geometry,100), st_difference( vatten.geometry, st_buffer(vatten.geometry, -50) ) ) from (select * from my_south where KKOD=1) as vatten, ms_south as sank
SQL uttrycket ovan hämtar data från ms_south och my_south, som döps till ”sank” och ”vatten” i uttrycken. Uttrycket hämtar de överlappade delarna från en 100-meters buffert runt sankmarker och 50-metersområdet runt strandkanterna.
Resultatet blir sedan slumpvis placerade punkter i dessa områden, där det kanske är mera sannolikt att vass förekommer.
I exemplet så görs allt med stilar och virtuella lager, men erfarenheten från virtuella lager är att dessa snabbt blir långsamma att jobba med och det är lätt att göra lite fel när man testar, vilket snabbt låser QGIS. När man utvecklar stilar av den här typen är det därför rekommenderat att testa på ett väldigt litet dataset. Jag kan tänka mig att det blir lite snabbare om man har data i en PostGIS databas och lägger till ett urvalslager från PostGIS i stället, med i princip samma SQL uttryck.
Om man redan på ett litet dataset har problem, så är nog den bättre lösningen att skapa ett nytt dataset baserat på dessa data. Inte det man kanske vill, men i bland är det det enda praktiskt möjliga.