Code
<- rast("datasets/rauman/wind250m.tif") wind250m
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:
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.
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.
<- rast("datasets/rauman/wind250m.tif") wind250m
tm_shape(wind250m) +
tm_raster(style = "cont")
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.
#### reclassify wind
<- tribble(
wind_klassen ~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
)
<- as.matrix(wind_klassen)
wind_klassen
<- classify(wind250m, wind_klassen) wind_classify
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.
<- rast("datasets/rauman/dhm250m.tif")
dhm250m
<- terrain(dhm250m, v = "slope", unit = "degrees")
neigung
#### reclassify slope
<- tribble(
neigung_klassen ~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
)
<- as.matrix(neigung_klassen)
neigung_klassen
<- classify(neigung, neigung_klassen) neigung_classify
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 |
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.
<- (strassen_classify + schutzgebiete_classify + wind_classify + neigung_classify) / 4
overlay_prelim_3
tm_shape(overlay_prelim_3) +
tm_raster(palette = "-Spectral", breaks = seq(0, 1, 0.2), style = "cont", title = "Eignung") +
tm_layout(frame = FALSE)
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.)
<- read_sf(gpkg_path, "Nationale_Schutzgebiete") |> st_transform(2056)
schutzgebiete <- read_sf(gpkg_path, "Bewohnte_Flaeche") |> st_transform(2056)
siedlungsgebiet <- read_sf(gpkg_path, "Waldgebiete") |> st_transform(2056)
wald <- read_sf(gpkg_path, "Seeflaechen") |> st_transform(2056)
seen <- read_sf(gpkg_path, "Untersuchungsgebiet_Schwyz") |> st_transform(2056) kt_schwyz
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.
<- overlay_prelim_3 |>
overlay_prelim_4 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")