Analiza prekrivanja po več kriterijih (QGIS3)

Večkriterijska ponderirana analiza je postopek dodeljevanja območij na podlagi različnih lastnosti, ki jih morajo imeti izbrana območja. Čeprav je to običajna operacija GIS, jo je najbolje izvesti v rastrskem prostoru z uporabo pristopa, ki temelji na mreži.

Opomba

Vektorsko in rastrsko prekrivanje

Analizo prekrivanja vektorskih slojev lahko opravite z orodji za geoprocesiranje, kot so buffer, dissolve, difference in intersection. Ta metoda je idealna, če želite najti binarni ustrezen/neustrezen odgovor in delate s peščico slojev.

Delo v rastrskem prostoru vam omogoča razvrstitev primernosti - ne le najprimernejše lokacije. Omogoča tudi enostavno združevanje poljubnega števila vhodnih slojev in dodeljevanje različnih uteži posameznim merilom. Na splošno je to najprimernejši pristop za ugotavljanje primernosti lokacije.

V tem učbeniku je predstavljen tipičen potek dela za izvedbo analize primernosti lokacije - pretvorba izvornih vektorskih podatkov v ustrezne rastre, njihova ponovna razvrstitev in izvajanje matematičnih operacij.

Pregled naloge

V tem učbeniku bomo opredelili primerna področja za razvoj, in sicer

  • Blizu cest in

  • Stran od vodnih teles in

  • Ne na zaščitenem območju.

Pridobivanje podatkov

Uporabili bomo vektorske podatkovne sloje iz OpenStreetMap (OSM). OSM je globalna podatkovna zbirka prosto dostopnih osnovnih kartografskih podatkov. Geofabrik zagotavlja dnevno posodobljene shapefile podatkovnih nizov OpenStreetMap.

Uporabili bomo podatkovne sloje OSM za zvezno državo Assam v Indiji. Preneseni so bili Geofabrik India shapefiles, prirezani na državno mejo in zapakirani v eno datoteko GeoPackage. Kopijo geopaketa lahko prenesete s spodnje povezave:

assam.gpkg

Vir podatkov: [GEOFABRIK]

Postopek

  1. V brskalniku QGIS poiščite preneseno datoteko assam.gpkg. Razširite jo in povlecite vsakega od petih posameznih podatkovnih slojev na platno zemljevida. Na plošči Layers boste videli naložene sloje boundary, roads, protected_regions, water_polygons in water_polylines.

../../_images/1103.png
  1. First step in the overlay analysis, is to convert each data layer to raster. An important consideration is that all rasters must be of the same extent. We will use the boundary layer as the extent for all the rasters. Go to Processing ‣ Toolbox. Search for and locate the GDAL ‣ Vector conversion ‣ Rasterize (vector to raster) algorithm. Double-click to launch it.

../../_images/290.png
  1. V pogovornem oknu Rasterize (vector to raster) izberite roads kot Input layer. Ustvariti želimo izhodni raster, v katerem so vrednosti pikslov 1, če je cesta, in 0, če ceste ni. Vnesite 1 kot A fixed value to burn. Vhodni sloji so v projiciranem sistemu CRS, katerega enota so metri. Izberite Geoferenced units kot Output raster size units Nastavili bomo ločljivost izhodnega rastra na 15 metrov. Izberite 15 kot Width/Horizontal resolution in Height/Vertical resolution. Nato kliknite gumb poleg Output extent in za Use extent for izberite boundary.

../../_images/340.png
  1. Scroll down further and click the arrow button in the Assign a specific nodata value to output bands.

../../_images/418.png
  1. That field should now be set to Not set. This is important because when raster calculator (which we will use later) encounters a pixel with nodata value in any layer, it sets the output to nodata as well, resulting is wrong output.

../../_images/517.png
  1. Scroll down to find the Advanced Parameters and select the profile High Compression to apply the compression. This will generate the compressed raster file of smaller size after running the tool. Applying lossless compression is highly recommended while working with raster data.

../../_images/617.png
  1. Set the Rasterized output raster as raster_roads.tif and click Run.

../../_images/716.png
  1. Ko se obdelava konča, se na plošči raster_roads naloži nov sloj Layers. Privzeto oblikovanje bo prikazalo piksle s cestami kot bele, druge pa kot črne. Tudi druge 4 vektorske plasti želimo pretvoriti v rastre. Namesto da bi algoritem za rasterizacijo izvajali enega za drugim, lahko uporabimo vgrajeno funkcionalnost paketne obdelave in jih pretvorimo vse naenkrat. Za več informacij o paketni obdelavi glejte Batch Processing using Processing Framework (QGIS3) tutorial. Z desno tipko miške kliknite algoritem Rasterize (vector to raster) in izberite Execute as Batch Process.

../../_images/816.png
  1. V pogovornem oknu Batch Processing kliknite gumb v prvi vrstici stolpca Input layer. Izberite sloje boundary, protected_regions, water_polygons in water_polylines ter kliknite OK.

../../_images/916.png

Opomba

This Advanced Parameters option is not available while executing the algorithm in batch mode. You will have to repeat the steps above for all the layer and skip steps 8 to 12 for applying compression on all the Rasterized outputs.

  1. Parametre izpolnite z enakimi vrednostmi, kot smo jih uporabili v sloju cest. Po izpolnitvi prve vrstice parametra uporabite gumb Autofill ‣ Fill Down, da dodate enako vrednost za vse plasti.

../../_images/1022.png
  1. V zadnjem stolpcu Rasterized kliknite gumb v prvi vrstici. Kot kot Autofill mode izberite Fill with parameter values in Parameter to use izberite Input layer. Kliknite OK.

../../_images/1125.png
  1. Poiščite mapo v računalniku in sloj poimenujte raster_. Vmesnik za paketno obdelavo bo samodejno dopolnil ime z imenom sloja in izpolnil vse vrstice. Prepričajte se, da je polje Load layers on completion označeno, in kliknite OK.

../../_images/1223.png
  1. Ko se obdelava konča, se na plošči Layers naložijo 4 novi rastrski sloji. Opazili boste, da imamo 2 sloja, povezana z vodo - oba predstavljata vodo. Lahko ju združimo in tako dobimo en sam sloj, ki predstavlja vodna območja v regiji. Poiščite in poiščite algoritem Raster analysis ‣ Raster calculator v orodjarni Processing Toolbox. Z dvoklikom ga zaženite.

../../_images/1321.png
  1. V polje Expression vnesite naslednji izraz. V polju Layers lahko kliknete na ustrezno plast, da se samodejno vstavijo imena plasti. Ta izraz pomeni, da želimo sešteti vrednosti pikslov v prvem pasu obeh vodnih rastrov. Kliknite gumb ob polju Reference layer(s) in kot referenčni sloj izberite raster_water_polygons. Poimenujte izhodno datoteko raster_water_merged.tif in kliknite Run.

"raster_water_polygons@1" + "raster_water_polylines@1"
../../_images/1419.png
  1. Tako združen raster bo imel piksle z vrednostjo 1 za vsa območja z vodo. Opazili pa boste, da je na nekaterih območjih obstajal tako poligon z vodo kot poligon z vodo. Ta območja bodo imela piksle z vrednostjo 2, kar ni pravilno. To lahko popravimo s preprostim izrazom. Ponovno odprite algoritem Raster analysis ‣ Raster calculator.

../../_images/1518.png
  1. Vnesite naslednji izraz, ki bo dodelil vrednost 1, če se izraz ujema, in 0, če se ne ujema. Kliknite gumb poleg Reference layer(s) in izberite sloj raster_water_merged. Rezultat poimenujte raster_water.tif in kliknite Run.

"raster_water_merged@1" > 0
../../_images/1617.png
  1. Nastali sloj raster_water ima zdaj piksle samo z vrednostmi 0 in 1.

../../_images/1718.png
  1. Zdaj, ko imamo plasti, ki predstavljajo piksle cest in vode, lahko ustvarimo rastre bližine. Ti so znani tudi kot evklidske razdalje - vsaka piksla v izhodnem rastru predstavlja razdaljo do najbližjega piksla v vhodnem rastru. Ta dobljeni raster lahko nato uporabimo za določitev primernih območij, ki so v določeni razdalji od vhodnega. Poiščite in najdite algoritem GDAL ‣ Raster analysis ‣ Proximity (raster distance). Z dvojnim klikom ga zaženite.

../../_images/1816.png
  1. In the Proximity (Raster Distance) dialog, select raster_roads as the Input layer. Choose Georeferenced coordinates as the Distance units. As the input layers are in a projected CRS with meters as the units, enter 5000 (5 kilometers) as the Maximum distance to be generated. Make sure the Nodata value to use for the destination proximity raster value is Not set.

../../_images/1914.png
  1. You can expand the Advanced Parameters and select the profile High Compression to apply the compression. Name the output file as roads_proximity.tif and click Run.

../../_images/2014.png

Opomba

It may take upto 15 minutes for this process to run. It is a computationaly intensive algorithm that needs to compute distance for each pixel of the input raster and our input contains over 1 billion pixels.

  1. Po končani obdelavi bo na ploščo Layers dodan nov sloj roads_proximity. Za boljšo vizualizacijo spremenimo privzeto oblikovanje. Kliknite gumb Open the Layer Styling panel na plošči Layers. Vrednost Max spremenite na 5000 v razdelku Color gradient.

../../_images/2117.png
  1. Ponovite algoritem Proximity (Raster Distance) za sloj raster_water z enakimi parametri in poimenujte rezultat water_proximity.tif.

../../_images/2216.png
  1. Po končani obdelavi lahko uporabite podobno oblikovanje kot prej, da si bolje predstavite rezultate. Če kliknete po dobljenem rastru, boste videli, da gre za kontinuiteto vrednosti od 0 do 5000. Če želimo ta raster uporabiti v analizi prekrivanja , ga moramo najprej ponovno razvrstiti, da ustvarimo diskretne vrednosti. Ponovno odprite algoritem Raster analysis ‣ Raster calculator.

../../_images/2314.png
  1. Pikslom, ki so v bližini cest, želimo dodeliti višje število točk. Zato uporabimo naslednjo shemo.

  • 0-1000m -> 100

  • 1000-5000m -> 50

  • >5000m -> 10

    Vnesite naslednji izraz, ki za vnos uporabi zgornja merila. Kliknite gumb poleg Reference layer(s) in izberite sloj roads_proximity. Izhodno datoteko poimenujte roads_reclass.tif in kliknite Run.

    100*("roads_proximity@1"<=1000) + 50*("roads_proximity@1">1000)*("roads_proximity@1"<=5000) + 10*("roads_proximity@1">5000)
    
    ../../_images/2413.png
  1. Ko se postopek preklasifikacije konča, se na ploščo Layers doda nov sloj roads_reclass. Ta sloj ima samo tri različne vrednosti, 10, 50 in 100, ki označujejo relativno primernost pikslov glede na oddaljenost od cest. Ponovno odprite algoritem Raster analysis ‣ Raster calculator.

../../_images/2512.png
  1. Ponovite postopek ponovnega razvrščanja za sloj water_proximity. Tu bo shema obratna, saj bodo piksli, ki so bolj oddaljeni od vode, imeli višje število točk.

  • 0-1000m -> 10

  • 1000 -5000m -> 50

  • >5000m -> 100

    Vnesite naslednji izraz, ki za vnos uporabi zgornja merila. Kliknite gumb poleg Reference layer(s) in izberite sloj water_proximity Poimenujte izhod water_reclass.tif in kliknite Run.

    100*("water_proximity@1">5000) + 50*("water_proximity@1">1000)*("water_proximity@1"<=5000) + 10*("water_proximity@1"<1000)
    
    ../../_images/2612.png
  1. Zdaj smo pripravljeni na končno analizo prekrivanja. Spomnite se, da so naša merila za določanje primernosti naslednja - blizu cest, stran od vode in ne na zaščitenem območju. Odprite Raster analysis ‣ Raster calculator. Vnesite naslednji izraz, ki uporablja ta merila. Upoštevajte, da rezultat na koncu pomnožimo z raster_boundary@1, da izločimo vrednosti pikslov zunaj državne meje. Kliknite gumb poleg Reference layer(s) in izberite sloj raster_boundary. Izpis poimenujte overlay.tif in kliknite Run.

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

Opomba

V tem primeru dajemo enako težo bližini ceste in vode. V resničnem življenju imate lahko več meril z različno pomembnostjo. To lahko simulirate tako, da v zgornjem izrazu pomnožite rastre z ustreznimi tehtnicami. Če je na primer bližina cest dvakrat pomembnejša od bližine vode, lahko raster roads_reclass v zgornjem izrazu pomnožite z 2.

  1. Ko se obdelava konča, se nastali rastrski pregled doda na ploščo Layers`. Vrednosti pikslov v tem rastru se gibljejo od 0 do 200 - pri čemer je 0 najmanj primerno, 200 pa najbolj primerno območje za razvoj. Kliknite gumb Open the Layer Styling panel na plošči Layers.

../../_images/2812.png
  1. Izberite izrisovalnik singleband_pseudocolor in barvno rampo Spectral. Kliknite Classify, da uporabite barvno lestvic za raster.

../../_images/2911.png
  1. Kliknite privzete vrednosti oznak poleg vsake barve in vnesite ustrezne oznake. Oznake se bodo pojavile tudi kot legenda pod slojem overlay.

../../_images/3011.png
  1. Rastrski sloji so pravokotne mreže. Želimo skriti piksle zunaj državne meje. To lahko preprosto dosežemo tako, da na vektorski mejni sloj uporabimo izris Inverted Polygons`. Na plošči Layers se pomaknite navzdol in poiščite plast boundary. Kot upodabljajoči element izberite Inverted Polygons, druge možnosti pa pustite privzete.

../../_images/3114.png
  1. Da se učinek upodobitve prikaže, mora biti na vrhu kazala vsebine. Z desno tipko miške kliknite sloj boundary in izberite Move to Top.

../../_images/3211.png
  1. Preverite sloj in karta se bo posodobila, tako da bo prikazan raster overlay, prirezan na sloj boundary. To je končni rezultat, ki prikazuje območja v državi, ki so primerna za razvoj.

../../_images/3310.png

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