Så, vad finns det för alternativ att göra nätverksberäkningar i QGIS3? Här tittar jag på några, men det finns säkert flera. När jag säger ”nätverksanalys” så kan det vara ganska mycket, men jag kommer bara att undersöka hur man tar sig från punkt A till punkt B längs ett vägnät.
Om det fungerar, eller om det här precis som en del annat, är lite skakigt i QGIS 3 (åtminstone för mig), skall jag reda ut i detta inlägg.
Det första jag testar är att trycka Ctrl + K och skriva in ”nätverk”, vilket ger en hel del resultat hämtade framför allt från GRASS. Här väljer jag v.net.distance vilket presenterar ett formulär, som vid första anblick är ganska komplext, men om man tittar på de fält som är obligatoriska så blir det lite enklare.
Jag behöver ett lager för vägnätet, vilket fungerar med exempelvis Lantmäteriets terrängkarta med vägar. Ett lager med punkter som är ”från” punkter och ett lager med ”till” punkter. Dessa punktlager används för att beräkna rutter i ”par”. Om man bara har en punkt i varje lager så skapas en linje. Har man två punkter i varje så skapas två rutter, en för det första paret och en för det andra paret. Om det är olika många punkter i dessa lager så blir det bara så många rutter som det är punkter i det lager som har minst antal punkter. Vill man beräkna från en punkt till flera, eller tvärt om så får man skapa dubblettpunkter så att det blir ett jämnt par med punkter.
Det finns möjlighet att lägga till ett ”kostnadsfält” för exempelvis hastighet, men jag vet inte om det är specifikt hastighet som man förutsätter, eller om det är just kostnad, vilket i så fall behöver beräknas till ett nytt värde.
När jag testar så stöter jag på en mängd olika problem. Exempelvis är funktionen inte speciellt väldokumenterad. Visst, det finns en hjälpsida som förklarar väldigt mycket, men det är inte speciellt tillrättalagt för QGIS formuläret.
Det blir även väldigt långsamt när man använder ett stort dataset för vägnätet. Det verkar som att verktyget läser in hela nätverket och söker igenom alla alternativ, vilket som sagt tar väldigt lång tid om man bara skall beräkna närmsta vägen mellan Eksjö och Nässjö.
Som tur är finns det en möjlighet att enbart göra beräkningen på valda vägsegment. Markera bara det relevanta området så att vägsegmenten är ”valda” och markera i verktyget att enbart valda vägar skall hanteras. Detta kan ju också vara ett sätt att snabbt kontrollera vilken alternativ väg som är bäst om ett segment inte kan användas (välj bort segment som inte skall vara med).
Det är ett avancerat verktyg och man behöver nog testa en hel del innan man kan vara säker på hur det skall användas så att man får ett korrekt resultat (man vill kanske inte inkludera enkelriktat i vissa resultat).
Det finns fler GRASS verktyg för nätverk, men dessa är än krångligare att använda.
Om man letar bland insticksprogrammen så hittar man QNEAT3. Efter installation så har man ett antal nya verktyg i verktygslådan.
Jag testar endast ”Shortest path” här, men verktyget erbjuder ganska mycket mera, vilket vi får titta närmare på en annan gång.
Även här kan man välja att använda enbart valda objekt, men till skillnad från GRASS verktygen så kan man här ”klicka” ut start- och slutpunkter i kartan. Man kan lägga in enkelriktat, kostnadsfält för båda riktningarna, samt hastighetsbegränsningsfält och en standardhastighet om det saknas värde i tabellen.
Betydligt enklare att hantera för en ovan användare, men det är ett nytt tillägg och jag får det inte riktigt att fungera. Om man använder Windows så behöver man exempelvis installera ”matplotlib” för att alla funktioner skall fungera, men även med detta så lyckas jag inte få något resultat. Det allra enklaste scenariot med ett vägnät, startpunkt, slutpunkt och inget mera lyckas krascha QGIS.
Det har varit mycket QGIS krascher för mig den senaste tiden och just det som rör QNEAT3 kommer jag inte att bry mig om att efterforska i just nu.
GRASS verkar fungera någorlunda, om man bara vet vad man gör och vad som krävs i form av förberedelser av data, men det är som sagt lite hög tröskel att komma igång. QNEAT3 har ett väldigt användarvänligt gränssnitt och många bra hjälpfunktioner, men är inte riktigt att lita på ännu. Det går att skapa nätverksanalyser i QGIS3, men det är inte helt trivialt.
Nätverksanalys i praktiken med QGIS 3 kommer jag att lägga på hyllan ett tag, för att återkomma när jag känner att QGIS uppträder lite mera stabilt. Kanske efter 3.2 släpps om någon vecka, men jag får nog ge det ännu mera tid innan det är lönt för mig att försöka igen.
Det kan vara så att det fungerar bättre på Windows så du som har ett sådant system får gärna prova.
Vad är din känsla kring QGIS plugin som kräver att användaren installerar externa packet som matplotlib? Har precis släppt mitt första plugin, geodatafarm, som också kräver matplotlib och funderar på om jag ska inkludera hela matplotlib i pluginet för att förenkla för användaren eller om det är dumt?
Ju enklare det är för användaren desto bättre. Enkla pythonbibliotek som inte behöver uppdateras superofta kan säkert inkluderas, men då behöver du sannolikt bygga in funktioner för att testa om de bibliotek som behövs redan är installerade. Det kan uppstå konstigheter om du importerar bibliotek som redan finns…
Ett annat sätt är att testa om nödvändiga bibliotek finns och visa ett meddelande, kanske med länk eller exempelkommando för hur man installerar de bibliotek som krävs, samt vad som krävs i övrigt. Då måste man även fundera på hur externa bibliotek installeras på olika operativsystem. Ett ”pip3” kommando bör dock fungera för alla, så länge man inte kör QGIS genom en dedikerad pythontolk.