Veröffentlichungsdatum

11. Dezember 2023

In der letzten Übung (Übung A) haben wir die potentielle Standorte für Windkraftanalgen hinsichtlich zweier Distanzkriterien bewertet. In dieser Übung (Übung B) schliessen wir die Multikriterien-Evaluation ab, in dem wir:

  1. Folgende Kriterien mitberücksichtigen: Windgeschwindigkeit und Hangneigung
  2. Die Ausschlusskriterien vom Resultat ausschliessen

Für Punkt 1 müssen wir zusätzliche Daten einlesen, die im Rasterformat daherkommen. Punkt 2 beruht im Wesentlichen auf Daten, die wir bereits verwendet haben.

Aufgabe 1: Rasterdaten einlesen

Zur Bewertung der Standorte hinsichtlich Windgeschwindigkeit steht uns der Datensatz wind250m.tif zur Verfügung (siehe Tabelle 63.1). Lade den Datensatz mit der Funktion rast() in R ein. Explorieren Sie den Datensatz visuell und versuchen Sie ein Verständnis für die Datensätze zu bekommen.

Code
wind250m <- rast("datasets/rauman/wind250m.tif")
Code
tm_shape(wind250m) +
  tm_raster(style = "cont")

Datensatz ‘wind250m’ zur Windgeschwindigkeit in m pro Sekunde

Aufgabe 2: Wind bewerten

Diese Rasterdaten müssen wir nicht weiter verarbeiten, wir können sie direkt bewerten. Führen Sie diese Bewertung aufgrund nachstehender Tabelle durch. Nutzen Sie dafür die Funktion classify() analog Kapitel 63.3. Sie können die Schwellwerte frei wählen, wir werden diejenigen verwenden, die in Tabelle 64.1 festgehalten sind.

Code
#### reclassify wind
wind_klassen <- tribble(
  ~von, ~bis, ~zu,
  0, 20, 0.0,
  20, 30, 0.2,
  30, 40, 0.4,
  40, 50, 0.6,
  50, 60, 0.8,
  60, Inf, 1.0
)

wind_klassen <- as.matrix(wind_klassen)

wind_classify <- classify(wind250m, wind_klassen)

Aufgabe 3: Slope berechnen und bewerten

Für die Berechnung und anschliessende Bewertung der Hangneigung brauchen wir ein Höhenmodell. Lade das Höhenmodell dhm250m.tif herunter (siehe Tabelle 63.1) und in R ein. Berechne anschliessend die Hangneigung mit der Funktion terrain() analog Kapitel 58.2 (beachten Sie die Einheit des Output!).

Bewerten Sie die Hangneigung danach gemäss Tabelle Tabelle 64.1.

Code
dhm250m <- rast("datasets/rauman/dhm250m.tif")

neigung <- terrain(dhm250m, v = "slope", unit = "degrees")

#### reclassify slope
neigung_klassen <- tribble(
  ~von, ~bis, ~zu,
  0, 4, 1.0,
  4, 8, 0.8,
  8, 12, 0.6,
  12, 16, 0.4,
  16, 20, 0.2,
  20, 90, 0.0
)

neigung_klassen <- as.matrix(neigung_klassen)

neigung_classify <- classify(neigung, neigung_klassen)
Tabelle 64.1: Bewertungstabelle die Windgeschwindigkeit (m/s) und Hangneigung (Grad)
Windgeschwindigkeit
Hangneigung
von bis zu von bis zu
0 20 0.0 0 4 1.0
20 30 0.2 4 8 0.8
30 40 0.4 8 12 0.6
40 50 0.6 12 16 0.4
50 60 0.8 16 20 0.2
60 Inf 1.0 20 90 0.0

Aufgabe 4: Raster Overlay

Analog Kapitel 63.4 können wir an dieser Stelle eine vorläufige Beurteilung der Gebiete durchführen. Du kannst die Gewichte wieder so anpassen wie du willst.

Code
overlay_prelim_3 <- (strassen_classify + schutzgebiete_classify + wind_classify + neigung_classify) / 4

tm_shape(overlay_prelim_3) +
  tm_raster(palette = "-Spectral", breaks = seq(0, 1, 0.2), style = "cont", title = "Eignung") +
  tm_layout(frame = FALSE)

Abbildung 64.1: Ungewichtetes Überlagern aller Kriterien mit Ausnahme der Ausschlussgebiete

Aufgabe 5: Ausschlusskriterien

Als Auschlussgebiete gelten Flächen, wo keine Windkraftanlagen gebaut werden können. Dazu gehören bewohnte Flächen, nationale Schutzgebiete, Waldgebiete und Seen. (Zwar werden Schutzgebiete in unserer Analyse bereits berücksichtigt, aber nicht kategorisch vom Resultat ausgeschlossen.)

Code
schutzgebiete <- read_sf(gpkg_path, "Nationale_Schutzgebiete") |> st_transform(2056)
siedlungsgebiet <- read_sf(gpkg_path, "Bewohnte_Flaeche") |> st_transform(2056)
wald <- read_sf(gpkg_path, "Waldgebiete") |> st_transform(2056)
seen <- read_sf(gpkg_path, "Seeflaechen") |> st_transform(2056)
kt_schwyz <- read_sf(gpkg_path, "Untersuchungsgebiet_Schwyz") |> st_transform(2056)

Um diese Flächen aus von unserem Resultat auzuschliessen, können wir wieder die Funktion mask() verwenden (siehe Kapitel 63.5). Doch diesmal möchten wir nicht die Flächen ausserhalb der Polygone mit NA ersetzen, sondern die Flächen innerhalb der Polygone. Deshalb verwenden wir mask() mit dem Argument inverse = TRUE.

Versuche mit mask(), den oben erwähnten Vektordatensätze sowie der Option inverse = TRUE die Ausschlussgebiete vom Raster-Overlay zu entfernen und visualisiere das Resultat.

Code
overlay_prelim_4 <- overlay_prelim_3 |>
  mask(schutzgebiete, inverse = TRUE) |>
  mask(siedlungsgebiet, inverse = TRUE) |>
  mask(wald, inverse = TRUE) |>
  mask(seen, inverse = TRUE) |>
  mask(kt_schwyz)

tmap_mode("view")

tm_shape(overlay_prelim_4) +
  tm_raster(palette = "-Spectral", breaks = seq(0, 1, 0.2), style = "cont", alpha = 0.6) +
  tm_basemap("Esri.WorldImagery")