Om du har ett lager med linjer där några korsar eller vidrör varandra på annat sätt som du vill kombinera i QGIS till multipart linjer så kan man tycka att det borde vara enkelt, men det är det inte riktigt. Om du dessutom vill att attribut från dessa linjer skall bevaras i de sammanslagna linjerna, så blir det ännu lite krångligare.
Låt oss ta ett exempel med några enkla linjer och en enkel attributtabell.
Här vill jag att linjer som på ett eller annat sätt vidrör varandra skall kombineras till multipart linjer, men kruxet är att jag vill spara värden från alla delarnas attributvärden till de nya objekten.
Vad jag hittat så finns det två sätt att gå. Antingen i två steg där man kontrollerar vilka linjer som hänger ihop och genererar de sammanslagna attributen först, och sedan löser man upp linjerna efter dessa attribut. Eller så använder man en funktion där man kan göra båda stegen på en gång.
Båda alternativen består av ett uttryck eller mekanism för att slå samman värden från attributen i överlappande objekt, samt en sammanslagning av geometrierna efter någon form av gruppering.
I det ena fallet används en funktion för att skapa de nya attributen och i det andra fallet så samma funktion för att gruppera sammanhängande linjer.
Med verktyget Aggregate (ovan) så kan man göra allt i ett, men det är en del att göra innan man trycker på ”Run”.
Först och främst så får man titta på hur man vill aggregera attributvärden. Man kanske vill kombinera textfält och summera tal (detta är förvalt), men det går att justera här ganska fritt hur attributen skall se ut i det nya lagret. Att notera är att om fältstorleken i det nya attributet inte är stort nog, så kommer verktyget att ge felmeddelande. Det går att ändra storleken på fälten med ”Length” i tabellen ovan.
Om jag nu kör verktyget som det är ifyllt ovan, så kommer alla linjer att slås samman till ett enda multi-linje objekt. Mitt tips, speciellt om man kör på ett lager med många objekt är gör inte detta. Först måste någon form av gruppering skapas så att bara linjer som vidrör varandra slås samman.
Om man har ett attribut som är gemensamt för de objekt som man vill skall slå samman så kan man direkt välja det vid ”Group by expression”, men i det här fallet så finns inget attribut färdigt. I stället skapas ett uttryck där funktionen ”aggregate” används. Här har jag valt ett av fälten som ”expression” för att särskilja eller ”filtrera” grupper av angränsande objekt (med ”intersects”), och värdet slås samman med aggregate-funktionen ’concatenate’. ”Layer” är helt enkelt lagrets namn, om det skulle vara någon som undrar.
Resultatet är det som visas ovan. Fyra multipart linjer där attributen är sammanslagna på olika sätt enligt det som ställdes in i aggregate verktyget.
Alternativen till aggregate verktyget är som tidigare nämnts en process i flera steg. Först skapas nya sammanslagna attribut som nya fält i attributtabellen, där de nya värdet skapas med aggregate funktionen i ett uttryck. Man får anpassa aggregeringstypen beroende på om man vill slå samman (concatenate), summera eller aggregera på annat sätt. Detta måste man upprepa för alla attribut man vill bevara. Därefter kan man använda ”Dissolve” för att slå samman linjer som har samma värden i utpekade fält. Är det bara ett fält som skall kombineras så är metoderna ganska lika i komplexitet och tidsåtgång. Men om det är flera attribut så vinner man väldigt mycket på att använda aggregate verktyget.