Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
6.2. Lektion Vektoranalys
Vektordata kan också analyseras för att avslöja hur olika funktioner interagerar med varandra i rymden. Det finns många olika analysrelaterade funktioner, så vi kommer inte att gå igenom dem alla. Istället kommer vi att ställa en fråga och försöka lösa den med hjälp av de verktyg som QGIS tillhandahåller.
Målet för den här lektionen: Att ställa en fråga och lösa den med hjälp av analysverktyg.
6.2.1. ★☆☆ GIS-processen
Innan vi börjar kan det vara bra att ge en kort översikt över en process som kan användas för att lösa ett problem. Sättet att göra det på är:
Redogör för problemet
Hämta data
Analysera problemet
Presentera resultaten
6.2.2. ★☆☆ Problemet
Låt oss börja processen med att bestämma oss för ett problem att lösa. Du är till exempel en fastighetsmäklare och du letar efter en bostadsfastighet i Swellendam för kunder som har följande kriterier:
Det måste vara i Swellendam
Den måste ligga inom rimligt köravstånd från en skola (t.ex. 1 km)
Den måste ha en storlek på mer än 100 m i kvadrat
Närmare än 50 meter till en huvudväg
Närmare än 500 meter till en restaurang
6.2.3. ★☆☆ Data
För att besvara dessa frågor behöver vi följande uppgifter:
Bostadsfastigheterna (byggnaderna) i området
Vägarna i och runt staden
Läget till skolor och restauranger
Byggnadernas storlek
Dessa data finns tillgängliga via OSM, och du bör upptäcka att den dataset som du har använt i hela den här handboken också kan användas för den här lektionen.
Om du vill hämta data från ett annat område kan du gå till Introduktionskapitlet för att läsa om hur du gör det.
Observera
Även om OSM-nedladdningar har konsekventa datafält varierar täckningen och detaljerna. Om du upptäcker att din valda region inte innehåller information om till exempel restauranger, kan du behöva välja en annan region.
6.2.4. ★☆☆ Följ med: Starta ett projekt och hämta data
Först måste vi ladda de data vi ska arbeta med.
Starta ett nytt QGIS-projekt
Om du vill kan du lägga till en bakgrundskarta. Öppna Browser och ladda OSM bakgrundskarta från XYZ Tiles menyn.
I databasen
training_data.gpkg
Geopackage hittar du de flesta dataset som vi kommer att använda i det här kapitlet:byggnader
”vägar
restauranger
skolor
Ladda dem, och även
landuse.sqlite
.Zooma till skiktets omfattning för att se Swellendam, Sydafrika
Innan vi fortsätter filtrerar vi skiktet roads, så att vi bara har vissa specifika vägtyper att arbeta med.
Vissa vägar i OSM-dataset listas som ”oklassificerade”, ”spår”, ”stig” och ”fotväg”. Vi vill utesluta dessa från vårt dataset och fokusera på de andra vägtyperna, som är mer lämpliga för den här övningen.
Dessutom kanske OSM-data inte uppdateras överallt, och vi kommer också att utesluta
NULL
-värden.Högerklicka på lagret
roads
och välj Filter….I dialogrutan som dyker upp filtrerar vi dessa funktioner med följande uttryck:
"highway" NOT IN ('footway', 'path', 'unclassified', 'track') AND "highway" IS NOT NULL
Sammankopplingen av de två operatörerna
NOT
ochIN
utesluter alla funktioner som har dessa attributvärden i fältethighway
.IS NOT NULL
kombinerat med operatornAND
utesluter vägar som saknar värde i fältethighway
.Notera ikonen
bredvid skiktet roads. Det hjälper dig att komma ihåg att det här lagret har ett filter aktiverat, så vissa funktioner kanske inte är tillgängliga i projektet.
Kartan med alla data bör se ut som följande:

6.2.5. ★☆☆ Prova själv: Konvertera lager’ CRS
Eftersom vi ska mäta avstånd inom våra lager måste vi ändra lagrens CRS. För att göra detta måste vi välja varje lager i tur och ordning, spara lagret till ett nytt lager med vår nya projektion och sedan importera det nya lagret till vår karta.
Du har många olika alternativ, t.ex. kan du exportera varje lager som en dataset i ESRI Shapefile-format, du kan lägga till lagren i en befintlig GeoPackage-fil, eller så kan du skapa en ny GeoPackage-fil och fylla den med de nya reprojicerade lagren. Vi kommer att visa det sista alternativet, så att :filen:`training_data.gpkg` förblir ren. Känn dig fri att välja det bästa arbetsflödet för dig själv.
Observera
I det här exemplet använder vi WGS 84 / UTM-zon 34S CRS, men du bör använda en UTM CRS som är mer lämplig för din region.
Högerklicka på skiktet roads i panelen :guilabel:`Layers
Klicka på Export –> Spara funktioner som…
I dialogrutan Save Vector Layer As väljer du GeoPackage som Format
Klicka på … för File name och döp det nya GeoPackage till
vector_analysis
Ändra Layer name till
roads_34S
Ändra CRS till WGS 84 / UTM-zon 34S
Klicka på OK:
Detta kommer att skapa den nya GeoPackage-databasen och lägga till skiktet
roads_34S
.Upprepa denna process för varje skikt och skapa ett nytt skikt i GeoPackage-filen
vector_analysis.gpkg
med_34S
tillagt till det ursprungliga namnet.På macOS trycker du på knappen Replace i dialogrutan som dyker upp för att låta QGIS skriva över det befintliga GeoPackage.
Observera
När du väljer att spara ett lager till ett befintligt GeoPackage kommer QGIS att lägga till lagret bredvid de befintliga lagren i GeoPackage, om inget lager med samma namn redan finns.
Ta bort alla gamla lager från projektet
När du har slutfört processen för alla lager högerklickar du på valfritt lager och klickar på Zoom to layer extent för att fokusera kartan till det område du är intresserad av.
Nu när vi har konverterat OSM-data till en UTM-projektion kan vi påbörja våra beräkningar.
6.2.6. ★☆☆ Följ med: Analysera problemet: Avstånd från skolor och vägar
Med QGIS kan du beräkna avstånd mellan valfria vektorobjekt.
Se till att endast lagren
roads_34S
ochbuildings_34S
är synliga (för att förenkla kartan medan du arbetar)Klicka på
för att öppna den analytiska kärnan i QGIS. I princip finns alla algoritmer (för vektor- och rasteranalys) tillgängliga i den här verktygslådan.Vi börjar med att beräkna området runt
roads_34S
genom att använda Buffer algoritmen. Du kan hitta den i -gruppen.Eller så kan du skriva
buffer
i sökmenyn i den övre delen av verktygslådan:Dubbelklicka på den för att öppna algoritmdialogen
Välj
roads_34S
som Input layer, ställ in Distance till 50 och använd standardvärdena för resten av parametrarna.Standardvärdet för Distance är i meter eftersom vår indatauppsättning är i ett projicerat koordinatsystem som använder meter som grundläggande måttenhet. Du kan använda kombinationsrutan för att välja andra projicerade enheter som kilometer, yards etc.
Observera
Om du försöker skapa en buffert på ett lager med ett geografiskt koordinatsystem kommer Processing att varna dig och föreslå att du omprojicerar lagret till ett metriskt koordinatsystem.
Som standard skapar Processing tillfälliga lager och lägger till dem i panelen Layers. Du kan också lägga till resultatet i GeoPackage-databasen genom att:
Klicka på knappen … och välj Save to GeoPackage…
Namnge det nya lagret
roads_buffer_50m
Spara den i filen
vector_analysis.gpkg
Klicka på Run, och stäng sedan Buffer-dialogrutan
Nu kommer din karta att se ut ungefär så här:
Om det nya skiktet ligger högst upp i listan Layers kommer det förmodligen att skymma en stor del av kartan, men det ger dig alla områden i din region som ligger inom 50 m från en väg.
Lägg märke till att det finns distinkta områden inom din buffert, som motsvarar varje enskild väg. För att bli av med detta problem:
Avmarkera lagret roads_buffer_50m och återskapa bufferten med Dissolve results aktiverat.
Spara utdata som roads_buffer_50m_dissolved
Klicka på Run och stäng dialogrutan Buffer
När du har lagt till lagret i panelen Layers kommer det att se ut så här:

Nu finns det inga onödiga underavdelningar.
Observera
Den Korta hjälpen på höger sida av dialogrutan förklarar hur algoritmen fungerar. Om du behöver mer information kan du klicka på knappen Help längst ned för att öppna en mer detaljerad guide till algoritmen.
6.2.7. ★☆☆ Prova själv: Avstånd från skolor
Använd samma metod som ovan och skapa en buffert för dina skolor.
Det ska vara 1 km
i radie. Spara det nya lagret i filen vector_analysis.gpkg
som schools_buffer_1km_dissolved
.
Svar
Din buffertdialog bör se ut så här:
Det Buffertavstånd är 1 kilometer.
Värdet för Segments to approximate sätts till 20. Detta är valfritt, men rekommenderas eftersom det gör att utdatabuffertarna ser jämnare ut. Jämför detta:
Till det här:
Den första bilden visar bufferten med värdet Segments to approximate inställt på 5 och den andra visar värdet inställt på 20. I vårt exempel är skillnaden subtil, men du kan se att buffertens kanter är mjukare med det högre värdet.
6.2.8. ★☆☆ Följ med: Överlappande områden
Nu har vi identifierat områden där vägen ligger mindre än 50 meter bort och områden där det finns en skola inom 1 km (direktlinje, inte via väg). Men vi vill naturligtvis bara ha de områden där båda dessa kriterier är uppfyllda. För att göra det måste vi använda verktyget Intersect. Du hittar det i -gruppen i Processing Toolbox.
Använd de två buffertskikten som Input layer och Overlay layer, välj
vector_analysis.gpkg
GeoPackage i Intersection med Layer nameroad_school_buffers_intersect
. Lämna resten som föreslagits (standard).Klicka på Run.
I bilden nedan är de blå områdena där båda avståndskriterierna uppfylls.
Du kan ta bort de två buffertlagren och bara behålla det som visar var de överlappar varandra, eftersom det är det vi egentligen ville veta från början:
6.2.9. ★☆☆ Följ med: Extrahera byggnaderna
Nu har du det område som byggnaderna måste överlappa. Därefter vill du extrahera byggnaderna i det området.
Leta efter menyalternativet
i Processing ToolboxVälj
buildings_34S
i Extrahera funktioner från. Kontrollera intersect i Where the features (geometric predicate), välj buffertens intersection-lager i By comparing to the features from. Spara tillvector_analysis.gpkg
, och namnge lagretwell_located_houses
.Klicka på Run och stäng dialogrutan
Du kommer förmodligen att upptäcka att inte mycket verkar ha förändrats. Om så är fallet, flytta lagret well_located_houses till toppen av lagerlistan och zooma sedan in.
De röda byggnaderna är de som uppfyller våra kriterier, medan de gröna byggnaderna är de som inte gör det.
Nu har du två separata lager och kan ta bort
buildings_34S
från lagerlistan.
6.2.10. ★★☆ Prova själv: Filtrera våra byggnader ytterligare
Vi har nu ett lager som visar oss alla byggnader inom 1 km från en skola och inom 50 m från en väg. Vi måste nu minska urvalet så att det bara visar byggnader som ligger inom 500 m från en restaurang.
Med hjälp av de processer som beskrivs ovan skapar du ett nytt skikt som heter houses_restaurants_500m som ytterligare filtrerar ditt well_located_houses-skikt så att det bara visar de hus som ligger inom 500 meter från en restaurang.
Svar
För att skapa det nya lagret houses_restaurants_500m går vi igenom en process i två steg:
Skapa först en buffert på 500 meter runt restaurangerna och lägg till lagret på kartan:
Därefter extraheras byggnader inom detta buffertområde:
På kartan visas nu endast de byggnader som ligger inom 50 meter från en väg, 1 km från en skola och 500 meter från en restaurang:

6.2.11. ★☆☆ Följ med: Välj byggnader av rätt storlek
För att se vilka byggnader som är av rätt storlek (mer än 100 kvadratmeter) måste vi beräkna deras storlek.
Välj skiktet houses_restaurants_500m och öppna Field Calculator genom att klicka på knappen
Open Field Calculator i huvudverktygsfältet eller i attributtabellfönstret
Välj Create a new field, sätt Output field name till
AREA
, välj Decimal number (real)` som Output field type, och välj$area
från -gruppen.Det nya fältet
AREA
kommer att innehålla ytan för varje byggnad i kvadratmeter.Klicka på OK. Fältet
AREA
har lagts till i slutet av attributtabellen.Klicka på knappen
Toggle Editing för att avsluta redigeringen och spara dina ändringar när du uppmanas till det.
På fliken Provider Feature Filter på
i skiktets egenskaper ställer du in"AREA >= 100
.Klicka på OK.
Din karta ska nu bara visa dig de byggnader som uppfyller våra startkriterier och som är mer än 100 kvadratmeter stora.
6.2.12. ★☆☆ Prova själv:
Spara din lösning som ett nytt lager med hjälp av den metod som du lärde dig ovan. Filen ska sparas i samma GeoPackage-databas med namnet solution
.
6.2.13. Sammanfattningsvis
Genom att använda GIS-problemlösningsmetoden tillsammans med QGIS vektoranalysverktyg kunde du snabbt och enkelt lösa ett problem med flera kriterier.
6.2.14. Vad händer härnäst?
I nästa lektion tittar vi på hur man beräknar det kortaste avståndet längs vägar från en punkt till en annan.