Jag fick en fråga om det fanns ett verktyg som gjorde att man kunde ”fylla” en tom yta i QGIS med en polygon, på samma sätt som man använder ”fyll” i ett ritprogram.
”Intressant tanke” tänkte jag. Inte för att jag på rak arm känner till någon sådan funktion och det är säkert inte helt självklart hur man skulle göra utan att skapa en geoprocess i flera steg.
Funktionen skulle kunna användas om du har ett linjelager med vägar av olika slag, där du sedan vill skapa ”tomter” eller motsvarande i de ytor som dessa linjer avgränsar. Du vill själv kunna välja vilka ytor som skall skapas, men du vill inte digitalisera dessa själv. Bara ”klicka” och ”fylla”…
Tanken fick mogna lite och sedan slog det mig att det skulle antagligen gå att fixa detta med en lagerstil som bygger på en geometrigenerator!
För att testa så använder jag tillägget (plugin) QuickOSM och läser in vägar från Malmö.
Det går självklart att använda vilka linjedata som helst, så länge de är konstruerade så att de skapar områdesindelningar som kan ”fyllas”.
Nästa steg är att skapa ett tillfälligt lager som jag kan applicera stilen på. Det kan antagligen vara vilken typ av geometri som helst, men jag testar med en punktgeometri i ett tillfälligt minneslager. Det viktiga är att lagret får samma koordinatsystem som linjelagret.
Jag går inte in på koden i detalj, du kan titta på bilden ovan eller hämta den färdiga stilen via QGIS Hub (länk). Kortfattat så genereras polygoner för samtliga ytor som skapas av linjelagret i aktuellt kartfönster och om dessa överlappar med punkter (geometrier) så väljs de ut för att visas som polygoner i lagerstilen.
För att det skall fungera så måste man byta namn i skriptet så att linjelagrets namn används.
Även den ”buffert” som används kan behöva justeras beroende på vilket koordinatsystem som används. Jag skulle nog rekommendera att använda ett projicerat system för såväl projektet som samtliga berörda lager, och sedan reducera antalet decimaler i bufferten till något som är ”tillräckligt” litet. Dessutom kanske man VILL ha en liten buffert till de omgärdande vägarna?
Då alla beräkningar görs ”live” så gäller det även att begränsa storleken på alla ingående data. Malmö är med min dator lite på gränsen för vad som är rimligt…
Ett sätt att hantera trögheten är att lägga till en vanlig punktsymbol och inaktivera geometrigeneratorn tills man identifierat och markerat alla ytor som är av intresse. Sedan kan man återgå till att generera den nya lagerstilen när utsnitt och layout är klar.
Om man istället vill ha ett lager med de faktiska geometrierna för de polygoner som bara är en lagerstil, så kan man använda det färdiga uttrycket med processverktyget ”Geometry by expression”.
Klistra helt enkelt in det modifierade uttrycket från geometrigeneratorn i fältet ”Geometry expression” och kör sedan verktyget. De geometrier som genereras kommer att finnas tillgängliga i det nya lagret.
Det finns säkert bättre sätt att åstadkomma samma resultat, åtminstone snabbare när det gäller större dataset, men detta var vad jag kom på när jag fokuserade på geometrigeneratorn i QGIS.