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. basic 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:

  1. Benoem het probleem

  2. Haal de gegevens op

  3. Analyseer het probleem

  4. Geef de resultaten weer

7.2.2. basic 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:

  1. Het moet in Swellendam liggen

  2. Het moet op een redelijke rijafstand van een school (zeg 1 km) liggen

  3. Het moet meer dan 100 vierkante meter in grootte zijn

  4. Dichter dan 50 m vanaf een hoofdweg

  5. Minder dan 500 m vanaf een restaurant

7.2.3. basic De gegevens

We hebben de volgende gegevens nodig om deze vragen te kunnen beantwoorden:

  1. De woningen (gebouwen) in het gebied

  2. De wegen in en rondom de stad

  3. De locaties van scholen en restaurants

  4. 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. basic Follow Along: Een project beginnen en de gegevens ophalen

We moeten eerst de gegevens laden om mee te werken.

  1. Begin een nieuw project binnen QGIS

  2. Als u wilt kunt u een achtergrondkaart toevoegen. Open de Browser en laad de kaart voor de achtergrond OSM uit het menu XYZ Tiles.

    ../../../_images/osm_swellendam.png
  3. Laad, vanuit de database voor GeoPackage training_data.gpkg, alle bestanden die we zullen gebruiken voor dit hoofdstuk:

    1. landuse

    2. buildings

    3. roads

    4. restaurants

    5. schools

  4. 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.

  1. Klik met rechts op de laag roads en kies Filteren….

  2. 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 en IN betekent dat alle ongewenste objecten worden uitgesloten die deze attributen in het veld highway hebben staan.

    != NULL gecombineerd met de operator OR sluit wegen zonder waarden in het veld highway uit.

    U zult het pictogram indicatorFilter 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:

../../../_images/osm_swellendam_2.png

7.2.5. basic 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.

  1. Klik met rechts op de laag roads in het paneel Lagen;

  2. Klik op Exporteren –> Objecten opslaan als…;

  3. Kies in het dialoogvenster Vectorlaag opslaan als GeoPackage als Indeling;

  4. Klik op van de parameter Bestandsnaam en noem het nieuwe GeoPackage vector_analysis;

  5. Wijzig de Laagnaam naar roads_34S;

  6. Wijzig de parameter CRS naar WGS 84 / UTM zone 34S;

  7. Klik tenslotte op OK:

    ../../../_images/save_roads_34S.png

    Dit zal de nieuwe database voor GeoPackage maken en die vullen met de laag roads_34S.

  8. 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.

  9. 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. basic Follow Along: Analyseren van het probleem: Afstanden van scholen en wegen

QGIS stelt u in staat afstanden te berekenen vanaf elk vectorobject.

  1. Zorg er voor dat alleen de lagen roads_34S en buildings_34S zichtbaar zijn, om de kaart te vereenvoudigen terwijl u werkt.

  2. Klik op Processing ‣ Toolbox om de analytische bron van QGIS te openen. Als basis: alle algoritmes (voor vector en raster) analyses zijn in deze Toolbox beschikbaar.

  3. We beginnen met het gebied te berekenen rondom roads_34S door het algoritme:guilabel:Buffer te gebruiken. U kunt dat vinden door de groep Vector geometrie te vergroten.

    ../../../_images/processing_buffer_1.png

    Of u kunt buffer typen in het zoekmenu in het bovenste gedeelte van de Toolbox:

    ../../../_images/processing_buffer_2.png
  4. Dubbelklik erop om het dialoogvenster van het algoritme te openen

  5. Stel het in zoals dit

    ../../../_images/vector_buffer_setup.png
  6. 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.

  7. 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:

    1. te klikken op de knop en te kiezen voor Opslaan naar GeoPackage…

    2. de nieuwe laag roads_buffer_50m te noemen

    3. en die op te slaan in het bestand vector_analysis.gpkg

    ../../../_images/buffer_saving.png
  8. Klik op Uitvoeren en sluit dan het dialoogvenster Buffer.

Nu zal uw kaart er ongeveer zo uitzien:

../../../_images/roads_buffer_result.png

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:

  1. Deselecteer de laag roads_buffer_50m en maak de buffer opnieuw met de instellingen zoals hieronder weergegeven:

    ../../../_images/dissolve_buffer_setup.png

    Merk op dat we nu het vak Resultaat samenvoegen selecteren.

  2. Sla de uitvoer op als roads_buffer_50m_dissolved

  3. 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:

../../../_images/dissolve_buffer_results.png

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. basic 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.

Controleer uw resultaten

7.2.8. basic 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 Vector op elkaar leggen in Processing ‣ Toolbox.

  1. Stel dat als volgt in:

    ../../../_images/school_roads_intersect.png
    • 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

  2. Klik op Uitvoeren.

    In de afbeelding hieronder geven de blauwe gebieden aan waar in één keer aan beide criteria voor de afstand wordt voldaan!

    ../../../_images/intersect_result.png
  3. 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:

    ../../../_images/final_intersect_result.png

7.2.9. basic Follow Along: De gebouwen uitnemen

Nu heeft u het gebied dat de gebouwen moet overlappen. Vervolgens wilt u de gebouwen in dat gebied uitnemen.

  1. Zoek naar het menuitem Vector selectie ‣ Extract by location in Processing ‣ Toolbox

  2. Stel het dialoogvenster van het algoritme in zoals in de volgende afbeelding

    ../../../_images/location_select_dialog.png
  3. Klik op Uitvoeren en sluit dan het dialoogvenster

  4. 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.

    ../../../_images/select_zoom_result.png

    De rode gebouwen zijn die welke voldoen aan onze criteria, terwijl de groene gebouwen er niet aan voldoen.

  5. Nu heeft u twee afzonderlijke lagen en kunt u buildings_34S uit de lagenlijst verwijderen.

7.2.10. moderate 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.

Controleer uw resultaten

7.2.11. basic 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).

  1. Selecteer de laag houses_restaurants_500m en open Veldberekening door te klikken op de knop calculateField in de hoofdwerkbalk of in de attributentabel

  2. Stel het in zoals dit

    ../../../_images/buildings_area_calculator.png

    We gaan een nieuw veld AREA maken dat het gebied met de grootte van elk gebouw in vierkante meters zal bevatten.

  3. Klik op OK. Het veld AREA is toegevoegd aan het einde van de attributentabel.

  4. Klik opnieuw op de knop voor de modus Bewerken om het bewerken te voltooien en sla uw gegevens op als daarnaar gevraagd wordt.

  5. Bouw, zoals eerder in deze les, een query

    ../../../_images/buildings_area_query.png
  6. 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. basic 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.