7.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 in GIS, 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.
7.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 in GIS op te lossen. De manier om dat te doen is:
Benoem het probleem
Haal de gegevens op
Analyseer het probleem
Geef de resultaten weer
7.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
7.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
Al deze gegevens zijn beschikbaar via OSM en u zou kunnen besluiten dat ook de gegevensset die u voor deze handleiding heeft gebruikt ook voor deze les kan worden gebruikt.
Als u gegevens van een ander gebied wilt downloaden, ga dan naar het gedeelte 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.
7.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.
Laad, vanuit de database voor GeoPackage
training_data.gpkg
, alle bestanden die we zullen gebruiken voor dit hoofdstuk:landuse
buildings
roads
restaurants
schools
Zoom in op het bereik van de laag om Swellendam, Zuid-Afrika te kunnen zien.
Voor we doorgaan zouden we de laag roads moeten filteren om slechts een paar specifieke typen wegen te hebben om mee te werken.
Enkele van de wegen in de gegevensset van OSM zijn vermeld als unclassified
, tracks
, path
en footway
. 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 kunnen we deze objecten filteren met de volgende expressie:
"highway" NOT IN ('footway','path','unclassified','track') OR "highway" != NULL
De samenvoeging van de twee operatoren
NOT
enIN
betekent dat alle ongewenste objecten worden uitgesloten die deze attributen in het veldhighway
hebben staan.!= NULL
gecombineerd met de operatorOR
sluit wegen zonder waarden in het veldhighway
uit.U zult het pictogram opmerken naast de laag roads dat u helpt te onthouden dat op deze laag een filter is geactiveerd en dat niet alle objecten beschikbaar zijn in het project.
De kaart met alle gegevens zou er ongeveer als volgt uit moeten zien:
7.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 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. Maar 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 kunt een UTM CRS 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 parameter Bestandsnaam en noem het nieuwe GeoPackage vector_analysis;
Wijzig de Laagnaam naar roads_34S;
Wijzig de parameter CRS naar WGS 84 / UTM zone 34S;
Klik tenslotte op OK:
Dit zal de nieuwe database voor GeoPackage maken en die vullen met de laag roads_34S.
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 en elk van de oude lagen uit het project te verwijderen.Notitie
Wanneer u ervoor kiest om een laag op te slaan naar een bestaand GeoPackage, zal QGIS die laag toevoegen aan dat GeoPackage.
Als u eenmaal het proces voor elke laag 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.
7.2.6. Follow Along: Analyseren van het probleem: Afstanden van scholen en wegen¶
QGIS stelt u in staat afstanden te berekenen vanaf elk vectorobject.
Zorg er voor dat alleen de lagen roads_34S en buildings_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:guilabel:Buffer te gebruiken. U kunt dat vinden door de groep te vergroten.
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
Stel het in zoals dit
De standaard Afstand is in meters omdat onze gegevensset voor invoer in een geprojecteerd Coördinaten Systeem staan, 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…
de nieuwe laag roads_buffer_50m te noemen
en die op te slaan 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.
Echter, het zal u opvallen dat er binnen uw buffer bepaalde gebieden zijn, die overeenkomen met alle individuele wegen. Om dit probleem op te lossen:
Deselecteer de laag roads_buffer_50m en maak de buffer opnieuw met de instellingen zoals hieronder weergegeven:
Merk op dat we nu het vak Resultaat samenvoegen selecteren.
Sla de uitvoer op als roads_buffer_50m_dissolved
Klik op OK en sluit het dialoogvenster Buffer opnieuw
Als u eenmaal de laag 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.
7.2.7. Try Yourself Afstand van scholen¶
Gebruik dezelfde benadering als hierboven en maak een buffer voor uw scholen.
Die moet een straal van 1 km hebben. Sla de nieuwe laag op in het bestand vector_analysis.gpkg
als schools_buffer_1km_dissolved.
7.2.8. Follow Along: Overlappende gebieden¶
Nu hebben we gebieden waar de weg 50 m verwijderd is en 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 .
Stel dat als volgt in:
De invoerlagen zijn de twee buffers
De locatie om op te slaan is wederom het GeoPackage
vector_analysis.gpkg
En de naam voor de uitvoerlaag is road_school_buffers_intersect
Klik op Uitvoeren.
In de afbeelding hieronder geven de blauwe gebieden aan waar in één keer 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:
7.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
inStel het dialoogvenster van het algoritme in zoals in de volgende afbeelding
Klik op Uitvoeren en sluit dan 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.
7.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.
7.2.11. Follow Along: Selecteren van gebouwen met de juiste grootte¶
We moeten eerst 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 in de hoofdwerkbalk of in de attributentabel
Stel het in zoals dit
We gaan een nieuw veld AREA maken dat het gebied met de grootte van elk gebouw in vierkante meters zal bevatten.
Klik op OK. Het veld AREA is toegevoegd aan het einde van de attributentabel.
Klik opnieuw op de knop voor de modus Bewerken om het bewerken te voltooien en sla uw gegevens op als daarnaar gevraagd wordt.
Bouw, zoals eerder in deze les, een query
Klik op OK.
Uw kaart zou nu alleen die gebouwen moeten laten zien die overeenkomen met uw begincriteria en die groter zijn dan 100 m².
7.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.
7.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.
7.2.14. What’s Next?¶
In de volgende les, zullen we kijken naar de berekening van de kortste afstand over de weg van het ene punt naar een ander.