6.2. Lesson: Vectoranalyse
Vectorgegevens kunnen ook worden geanalyseerd om te onthullen hoe verschillende objecten met elkaar omgaan in de ruimte. Er zijn vele aan analyse gerelateerde functies, dus zullen we ze niet allemaal behandelen. In plaats daarvan zullen we een vraag stellen en die proberen op te lossen met behulp van de gereedschappen die QGIS verschaft.
Het doel voor deze les. Een vraag stellen en die beantwoorden met behulp van gereedschappen voor analyse.
6.2.1. Het proces GIS
Vóór we beginnen zou het handig zijn om een kort overzicht te geven van een proces dat gebruikt kan worden om elk probleem op te lossen. De manier om dat te doen is:
Benoem het probleem
Haal de gegevens op
Analyseer het probleem
Geef de resultaten weer
6.2.2. Het probleem
Laten we het proces beginnen door een probleem te benoemen om op te lossen. U bent bijvoorbeeld een makelaar en u zoekt naar een woning in Swellendam voor cliënten die de volgende criteria hebben:
Het moet in Swellendam liggen
Het moet op een redelijke rijafstand van een school (zeg 1 km) liggen
Het moet meer dan 100 vierkante meter in grootte zijn
Dichter dan 50 m vanaf een hoofdweg
Minder dan 500 m vanaf een restaurant
6.2.3. De gegevens
We hebben de volgende gegevens nodig om deze vragen te kunnen beantwoorden:
De woningen (gebouwen) in het gebied
De wegen in en rondom de stad
De locaties van scholen en restaurants
De grootte van gebouwen
Deze gegevens zijn beschikbaar via OSM en u zou kunnen besluiten dat ook de gegevensset die u voor deze handleiding heeft gebruikt voor deze les ook kan worden gebruikt.
Als u gegevens van een ander gebied wilt downloaden, ga dan naar Hoofdstuk Introductie om te lezen hoe dat te doen.
Notitie
Hoewel downloads van OSM consistente velden voor de gegevens hebben, kunnen de bedekking en de details variëren. Als u ziet dat de door u gekozen regio, bijvoorbeeld, geen informatie bevat over restaurants, zou u misschien een andere regio moeten kiezen.
6.2.4. Follow Along: Een project beginnen en de gegevens ophalen
We moeten eerst de gegevens laden om mee te werken.
Begin een nieuw project binnen QGIS
Als u wilt, kunt u een achtergrondkaart toevoegen. Open de Browser en laad de kaart voor de achtergrond OSM uit het menu XYZ Tiles.
In de database voor GeoPackage
training_data.gpkg
vindt u de meeste gegevenssets die we zullen gebruiken voor dit hoofdstuk:buildings
roads
restaurants
schools
Laad ze, en ook
landuse.sqlite
.Zoom in op het bereik van de laag om Swellendam, Zuid-Afrika te kunnen zien.
Voor we doorgaan moeten we de laag roads filteren om slechts een paar specifieke typen wegen te hebben om mee te werken.
Enkele wegen in de gegevenssets van OSM zijn vermeld als
unclassified
,tracks
,path
enfootway
. We willen die uit onze gegevensset van wegen weglaten en focussen op de andere typen wegen, meer geschikt voor deze oefening.Meer nog, de gegevens van OSM zouden niet overal bijgewerkt kunnen zijn en we willen ook de waarden
NULL
uitsluiten.Klik met rechts op de laag
roads
en kies Filteren….In het dialoogvenster dat opent filteren we deze objecten met de volgende expressie:
"highway" NOT IN ('footway', 'path', 'unclassified', 'track') AND "highway" IS NOT NULL
De samenvoeging van de twee operatoren
NOT
enIN
sluit alle objecten uit die deze attribuutwaarden in het veldhighway
hebben staan.IS NOT NULL
gecombineerd met de operatorAND
sluit wegen zonder waarde in het veldhighway
uit.Merk het pictogram op naast de laag roads. Het helpt u te onthouden dat op deze laag een filter is geactiveerd en dat enkele objecten dus niet beschikbaar zouden kunnen zijn in het project.
De kaart met alle gegevens zou er ongeveer als volgt uit moeten zien:
6.2.5. Try Yourself CRS van een laag converteren
We moeten we het CRS van de lagen wijzigen, omdat we binnen onze lagen afstanden gaan meten. We moeten, om dit te doen, elke laag op zijn beurt selecteren, de laag opslaan naar een nieuwe met onze nieuwe projectie, en dan die nieuwe laag in onze kaart importeren.
U heeft veel verschillende opties, u kunt bijvoorbeeld elke laag exporteren als een nieuw gegevensset in de indeling ESRI Shapefile, u kunt de lagen toevoegen aan een bestaand bestand van GeoPackage of u kunt een nieuw bestand voor GeoPackage maken en dat vullen met de nieuw geprojecteerde lagen. We zullen de laatste optie laten zien, zodat training_data.gpkg
schoon blijft. Het staat u vrij de beste werkwijze voor uzelf te kiezen.
Notitie
In dit voorbeeld gebruiken we het CRS WGS 84 / UTM zone 34S, maar u zou een UTM CRS moeten gebruiken dat meer toepasselijk is voor uw regio.
Klik met rechts op de laag roads in het paneel Lagen
Klik op Exporteren –> Objecten opslaan als…
Kies in het dialoogvenster Vectorlaag opslaan als GeoPackage als Indeling
Klik op … van de Bestandsnaam en noem het nieuwe GeoPackage
vector_analysis
Wijzig de Laagnaam naar
roads_34S
Wijzig het CRS naar WGS 84 / UTM zone 34S
Klik op OK:
Dit zal de nieuwe database voor GeoPackage maken en de laag
roads_34S
toevoegen.Herhaal dit proces voor elke laag door een nieuwe laag te maken in het bestand van GeoPackage
vector_analysis.gpkg
met “_34S” toegevoegd aan de originele naam.Op macOS, druk op de knop Vervangen in het dialoogvenster dat opent om toe te staan dat QGIS het bestaande GeoPackage overschrijft.
Notitie
Wanneer u er voor kiest om een laag op te slaan naar een bestaand GeoPackage, zal QGIS die laag toevoegen aan de bestaande lagen het GeoPackage, als daar geen laag met dezelfde naam al reeds bestaat.
Elk van de oude lagen uit het project verwijderen
Als u eenmaal het proces voor alle lagen heeft voltooid, klik dan met rechts op een laag en klik op Zoom naar laag om de kaart te focussen op het gebied waarin we geïnteresseerd zijn.
Nu we de gegevens van OSM hebben geconverteerd naar een UTM-projectie, kunnen we onze berekeningen beginnen.
6.2.6. Follow Along: Analyseren van het probleem: Afstanden van scholen en wegen
QGIS stelt u in staat afstanden te berekenen tussen elk vectorobject.
Zorg er voor dat alleen de lagen
roads_34S
enbuildings_34S
zichtbaar zijn (om de kaart te vereenvoudigen, terwijl u werkt).Klik op
om de analytische bron van QGIS te openen. Als basis: alle algoritmes (voor vector- en raster-) analyses zijn in deze Toolbox beschikbaar.We beginnen met het gebied te berekenen rondom
roads_34S
door het algoritme Buffer te gebruiken. U kunt dat vinden in de groep .Of u kunt
buffer
typen in het zoekmenu in het bovenste gedeelte van de Toolbox:Dubbelklik erop om het dialoogvenster van het algoritme te openen
Selecteer
roads_34S
als Invoerlaag, stel Afstand in op 50 en gebruik de standaardwaarden voor de rest van de parameters.De standaard Afstand is in meters, omdat onze gegevensset voor invoer in een geprojecteerd Coördinaten Systeem staat dat meter gebruikt als zijn basis maateenheid. U kunt het combinatievak gebruiken om andere geprojecteerde eenheden te gebruiken, zoals kilometers, yards, etc.
Notitie
Als u probeert een buffer te maken op een laag met een Geografisch CoördinatenSysteem, zal Processing u waarschuwen en voorstellen om de laag opnieuw te projecteren in een metrisch CoördinatenSysteem.
Standaard maakt Processing tijdelijke lagen en voegt die toe aan het paneel Lagen. U kunt het resultaat ook toevoegen aan de database van GeoPackage door:
Te klikken op de knop … en te kiezen voor Opslaan naar GeoPackage…
Noem de nieuwe laag
roads_buffer_50m
Sla het op in het bestand
vector_analysis.gpkg
Klik op Uitvoeren, en sluit dan het dialoogvenster Buffer
Nu zal uw kaart er ongeveer zo uitzien:
Als uw nieuwe laag boven in de lijst Lagen staat, zal het waarschijnlijk veel van uw kaart verbergen, maar dit geeft u alle gebieden in uw regio die binnen 50 m van een weg liggen.
Merk op dat er binnen uw buffer bepaalde gebieden zijn, die overeenkomen met elke weg. Om dit probleem op te lossen:
Deselecteer de laag roads_buffer_50m en maak de buffer opnieuw met Resultaten samenvoegen ingeschakeld:
Sla de uitvoer op als roads_buffer_50m_dissolved
Klik op Uitvoeren en sluit het dialoogvenster Buffer
Als u de laag eenmaal aan het paneel Lagen heeft toegevoegd, zal het er zo uitzien:
Nu zijn er geen onnodige onderverdelingen meer.
Notitie
De Verkorte Help aan de rechterkant van het dialoogvenster legt uit hoe het algoritme werkt. Als u meer informatie nodig hebt, klik dan gewoon op de knop Help in het onderste gedeelte om een meer gedetailleerde handleiding voor het algoritme te openen.
6.2.7. Try Yourself Afstand van scholen
Gebruik dezelfde benadering als hierboven en maak een buffer voor uw scholen.
Het moet 1 km
in straal zijn. Sla de nieuwe laag op in het bestand vector_analysis.gpkg
als schools_buffer_1km_dissolved
.
Antwoord
Uw dialoogvenster voor de buffer zou er zo uit moeten zien:
De Buffer afstand is 1 kilometer.
De waarde Te schatten segmenten is ingesteld op 20. Dit is optioneel, maar het wordt aanbevolen, omdat het de buffers voor de uitvoer gladder laat lijken. Vergelijk dit:
Met dit:
De eerste afbeelding laat de buffer zien met de waarde voor Te schatten segmenten ingesteld op 5 en de tweede laat de waarde zien die ingesteld is op 20. In ons voorbeeld is het verschil subtiel, maar u kunt zien dat de randen van de buffer gladder zijn met de hogere waarde.
6.2.8. Follow Along: Overlappende gebieden
Nu hebben we gebieden geïdentificeerd waar de weg minder dan 50 m verwijderd is en gebieden waar een school binnen 1 km ligt (directe lijn, niet via de weg). Maar natuurlijk willen we alleen de gebieden waar aan beide criteria wordt voldaan. We zullen het gereedschap Kruising moeten gebruiken om dat te kunnen doen. U vindt het onder de groep in Processing –> Toolbox.
Gebruik de twee lagen met buffers als Invoerlaag en Overleglaag, kies
vector_analysis.gpkg
GeoPackage in Kruising met Laagnaamroad_school_buffers_intersect
. Laat de rest zoals wordt voorgesteld (standaard).Klik op Uitvoeren.
In de afbeelding hieronder, de blauwe gebieden zijn waar aan beide criteria voor de afstand wordt voldaan.
U kunt de twee bufferlagen verwijderen en alleen die ene behouden waar zij overlappen, omdat dat is wat we in eerste instantie echt wilden weten:
6.2.9. Follow Along: De gebouwen uitnemen
Nu heeft u het gebied dat de gebouwen moet overlappen. Vervolgens wilt u de gebouwen in dat gebied uitnemen.
Zoek naar het menuitem
in de Toolbox van ProcessingSelecteer
buildings_34S
in Objecten uitnemen uit. Selecteer kruisen met in Waar de objecten (geometrisch voorvoegsel), selecteer de laag met de kruisingen van de buffers in Door objecten te vergelijken van. Sla op naarvector_analysis.gpkg
, en noem de laagwell_located_houses
.Klik op Uitvoeren en sluit het dialoogvenster
U zult waarschijnlijk vinden dat er niet veel lijkt te zijn veranderd. Als dat zo is, verplaats dan de laag well_located_houses tot boven in de lagenlijst en zoom dan in.
De rode gebouwen zijn die welke voldoen aan onze criteria, terwijl de groene gebouwen er niet aan voldoen.
Nu heeft u twee afzonderlijke lagen en kunt u
buildings_34S
uit de lagenlijst verwijderen.
6.2.10. Try Yourself Onze gebouwen verder filteren
We hebben nu een laag die ons alle gebouwen binnen 1 km van een school en binnen 50 m vanaf een weg toont. We moeten nu die selectie verkleinen om ons alleen gebouwen te tonen die binnen 500 m vanaf een restaurant liggen.
Maak, met behulp van de hierboven beschreven processen, een nieuwe laag, genaamd houses_restaurants_500m die uw laag well_located_houses verder filtert om alleen die gebouwen te laten zien die binnen 500 m van een restaurant liggen.
Antwoord
We gaan door een proces mt twee stappen om de nieuwe laag houses_restaurants_500m te maken:
Maak eerst een buffer van 500m rondom de restaurants en voeg de laag toe aan de kaart:
Neem vervolgens de gebouwen uit binnen dat gebied van de buffer:
Uw kaart zou nu alleen die gebouwen moeten laten zien die binnen 50m van een weg liggen, 1km vanaf een school en 500m vcanaf een restaurant:
6.2.11. Follow Along: Selecteren van gebouwen met de juiste grootte
We moeten hun grootte berekenen om te zien welke gebouwen de juiste grootte hebben (groter dan 100 vierkante meter).
Selecteer de laag houses_restaurants_500m en open Veldberekening door te klikken op de knop Veldberekening openen in de hoofdwerkbalk of in het venster van de attributentabel
Selecteer Nieuw veld aanmaken, stel de Naam voor veld in op
AREA
, kies Decimaal getal (real) als Type voor veld, en kies$area
uit de groep .Het nieuwe veld
AREA
zal de oppervlakte van elk gebouw in vierkante meters bevatten.Klik op OK. Het veld
AREA
is toegevoegd aan het einde van de attributentabel.Klik opnieuw op de knop Bewerken aan/uitzetten om het bewerken te voltooien en sla uw gegevens op als daarnaar gevraagd wordt.
Stel, op de tab Provider objectfilter in op
van de laageigenschappen, het"AREA >= 100
.Klik op OK.
Uw kaart zou nu alleen die gebouwen moeten laten zien die overeenkomen met uw begincriteria en die groter zijn dan 100 vierkante meter.
6.2.12. Try Yourself
Sla uw oplossing op als een nieuwe laag, met de benadering die u hierboven hebt geleerd om dat te doen. Het bestand zou moeten worden opgeslagen in dezelfde database van GeoPackage, met de naam solution
.
6.2.13. In Conclusion
Met de benadering van probleemoplossing voor GIS, samen met de gereedschappen voor vectoranalyse van QGIS, was u in staat een probleem met meerdere criteria snel en gemakkelijk op te lossen.
6.2.14. What’s Next?
In de volgende les, zullen we kijken naar de berekening van de kortste afstand over wegen, van het ene punt naar een ander.