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

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

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

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. 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. In de database voor GeoPackage training_data.gpkg vindt u de meeste gegevenssets die we zullen gebruiken voor dit hoofdstuk:

    1. buildings

    2. roads

    3. restaurants

    4. schools

    Laad ze, en ook landuse.sqlite.

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

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

  6. 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 en IN sluit alle objecten uit die deze attribuutwaarden in het veld highway hebben staan.

    IS NOT NULL gecombineerd met de operator AND sluit wegen zonder waarde in het veld highway uit.

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

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

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

  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 Bestandsnaam en noem het nieuwe GeoPackage vector_analysis

  5. Wijzig de Laagnaam naar roads_34S

  6. Wijzig het CRS naar WGS 84 / UTM zone 34S

  7. Klik op OK:

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

    Dit zal de nieuwe database voor GeoPackage maken en de laag roads_34S toevoegen.

  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.

    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.

  9. Elk van de oude lagen uit het project verwijderen

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

QGIS stelt u in staat afstanden te berekenen tussen 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 Buffer te gebruiken. U kunt dat vinden in de groep Vector geometrie.

    ../../../_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. Selecteer roads_34S als Invoerlaag, stel Afstand in op 50 en gebruik de standaardwaarden voor de rest van de parameters.

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

  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. Noem de nieuwe laag roads_buffer_50m

    3. Sla het op 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.

Merk op dat er binnen uw buffer bepaalde gebieden zijn, die overeenkomen met elke weg. Om dit probleem op te lossen:

  1. Deselecteer de laag roads_buffer_50m en maak de buffer opnieuw met Resultaten samenvoegen ingeschakeld:

    ../../../_images/dissolve_buffer_setup.png
  2. Sla de uitvoer op als roads_buffer_50m_dissolved

  3. Klik op Uitvoeren en sluit het dialoogvenster Buffer

Als u de laag eenmaal 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.

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

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

  1. Gebruik de twee lagen met buffers als Invoerlaag en Overleglaag, kies vector_analysis.gpkg GeoPackage in Kruising met Laagnaam road_school_buffers_intersect. Laat de rest zoals wordt voorgesteld (standaard).

    ../../../_images/school_roads_intersect.png
  2. Klik op Uitvoeren.

    In de afbeelding hieronder, de blauwe gebieden zijn waar 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

6.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 de Toolbox van Processing

  2. Selecteer 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 naar vector_analysis.gpkg, en noem de laag well_located_houses.

    ../../../_images/location_select_dialog.png
  3. Klik op Uitvoeren en sluit 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.

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

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

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

  2. 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 Geometrie.

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

    Het nieuwe veld AREA zal de oppervlakte van elk gebouw in vierkante meters bevatten.

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

  4. Klik opnieuw op de knop toggleEditing Bewerken aan/uitzetten om het bewerken te voltooien en sla uw gegevens op als daarnaar gevraagd wordt.

  5. Stel, op de tab Bron van de laageigenschappen, het Provider objectfilter in op "AREA >= 100.

    ../../../_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 vierkante meter.

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

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.