Veröffentlichungsdatum

27. November 2023

Für die kommende Übung arbeiten wir mit dem Datensatz gruental.gpkg. Importiere ihn in R. Zudem brauchen wir die folgenden libraries:

library("dplyr")
library("sf")
library("ggplot2")

Aufgabe 1: Geopackage “Layers”

Allenfalls ist euch beim Importieren des Geopackage gruental.gpkg folgende Warnmeldung aufgefallen:

Warning message:
In evalq((function (..., call. = TRUE, immediate. = FALSE, noBreaks. = FALSE,  :
  automatically selected the first layer in a data source containing more than one.

Diese Warnmeldung weist darauf hin, dass das Geopackage gruental.gpkg mehrere Layers (rep. Datensätze) enthält und nur der erste Layer importiert wurde. Bringe mit dem Befehl st_layers die Layer Namen in Erfahrung und nutze diese im Anschluss in read_sf (als Argument layer =) um die layers einzeln zu importieren und in variablen zu speichern (zB in als Variable wiesen und baeume).

Code
st_layers("datasets/rauman/gruental.gpkg")
## Driver: GPKG 
## Available layers:
##   layer_name geometry_type features fields       crs_name
## 1     wiesen       Polygon       37      1 CH1903+ / LV95
## 2     baeume         Point      185      2 CH1903+ / LV95

wiesen <- read_sf("datasets/rauman/gruental.gpkg", "wiesen")
baeume <- read_sf("datasets/rauman/gruental.gpkg", "baeume")

Aufgabe 2: Datensätze erkunden

Nimm dir etwas Zeit und erkunde die beiden Datensätze. Nutze dafür auch die Visualisierungsmöglichkeiten von ggplot (insbesondere geom_sf). Du kannst mehrere geom_sf() übereinander lagern, um gleichzeitig mehrere Datensätze darzustellen.

Code
ggplot(wiesen) +
  geom_sf(aes(fill = flaechen_typ)) +
  geom_sf(data = baeume) +
  theme_void()

ggplot(wiesen) +
  geom_sf() +
  geom_sf(data = baeume, aes(colour = baum_typ)) +
  theme_void()

Abbildung 56.1: Wiesen-Flächen eingefärbt nach Typ

Abbildung 56.2: Bäume eingefärbt nach Baumtyp

Aufgabe 3: Spatial Join mit Punkten

Wir wollen nun für jeden Baum wissen, ob er sich in einer Wiese befindet oder nicht. Dazu nutzen wir die GIS-Technik Spatial Join, die in der Vorlesung beschrieben wurde. In sf können wir Spatial Joins mit der Funktion st_join durchführen, dabei gibt es nur left sowie inner-Joins (vgl. PrePro 1 & 2). So müssen die Punkte “Links”, also an erste Stelle aufgeführt werden, da wir ja Attribute an die Punkte anheften wollen.

Beachte, dass der Output eine neue Spalte flaechen_typ aufweist. Diese ist leer (NA) wenn sich der entsprechende Baum nicht in einer Wiese befindet. Wie viele Bäume befinden sich in einer Wiese, wie viele nicht?

Code
baeume_join <- st_join(baeume, wiesen)

anzahl_in_wiese <- sum(!is.na(baeume_join$flaechen_typ))
anzahl_nicht_in_wiese <- sum(is.na(baeume_join$flaechen_typ))