Multi Criteria Overlay Analyse (QGIS3)

Multi-criteria gewogen overlay-analyse is het proces van het toewijzen van gebieden op basis van een variëteit aan eigenschappen die de geselecteerde gebieden zouden moeten hebben. Hoewel dit een veel voorkomende bewerking in GIS is, wordt die het beste uitgevoerd in de rasterruimte met een op een raster gebaseerde benadering.

Notitie

Vector- vs Raster-overlays

U kunt de overlay-analyse uitvoeren op vectorlagen met gereedschappen voor geoverwerking, zoals buffer, dissolve, difference en intersection. Deze methode is ideaal als u een binair antwoord geschikt/niet-geschikt zoekt en u werkt met een handjevol lagen.

Werken in de rasterruimte geeft u een rangschikking van de geschiktheid - niet alleen de meest geschikte plek. Het stelt u ook in staat elke aantal invoerlagen gemakkelijk te combineren en verschillende wegingen toe te wijzen aan elk criterium. Over het algemeen is dit de voorkeursbenadering voor geschiktheid.

Deze handleiding gaat door de typische werkstroom voor het uitvoeren van een geschikte plaats-analyse - converteren van bron vectorgegevens naar toepasselijke rasters, ze opnieuw te classificeren en rekenkundige bewerkingen uitvoeren.

Overzicht van de taak

In deze handleiding zullen we de geschikte gebieden voor ontwikkeling identificeren, dat zijn

  • Dichtbij wegen en

  • Niet in de buurt van watergebieden en

  • Niet in een beschermde regio.

De gegevens ophalen

We zullen vector gegevenslagen gebruiken van OpenStreetMap (OSM). OSM is een globale database van vrij beschikbare basis kaartgegevens. Geofabrik verschaft dagelijks bijgewerkte Shapefiles voor gegevenssets van OpenStreetMap.

We zullen de gegevenslagen van OSM gebruiken voor de staat Assam in India. Geofabrik India shapefiles werden gedownload, geclipt tot de staatsgrenzen en verpakt in één enkel bestand voor GeoPackage. U kunt een kopie van het Geopackage downloaden vanaf de link hieronder:

assam.gpkg

Gegevensbron: [GEOFABRIK]

Procedure

  1. Blader naar het gedownloade bestand assam.gpkg in QGIS Browser. Vergroot het en sleep elk van de 5 individuele gegevenslagen naar het kaartvenster. U zult de lagen boundary, roads, protected_regions, water_polygons en water_polylines zien geladen in het paneel Lagen.

../../_images/1103.png
  1. De eerste stap in de overlay-analyse, is om elke gegevenslaag te converteren naar een raster. Een belangrijke overweging is dat alle rasters hetzelfde bereik moeten hebben. We zullen de laag boundary gebruiken als het bereik voor alle rasters. Ga naar Processing ‣ Toolbox. Zoek naar en lokaliseer het algoritme GDAL ‣ Vector conversie ‣ Rasteriseren (vector naar raster). Dubbelklik er op om het te starten.

../../_images/290.png
  1. In het dialoogvenbster Rasteriseren (vector naar raster), selecteer roads als de Invoerlaag. We willen een uitvoerraster maken met een pixelwaarde van 1 waar een weg is en 0 waar geen wegen zijn. Voer 1 in als de Een vaste waarde om te branden. De invoerlagen zijn in een geprojecteerd CRS met meters als de eenheid. Selecteer Eenheden voor geoverwijzingen als de Eenheden grootte uitvoerraster. We zullen de resolutie van het uitvoerraster instellen op 15 meters. Selecteer 15 voor zowel Breedte/Horizontale resolutie als Hoogte/Verticale resolutie. Klik vervolgens op de knop naast Bereik uitvoer en selecteer boundary voor Bereik gebruiken van.

../../_images/340.png
  1. Scroll verder naar beneden en klik op de pijlknop in Wijs een specifieke waarde Geen data toe aan de uitvoerbanden.

../../_images/418.png
  1. Dat veld zou nu moeten zijn ingesteld op Niet bepaald. Dit is belangrijk omdat wanneer rasterberekeningen (die we later zullen gebruiken) een pixel met de waarde Geen data tegenkomt, het de uitvoer ook op Geen data instelt, wat resulteert in verkeerde uitvoer.

../../_images/517.png
  1. Scroll naar beneden naar de Geavanceerde parameters en selecteer het profiel Hoge compressie om de compressie toe te passen. Dit zal het gecomprimeerde rasterbestand kleiner maken na het uitvoeren van het gereedschap. Toepassen van compressie zonder verlies wordt enorm aanbevolen bij het werken met rastergegevens.

../../_images/617.png
  1. Stel het uitvoerraster Gerasteriseerd in als raster_roads.tif en klik op Uitvoeren.

../../_images/716.png
  1. Als Processing eenmaal is voltooid zult u een nieuwe laag raster_roads zien geladen in het paneel Lagen. De standaard opmaak zal pixels met wegen weergeven als wit en andere als zwart. We willen ook nog 4 andere vectorlagen converteren naar rasters. In plaats van het algoritme Rasteriseren keer voor keer uit te voeren, kunnen we de ingebouwde functionaliteit Batch verwerken gebruiken om ze allemaal in één keer te converteren. Bekijk de handleiding Massa verwerken met behulp van Framework Processing (QGIS 3) om meer te leren over Batch verwerken. Klik met rechts op het algoritme Rasteriseren (vector naar raster) en selecteer Uitvoeren als een Batch-proces.

../../_images/816.png
  1. Klik, in het dialoogvenster Batch-processing, op de knop op de eerste regel van de kolom Invoerlaag. Selecteer de lagen boundary, protected_regions, water_polygons en water_polylines en klik op OK.

../../_images/916.png

Notitie

Deze optie van Geavanceerde parameters is niet beschikbaar als het algoritme wordt uitgevoerd in modus Batch. U zult de stappen hierboven moeten herhalen voor alle lagen en de stappen 8 tot en met 12 overslaan voordat u compressie toepast op alle uitvoer Gerasteriseerd.

  1. Vul de parameters in met dezelfde waarden als die we gebruikten voor de laag roads. Gebruik, na het vullen van de eerste regel van de parameter, de knop Autom. vullen ‣ Naar beneden vullen om dezelfde waarde voor alle lagen toe te voegen.

../../_images/1022.png
  1. In de laatste kolom Gerasteriseerd, klik op de knop op de eerste regel. Selecteer Vullen met parameterwaarden als de Modus Automatisch vullen en Invoerlaag als de Parameter om te gebruiken. Klik op OK.

../../_images/1125.png
  1. Blader naar een map op uw computer en noem de laag raster_. De interface voor Batch verwerken zal de naam automatisch compleet maken met de naam van de laag en alle regels vullen. Zorg er voor dat het vak Lagen laden bij voltooien is geselecteerd en klik op OK.

../../_images/1223.png
  1. Als de verwerking eenmaal is voltooid zult u 4 nieuwe rasterlagen hebben geladen in het paneel Lagen. U zult hebben opgemerkt dat we nu 2 watergerelateerde lagen hebben - die beide water weergeven. We kunnen ze samenvoegen oméén enkele laag te hebben die watergebieden in de regio weergeeft. Zoek naar en lokaliseer het algoritme Raster analyse ‣ Raster calculator in de Toolbox van Processing. Dubbelklik er op om het te starten.

../../_images/1321.png
  1. Voer de volgende expressie in het vak Expressie in. U kunt klikken op de toepasselijke laag in het vak Lagen om de laagnamen automatisch in te voegen. Deze expressie betekent dat we de pixelwaarden in de eerste band van de beide waterrasters bij elkaar willen optellen. Klik op de knop naast Reference layer(s) en selecteer raster_water_polygons als de verwijzingslaag. Noem de uitvoer raster_water_merged.tif en klik op Uitvoeren.

"raster_water_polygons@1" + "raster_water_polylines@1"
../../_images/1419.png
  1. Het resulterende samengevoegde raster zal pixels hebben met de waarde 1 voor alle gebieden met water. Maar het zal u opvallen dat er sommige regio’s zijn waar zowel een waterpolygoon als een waterpolylijn was. Die gebieden zullen pixels hebben met de waarde 2 - wat niet juist is. We kunnen dit repareren met een eenvoudige expressie. Open het algoritme Raster analyse ‣ Raster calculator opnieuw.

../../_images/1518.png
  1. Voer de volgende expressie in die de waarde 1 zal toewijzen als de expressie overeenkomt en 0 als dat niet zo is. Klik op de knop naast Reference layer(s) en selecteer raster_water_merged. Noem de uitvoer raster_water_.tif en klik op Uitvoeren.

"raster_water_merged@1" > 0
../../_images/1617.png
  1. De resulterende laag raster_water heeft nu pixels met alleen de waarden 0 en 1.

../../_images/1718.png
  1. Nu we lagen hebben die pixels voor wegen en water weergeven, kunnen we rasters voor nabijheid maken. Deze zijn ook wel bekend als Euclidische afstanden - waar elke pixel in het uitvoerraster de afstand naar de dichtstbijzijnde pixel in de invoerlaag weergeeft. Dit resulterende raster kan dan worden gebruikt om geschikte gebieden te bepalen die binnen een bepaalde afstand vanaf de invoer liggen. Zoek naar en lokaliseer het algoritme GDAL ‣ Raster analyse ‣ Proximity (raster afstand). Dubbelklik er op om het te starten.

../../_images/1816.png
  1. Selecteer, in het dialoogvenster Proximity (raster afstand), raster_roads als de Invoerlaag. Kies Coördinaten met geoverwijzingen als de Afstandseenheden. Omdat de invoerlagen in een geprojecteerd CRS staan met meters als de eenheden, voer 5000 (5 kilometers) in als de De maximale afstand die moet worden gegenereerd. Zorg er voor dat de waarde voor Waarde Geen gegevens om te gebruiken voor het doel-nabijheidsraster is Niet bepaald.

../../_images/1914.png
  1. U kunt de Geavanceerde parameters vergroten en het profiel Hoge compressie selecteren om de compressie toe te passen. Noem het uitvoerbestand roads_proximity.tif en klik op Uitvoeren.

../../_images/2014.png

Notitie

Het kan ongeveer 15 minuten duren om dit proces uit te voeren. Het is een computertechnisch intensief algoritme dat de afstand moet berekenen voor elke pixel van het invoerraster en onze invoer bevat meer dan 1 biljoen pixels.

  1. Als de verwerking is voltooid zal een nieuwe laag roads_proximity zijn toegevoegd aan het paneel Lagen. Laten we, om het beter te visualiseren, de standaard opmaak wijzigen. Klik op de knop Paneel Laag opmaken openen in het paneel Lagen. Wijzig de waarde Max onder Kleurovergang naar 5000.

../../_images/2117.png
  1. Herhaal het algoritme Proximity (raster afstand) voor de laag raster_water met dezelfde parameters en noem de uitvoer water_proximity.tif.

../../_images/2216.png
  1. Als de verwerking is voltooid kunt u dezelfde opmaak als eerder toepassen om de resultaten beter te visualiseren. Als u willekeurig in het resulterende raster klikt, zult u zien dat het een continuüm is van waarden tussen 0 en 5000. We moeten, om dit raster te kunnen gebruiken in de overlay-analyse, het eerst opnieuw classificeren om afzonderlijke waarden te maken. Open het algoritme Raster analyse ‣ Raster calculator opnieuw.

../../_images/2314.png
  1. We willen een hogere score geven aan pixels die dichterbij wegen liggen. Dus laten we het volgens schema gebruiken.

  • 0-1000m –> 100

  • 1000-5000m –> 50

  • >5000m –> 10

    Voer de volgende expressie in die bovenstaande criteria toepast op de invoer. Klik op de knop naast Reference layer(s) en selecteer de laag roads_proximity. Noem de uitvoer roads_reclass.tif en klik op Uitvoeren.

    100*("roads_proximity@1"<=1000) + 50*("roads_proximity@1">1000)*("roads_proximity@1"<=5000) + 10*("roads_proximity@1">5000)
    
    ../../_images/2413.png
  1. Als het proces voor opnieuw classificeren is voltooid, zal een nieuwe laag roads_reclass worden toegevoegd aan het paneel Lagen. Deze laag heeft slechts 3 verschillende waarden, 10, 50 en 100 die de relatieve geschiktheid van de pixels aangeven ten opzichte van de afstand vanaf wegen. Open het algoritme Raster analyse ‣ Raster calculator opnieuw.

../../_images/2512.png
  1. Herhaal het proces voor opnieuw classificeren voor de laag water_proximity. Hier zal het schema zijn omgedraaid, waarbij pixels die verder van water af liggen een hogere score zullen hebben.

  • 0-1000m –> 10

  • 1000 -5000m —> 50

  • >5000m –> 100

    Voer de volgende expressie in die bovenstaande criteria toepast op de invoer. Klik op de knop naast Reference layer(s) en selecteer de laag water_proximity. Noem de uitvoer water_reclass.tif en klik op Uitvoeren.

    100*("water_proximity@1">5000) + 50*("water_proximity@1">1000)*("water_proximity@1"<=5000) + 10*("water_proximity@1"<1000)
    
    ../../_images/2612.png
  1. Nu zijn we klaar om de uiteindelijke overlay-analyse uit te voeren. Weet nog dat onze criteria voor het bepalen van de geschiktheid de volgende waren - dicht bij wegen, weg van het water en niet in een beschermde regio. Open Raster analyse ‣ Raster calculator. Voer de volgende expressie in die deze criteria toepast. Onthoud dat we het resultaat vermenigvuldigen met raster_boundary@1 aan het einde om pixelwaarden buiten de staatsgrenzen te negeren. Klik op de knop naast Reference layer(s) en selecteer de laag raster_boundary. Noem de uitvoer overlay.tif en klik op Uitvoeren.

("roads_reclass@1" + "water_reclass@1")*("raster_protected_regions@1"  !=  1 )*"raster_boundary@1"
../../_images/2712.png

Notitie

In dit voorbeeld geven we een gelijk gewicht aan zowel de nabijheid van wegen als van water. In een scenario voor de echte wereld zou u meerdere criteria met een verschillende mate van belangrijkheid kunnen hebben. U kunt dat simuleren door de rasters met het toepasselijke gewicht in de bovenstaande expressie te vermenigvuldigen. Bijvoorbeeld als nabijheid van wegen twee keer zo belangrijk is als nabijheid van water, kunt u het raster roads_reclass vermenigvuldigen met 2 in de bovenstaande expressie.

  1. Als de verwerking is voltooid, zal de resulterende raster overlay worden toegevoegd aan het paneel Lagen. De pixelwaarden in dit raster liggen tussen 0 en 200 - waar 0 het minst geschikte en 200 het meest geschikte gebied voor ontwikkeling is. Klik op de knop Paneel Laag opmaken openen in het paneel Lagen.

../../_images/2812.png
  1. Selecteer de renderer enkelbands_pseudocolor en het kleurverloop Spectral. Klik op Classificeren om het kleurverloop toe te passen op het raster.

../../_images/2911.png
  1. Klik op de standaard labelwaarden naast elke kleur en voer een toepasselijk label in. De labels zullen ook als Legenda verschijnen onder de laag overlay.

../../_images/3011.png
  1. Rasterlagen zijn rechthoekige rasters. We willen pixels buiten de grenzen van de staat verbergen. Een gemakkelijke manier om dat te bereiken is het toepassen van een Geïnverteerde polygonen gerenderd op de vector boundary-laag. Scroll naar beneden in het paneel Lagen en lokaliseer de laag boundary. Selecteer Geïnverteerde polygonen als de renderer en laat de andere opties standaard.

../../_images/3114.png
  1. Hij moet bovenaan de inhoudsopgave staan om het effect van de renderer weer te geven. Klik met rechts op de laag boundary en selecteer Verplaats naar bovenste.

../../_images/3211.png
  1. Selecteer de laag en het kaartvenster zou moeten bijwerken om het raster overlay weer te geven, geclipt tot de laag boundary. Dit is de uiteindelijk uitvoer die gebieden weergeeft binnen de staat die geschikt zijn voor ontwikkeling.

../../_images/3310.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)