af_svædalokun

Þetta er textalaust skjal. Bara kóði sem er grunnur að tveimur myndum um afla innann tveggja svæða sem hugmyndir eru uppi um leggja til að loka fyrir botnveiðum.
code
rtip
Author

Einar Hjörleifsson

Published

September 25, 2025

library(duckdbfs)
library(tidyverse)
library(sf)
library(here)

# TEST 1 -----------------------------------------------------------------------
gear <- 
  open_dataset(here("data/gear/gear_mapping.parquet")) |> 
  select(gid_trip = agf_gid, veiðarfæri)
v1 <- 
  duckdbfs::open_dataset(here("data-raw/ad-hoc/2025-06-24_vernd1_steinunn-hilma.gpkg")) |> 
  mutate(svaedi = "vernd1") |> 
  select(svaedi, geom)
v2 <- 
  duckdbfs::open_dataset(here("data-raw/ad-hoc/2025-06-24_vernd2_steinunn-hilma.gpkg")) |> 
  mutate(svaedi = "vernd2") |> 
  select(svaedi, geom)
tr <- open_dataset(here("data/ais/trail"))
data1 <-
  tr |> 
  filter(.cid > 0,                           # .cid positive -> not in harbour
         whack == FALSE,
         between(year, 2009, 2024),
         between(speed, s1, s2),
         between(time, t1, t2)) |> 
  filter(lat < 64) |> 
         # between(lon, -24.5, -19.93)) |> 5
  dplyr::mutate(geom = ST_POINT(lon, lat)) |> 
  duckdbfs::spatial_join(v1, by = "st_intersects", join = "left") |> 
  mutate(svaedi = ifelse(is.na(svaedi), "outside", svaedi)) |>
  group_by(year, vid, .cid, .sid) |>
  mutate(catch = catch_total / n()) |> 
  ungroup() |> 
  group_by(year, gid_trip, svaedi) |> 
  summarise(n_vid = n_distinct(vid),
            dt = sum(dt, na.rm = TRUE) / 60,    # effort as time - what unit?
            catch = sum(catch, na.rm = TRUE) / 1e3,  #catch in tonnes
            .groups = "drop") |> 
  left_join(gear) |> 
  collect()
data1 |> 
  mutate(gid_trip = paste(str_pad(gid_trip, pad = "0", width = 2), veiðarfæri)) |> 
  ggplot(aes(year, catch, fill = svaedi)) +
  geom_col(position = "fill") +
  scale_fill_brewer(palette = "Set1") +
  facet_wrap(~ gid_trip) +
  labs(title = "Sunnan 64 gráðu")

data2 <-
  tr |> 
  filter(.cid > 0,                           # .cid positive -> not in harbour
         whack == FALSE,
         between(year, 2009, 2024),
         between(speed, s1, s2),
         between(time, t1, t2)) |> 
  filter(lat < 64) |> 
  # between(lon, -24.5, -19.93)) |> 5
  dplyr::mutate(geom = ST_POINT(lon, lat)) |> 
  duckdbfs::spatial_join(v2, by = "st_intersects", join = "left") |> 
  mutate(svaedi = ifelse(is.na(svaedi), "outside", svaedi)) |>
  group_by(year, vid, .cid, .sid) |>
  mutate(catch = catch_total / n()) |> 
  ungroup() |> 
  group_by(year, gid_trip, svaedi) |> 
  summarise(n_vid = n_distinct(vid),
            dt = sum(dt, na.rm = TRUE) / 60,    # effort as time - what unit?
            catch = sum(catch, na.rm = TRUE) / 1e3,  #catch in tonnes
            .groups = "drop") |> 
  left_join(gear) |> 
  collect()
data2 |> 
  mutate(gid_trip = paste(str_pad(gid_trip, pad = "0", width = 2), veiðarfæri)) |> 
  ggplot(aes(year, catch, fill = svaedi)) +
  geom_col(position = "fill") +
  scale_fill_brewer(palette = "Set1") +
  facet_wrap(~ gid_trip)

d <- 
  bind_rows(data1 |> mutate(data = "vernd1"),
            data2 |> mutate(data = "vernd2")) |> 
  filter(gid_trip %in% c(2, 6, 12)) |> 
  mutate(gid_trip = paste(str_pad(gid_trip, pad = "0", width = 2), veiðarfæri)) |> 
  group_by(year, gid_trip, data) |>
  mutate(p = catch / sum(catch) * 100) |> 
  ungroup() |> 
  filter(svaedi %in% c("vernd1", "vernd2"))
d |> 
  ggplot(aes(year, p, colour = svaedi)) +
  geom_point() +
  facet_wrap(~ gid_trip) + #, scales = "free_y") +
  scale_colour_brewer(palette = "Set1") +
  labs(title = "Hlutfall af heildarveiðum sunnan 64 gráðu sem eru innan svæða")

d |> 
  ggplot(aes(year, n_vid, colour = svaedi)) +
  geom_point() +
  facet_wrap(~ gid_trip) + #, scales = "free_y") +
  scale_colour_brewer(palette = "Set1") +
  labs(title = "Fjöldi báta/skipa með skráðann afla")