E6

E6

Tasks and Inputs:

Libraries laden und Data reinladen von letzter Woche:

  • Wildschwein Data mit read delim

  • Feldaufnahmen sf mit read sf

library(readr)
library(sf)
Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(terra)
terra 1.8.70
library(lubridate)

Attaching package: 'lubridate'
The following objects are masked from 'package:terra':

    intersect, union
The following objects are masked from 'package:base':

    date, intersect, setdiff, union
library(tmap)


wildschwein_BE <- read_delim("data/wildschwein_BE_2056.csv", ",") |>
    st_as_sf(coords = c("E", "N"), crs = 2056, remove = FALSE)
Rows: 51246 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): TierID, TierName
dbl  (3): CollarID, E, N
dttm (1): DatetimeUTC

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
feldaufnahmen<-read_sf("data/Feldaufnahmen_Fanel.gpkg")

Task 1: Import and Visualize spatial Data

  • What information does the dataset contain?

Ist ein Datensatz Dataframe mit

  1. FieldID nummeriert

  2. Frucht character wie Roggen, Wiese, NA

  3. geometry Polygone mit den Koordinaten

str(feldaufnahmen)
sf [975 × 3] (S3: sf/tbl_df/tbl/data.frame)
 $ FieldID: num [1:975] 1 0 0 2 3 5 6 4 7 0 ...
 $ Frucht : chr [1:975] "Roggen" NA NA "Wiese" ...
 $ geom   :sfc_POLYGON of length 975; first list element: List of 1
  ..$ : num [1:12, 1:2] 2570914 2570917 2570985 2571294 2571719 ...
  ..- attr(*, "class")= chr [1:3] "XY" "POLYGON" "sfg"
 - attr(*, "sf_column")= chr "geom"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA
  ..- attr(*, "names")= chr [1:2] "FieldID" "Frucht"
dplyr::glimpse(feldaufnahmen)
Rows: 975
Columns: 3
$ FieldID <dbl> 1, 0, 0, 2, 3, 5, 6, 4, 7, 0, 0, 0, 11, 9, 8, 10, 13, 14, 12, …
$ Frucht  <chr> "Roggen", NA, NA, "Wiese", "Weide", "Weide", "Weide", "Weide",…
$ geom    <POLYGON [m]> POLYGON ((2570914 1202743, ..., POLYGON ((2570893 1202…
head(feldaufnahmen)
Simple feature collection with 6 features and 2 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: 2570249 ymin: 1202176 xmax: 2571719 ymax: 1203436
Projected CRS: CH1903+ / LV95
# A tibble: 6 × 3
  FieldID Frucht                                                            geom
    <dbl> <chr>                                                    <POLYGON [m]>
1       1 Roggen ((2570914 1202743, 2570917 1202749, 2570985 1202833, 2571294 1…
2       0 <NA>   ((2570893 1202758, 2570893 1202758, 2570959 1202845, 2570985 1…
3       0 <NA>   ((2570868 1202776, 2570872 1202781, 2570913 1202828, 2570946 1…
4       2 Wiese  ((2570882 1203234, 2570641 1202974, 2570630 1202983, 2570606 1…
5       3 Weide  ((2570249 1203116, 2570371 1203328, 2570481 1203197, 2570390 1…
6       5 Weide  ((2570378 1203320, 2570466 1203436, 2570552 1203289, 2570481 1…
  • What is the geometry type of the dataset (possible types are: Point, Lines and Polygons)?

Polygone mit 18 levels

GEOMETRY, POINT, LINESTRING,  POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON GEOMETRYCOLLECTION, CIRCULARSTRING,  COMPOUNDCURVE,, CURVEPOLYGON, MULTICURVE,  MULTISURFACE, CURVE, SURFACE, POLYHEDRALSURFACE,TIN, TRIANGLE 
                            
st_geometry_type(feldaufnahmen)
  [1] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [10] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [19] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [28] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [37] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [46] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [55] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [64] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [73] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [82] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
 [91] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[100] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[109] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[118] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[127] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[136] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[145] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[154] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[163] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[172] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[181] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[190] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[199] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[208] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[217] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[226] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[235] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[244] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[253] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[262] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[271] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[280] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[289] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[298] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[307] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[316] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[325] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[334] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[343] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[352] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[361] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[370] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[379] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[388] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[397] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[406] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[415] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[424] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[433] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[442] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[451] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[460] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[469] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[478] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[487] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[496] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[505] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[514] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[523] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[532] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[541] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[550] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[559] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[568] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[577] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[586] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[595] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[604] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[613] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[622] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[631] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[640] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[649] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[658] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[667] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[676] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[685] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[694] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[703] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[712] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[721] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[730] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[739] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[748] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[757] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[766] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[775] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[784] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[793] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[802] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[811] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[820] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[829] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[838] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[847] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[856] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[865] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[874] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[883] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[892] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[901] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[910] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[919] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[928] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[937] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[946] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[955] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[964] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[973] POLYGON POLYGON POLYGON
18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT ... TRIANGLE
unique(st_geometry_type(feldaufnahmen))
[1] POLYGON
18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT ... TRIANGLE
table(st_geometry_type(feldaufnahmen))

          GEOMETRY              POINT         LINESTRING            POLYGON 
                 0                  0                  0                975 
        MULTIPOINT    MULTILINESTRING       MULTIPOLYGON GEOMETRYCOLLECTION 
                 0                  0                  0                  0 
    CIRCULARSTRING      COMPOUNDCURVE       CURVEPOLYGON         MULTICURVE 
                 0                  0                  0                  0 
      MULTISURFACE              CURVE            SURFACE  POLYHEDRALSURFACE 
                 0                  0                  0                  0 
               TIN           TRIANGLE 
                 0                  0 
  • What are the data types of the other columns?

    • Field ID: Numeric

    • Frucht: character

    • geom: sfc_polygon, interne Strutkur: Ein polygon hat 12 Punkte mit je 2 Werten X und Y angereichert mit den Attributen aus den anderen Spalten

str(feldaufnahmen)
sf [975 × 3] (S3: sf/tbl_df/tbl/data.frame)
 $ FieldID: num [1:975] 1 0 0 2 3 5 6 4 7 0 ...
 $ Frucht : chr [1:975] "Roggen" NA NA "Wiese" ...
 $ geom   :sfc_POLYGON of length 975; first list element: List of 1
  ..$ : num [1:12, 1:2] 2570914 2570917 2570985 2571294 2571719 ...
  ..- attr(*, "class")= chr [1:3] "XY" "POLYGON" "sfg"
 - attr(*, "sf_column")= chr "geom"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA
  ..- attr(*, "names")= chr [1:2] "FieldID" "Frucht"
  • What is the coordinate system of the dataset?
st_crs(feldaufnahmen)
Coordinate Reference System:
  User input: CH1903+ / LV95 
  wkt:
PROJCRS["CH1903+ / LV95",
    BASEGEOGCRS["CH1903+",
        DATUM["CH1903+",
            ELLIPSOID["Bessel 1841",6377397.155,299.1528128,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4150]],
    CONVERSION["Swiss Oblique Mercator 1995",
        METHOD["Hotine Oblique Mercator (variant B)",
            ID["EPSG",9815]],
        PARAMETER["Latitude of projection centre",46.9524055555556,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8811]],
        PARAMETER["Longitude of projection centre",7.43958333333333,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8812]],
        PARAMETER["Azimuth at projection centre",90,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8813]],
        PARAMETER["Angle from Rectified to Skew Grid",90,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8814]],
        PARAMETER["Scale factor at projection centre",1,
            SCALEUNIT["unity",1],
            ID["EPSG",8815]],
        PARAMETER["Easting at projection centre",2600000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8816]],
        PARAMETER["Northing at projection centre",1200000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8817]]],
    CS[Cartesian,2],
        AXIS["(E)",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["(N)",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["Cadastre, engineering survey, topographic mapping (large and medium scale)."],
        AREA["Liechtenstein; Switzerland."],
        BBOX[45.82,5.96,47.81,10.49]],
    ID["EPSG",2056]]

Ist ein Schweizer Koordinatensystem 2056, LV95

Task 2: Annotate Trajectories from vector data

Dafür filtere ich die Daten Mai bis Juni und mache einen spatial join.

wildschwein_summer <- wildschwein_BE |>
  mutate(DatetimeUTC = as.POSIXct(DatetimeUTC)) |>
  filter(month(DatetimeUTC) %in% c(5, 6))

wildschwein_crop <- st_join(wildschwein_summer, feldaufnahmen)

Jetzt müssen wir schauen, ob es den Spatial Join richtig gemacht hat:

head(wildschwein_crop)
Simple feature collection with 6 features and 8 fields
Geometry type: POINT
Dimension:     XY
Bounding box:  xmin: 2570059 ymin: 1205242 xmax: 2570096 ymax: 1205256
Projected CRS: CH1903+ / LV95
# A tibble: 6 × 9
  TierID TierName CollarID DatetimeUTC                E        N
  <chr>  <chr>       <dbl> <dttm>                 <dbl>    <dbl>
1 002A   Sabi        12275 2015-05-01 00:00:17 2570093. 1205256.
2 002A   Sabi        12275 2015-05-01 00:15:25 2570093. 1205249.
3 002A   Sabi        12275 2015-05-01 00:30:15 2570091. 1205253.
4 002A   Sabi        12275 2015-05-01 00:45:15 2570059. 1205242.
5 002A   Sabi        12275 2015-05-01 01:00:30 2570078. 1205246.
6 002A   Sabi        12275 2015-05-01 01:15:43 2570096. 1205256.
# ℹ 3 more variables: geometry <POINT [m]>, FieldID <dbl>, Frucht <chr>

Ja, hat geklappt, jeder Punkt hat jetzt auch ein Attribut aus den Feldaufnahmen.

Task 3: Explore annotated trajectories

Wir können nun verschiedenes anschauen, zb wie viel Crop use pro Stunde, das zeigt uns dann, welche crops bevorzugt werden.

wildschwein_crop <- wildschwein_crop |>
  mutate(hour = hour(DatetimeUTC))

crop_hour <- wildschwein_crop |>
  st_drop_geometry() |>
  group_by(hour, Frucht) |>
  summarise(n = n(), .groups = "drop") |>
  group_by(hour) |>
  mutate(pct = n / sum(n) * 100)

Wir plotten das ganze:

library(ggplot2)

ggplot(crop_hour, aes(x = hour, y = pct, fill = Frucht)) +
  geom_col()

Was man sieht: Die “Früchte” oder crops werden unterschiedlich oft genutzt:

  • Wald mit Abstand

  • Feuchtgebiete auch beliebt

  • Acker, Bohnen, Zwiebeln, Wiese, Weizen, Rüben….

Task 4: Import and visualize vegetation raster

Importieren des Vegetations Rasters und erstes Plotten mit tmap oder mit plot() (viridiris: Art, wie es visulisiert wird, so gelb und grünblau je nach Vegetationshöhe)

veg <- rast("Data/vegetationshoehe_LFI.tif")

plot(veg)

tm_shape(veg) +
  tm_raster(style = "cont", palette = "-viridis")
── tmap v3 code detected ───────────────────────────────────────────────────────
[v3->v4] `tm_raster()`: instead of `style = "cont"`, use col.scale =
`tm_scale_continuous()`.
ℹ Migrate the argument(s) 'palette' (rename to 'values') to
  'tm_scale_continuous(<HERE>)'
SpatRaster object downsampled to 2753 by 3634 cells.

Hier sieht man jetzt wo und wie hoch die Vegetation ist.

Task 5: Annotate trajectories from raster data

Jetzt wollen wir diese wieder hinzufügen zu den Wildschweindaten, damit da jeder Punkt eine Vegetationshöhe hat.

  • Values extracten

  • in Sf rein

  • kontrollieren

veg_values <- extract(veg, vect(wildschwein_BE))

wildschwein_veg <- wildschwein_BE |>
  mutate(vegetationshoehe_LFI = veg_values[,2])

head(wildschwein_veg)
Simple feature collection with 6 features and 7 fields
Geometry type: POINT
Dimension:     XY
Bounding box:  xmin: 2570379 ymin: 1204752 xmax: 2570409 ymax: 1204863
Projected CRS: CH1903+ / LV95
# A tibble: 6 × 8
  TierID TierName CollarID DatetimeUTC                E        N
  <chr>  <chr>       <dbl> <dttm>                 <dbl>    <dbl>
1 002A   Sabi        12275 2014-08-22 21:00:12 2570409. 1204752.
2 002A   Sabi        12275 2014-08-22 21:15:16 2570402. 1204863.
3 002A   Sabi        12275 2014-08-22 21:30:43 2570394. 1204826.
4 002A   Sabi        12275 2014-08-22 21:46:07 2570379. 1204817.
5 002A   Sabi        12275 2014-08-22 22:00:22 2570390. 1204818.
6 002A   Sabi        12275 2014-08-22 22:15:10 2570390. 1204825.
# ℹ 2 more variables: geometry <POINT [m]>, vegetationshoehe_LFI <dbl>

Ja, neue Spalte: vegetationshoehe_LFI

Jetzt könnte man noch wie im letzten Beispiel das visualisieren

wildschwein_veghour<- wildschwein_veg |>
  mutate(hour = hour(DatetimeUTC)) |>
  st_drop_geometry() |>
  group_by(hour) |>
  summarise(mean_veg = mean(vegetationshoehe_LFI, na.rm = TRUE))

ggplot(wildschwein_veghour, aes(x = hour, y = mean_veg)) +
  geom_line() +
  geom_point() +
  labs(
    x = "Hour of day",
    y = "Mean vegetation height",
    title = "Vegetation height used by wild boar per hour"
  )

Hier sieht man erneut, dass tiere die Vegetationshöhen nicht kalt lassen:

  • Sie bewegen sich zwar in allen ranges der Grössen, aber ich würde sagen meistens im Mittelfeld.