library("sf")
library("terra")
library("dplyr")
library("readr")
library("ggplot2")
library("terra")
library("adehabitatHR")
library("ggspatial")Berechnung Homeranges
Libraries laden
Daten einlesen
Einlesen des Gesamtdatensatzes von Moodle, Sichtung des Datensatzes und der Datentypen
Rehe <- read_delim("datasets/fallstudie_n/Homeranges_Rehe_landforst_261019.csv", delim = ";")
str(Rehe)Aufgabe 1
Telemetriedaten sind raum-zeitliche Daten. Obwohl in unserer Analyse nicht zentral ist eine der wichtigsten Hilfsvariablen der Zeitstempel der GPS-Lokalisationen, gerade wenn es um Bewegungsanalysen geht. Im Datensatz Rehe soll daher eine neue Spalte mit Datum und Zeit in der gleichen Spalte eingefügt werden.
Finde den Fehler: Beim Format hat sich ein Fehler eingeschlichen.
Rehe <- Rehe |>
mutate(UTC_DateTime = as.POSIXct(paste(UTC_Date, UTC_Time),
format = "%Y-%m-%d %H:%M:%S"))Aufgabe 2
In dieser Aufgabe geht es insbesondere darum, die Daten räumlich zu visualisieren und das Sampling Design nachzuvollziehen und das Systemverständnis zu schärfen. Ausserdem soll im Rahmen der Arbeiten die Verwendung von R als GIS-Software nähergebracht werden. Für einzelne Arbeitsschritte finden sich im Folgenden verschiedene Code-snipptes
Aufgabe 2.1
Mit den folgenden Zeilen können die GPS-Punkte der Rehe/eines bestimmten Rehs visualisiert werden:
Rehe_sf <- st_as_sf(Rehe, coords = c("X", "Y"), crs = 21781)
plot(Rehe_sf["TierID"])
RE13 <- filter(Rehe_sf, TierID == "RE13")
plot(RE13["TierID"])
Aufgabe 2.2
Aus diesen Punktdaten können kann nun die Homerange der Rehe berechnet werden. Um ein Gefühl zu entwickeln, lohnt sich das Herumschrauben am prozentualen Anteil Punkte in der Homerange (Funktion getverticeshr). Typischerweise wird mit 95 % (Homerange) oder 50 % (Corearea) der Punkte gearbeitet.
Ziel: eine Karte erstellen mit der Visualiserung mindestens einer HR
RE13_xy <- st_coordinates(RE13)
RE13_sp <- as(RE13["TierID"], "Spatial")
sigma <- 0.5 * (sd(RE13_xy[, 1]) + sd(RE13_xy[, 2]))
n <- nrow(RE13)
href <- sigma * n ^ (-1 / 6) * 0.9 # scaled reference: href * 0.9
kud <- kernelUD(RE13_sp, h = href, grid = 25)
homerange <- getverticeshr(kud, percent = 95) # Berechnung der Home Range (95% Isopleth)
# Schreibt HR in den Results-Ordner (als Shapefile)
hr <- st_as_sf(homerange)
st_write(
hr,
dsn = "datasets/fallstudie_n/Results",
layer = "HR_RE13",
driver = "ESRI Shapefile",
delete_layer = TRUE
)
## Deleting layer `HR_RE13' using driver `ESRI Shapefile'
## Writing layer `HR_RE13' to data source
## `datasets/fallstudie_n/Results' using driver `ESRI Shapefile'
## Writing 1 features with 2 fields and geometry type Polygon.Die Homerange kann zB. mit ggplot2 visualisiert und die dafür verwendeten Punkte darübergelegt werden.
# mit diesem Befehl kann die HR geplottet werden
ggplot(hr) +
geom_sf(size = 1, alpha = 0.3, color = "red", fill="red") +
coord_sf(datum = sf::st_crs(21781))+
theme(
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
legend.position="none"
)
# und die Punkte der GPS-Lokalisationen darüber gelegt werden
ggplot(hr) +
geom_sf(size = 1, alpha = 0.3, color = "red", fill="red") +
geom_sf(data = RE13, aes(fill = "red")) +
coord_sf(datum = sf::st_crs(21781))+
theme(
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
legend.position="none"
)
Aufgabe 2.3
pk25_wpz <- rast("datasets/fallstudie_n/pk25_wpz.tif")Die Grafik kommt noch nicht sehr schön daher, versucht zur besseren Orientierung die Homerange mit dieser Pixelkarte (Landeskarte 1:25000, auf Moodle) im Hintergrund zu plotten.
ggplot(hr, aes(color = "red", fill = "red")) +
annotation_spatial(pk25_wpz) +
geom_sf(size = 1, alpha = 0.3) +
geom_sf(data = RE13, aes(fill = "red")) +
coord_sf(datum = sf::st_crs(21781)) +
theme(
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
legend.position = "none"
)
Aufgabe 2.4
Hier geht es darum, nachzuvollziehen wie das Sampling Grid mit den Kreisen im Zusammenhang mit der Homerange gelegt wurde. Die Kreise wurden bekanntlich als Grundlage für die Extraktion der Umweltvariablen innerhalb der Homeranges verwendet
- Ausdehnung des Grids basiert auf
hr - Cellsize des Grids: 25m
x25 <- st_as_sf(st_make_grid(hr, 25, what = "centers")) # Mittelpunkte in einem Raster mit 25m Auflösung generieren
#x25 <- st_filter(x25, hr, .predicate = st_within) # Falls nur Zentren innerhalb der Homerange behalten werden sollen
grid_plot <- st_buffer(x25, 12.5) # Kreise mit Radius 12.5 m erzeugen
ggplot() +
geom_sf(data = grid_plot, color = "black", fill = NA) +
geom_sf(data = RE13, color = "blue") +
geom_sf(data = hr, color = "red", fill = NA, linewidth = 2) +
coord_sf(datum = 21781) +
theme(
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
legend.position = "none"
)