diff --git a/moneos_2023/100_watervogels/20_moneos_watervogels_analyse.Rmd b/moneos_2023/100_watervogels/20_moneos_watervogels_analyse.Rmd index 8e98bd4..4246af3 100644 --- a/moneos_2023/100_watervogels/20_moneos_watervogels_analyse.Rmd +++ b/moneos_2023/100_watervogels/20_moneos_watervogels_analyse.Rmd @@ -67,6 +67,18 @@ Waterbirds <- delim = ";")%>% mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) +GrootSchoor <- + read_delim(paste0(pad_data, "datathvGrootSchoorHamme.csv"), + delim = ";") %>% + rename_all(tolower) %>% +mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + + Waterbirds_sigma_estuarien <- Waterbirds %>% dplyr::filter(analyseset == "SIGMA_MIDMA") %>% @@ -520,7 +532,7 @@ tabel_trofische_groep <- data_watervogels %>% mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - dplyr::filter(telseizoen1 %in% c(2001:2021)) %>% + dplyr::filter(telseizoen1 %in% c(2001:2024)) %>% # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen dplyr::filter(maand %in% c(10:12, 1:3)) %>% dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% @@ -557,7 +569,7 @@ levels(data_watervogels$niveau3) ###facet_wrap figuur data_watervogels %>% mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - dplyr::filter(telseizoen1 %in% c(2009:2021)) %>% + dplyr::filter(telseizoen1 %in% c(2009:2024)) %>% # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen dplyr::filter(maand %in% c(10:12, 1:3)) %>% dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% @@ -591,7 +603,7 @@ data_watervogels %>% ##grafiek niveau2 data_watervogels %>% mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - dplyr::filter(telseizoen1 %in% c(2001:2021)) %>% + dplyr::filter(telseizoen1 %in% c(2001:2024)) %>% # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen dplyr::filter(maand %in% c(10:12, 1:3)) %>% dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% @@ -681,6 +693,52 @@ ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSwinter_sinds2008.j ``` +##### figuur Groot schoor en omgeving + +```{r 100-figuur-maandelijkse-totalen-winter-GrootSchoor, fig.height=5, fig.width=8} + +# data_watervogels %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% ##♦dit rekent inclusief rupel +# mutate(datum = paste(jaar, maand, "15", sep = "-") %>% +# ymd()) %>% +# group_by(telseizoen, datum) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# ggplot(aes(datum, aantal)) + +# geom_col() + +# scale_x_date(date_breaks = "1 year", date_labels = "%Y") + +# labs(x = "datum", y = "aantal") + +# theme(axis.text.x = element_text(angle = 35)) +# probleem met deze figuur is dat sinds het stopzetten van de zomertellingen stroomop Antwerpen de zomercijfers niet meer in 1 figuur kunnen gezien worden - dit kan enkel nog in ZS4 waar jaarrond telling is. + + +GrootSchoor %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + mutate(gebied = str_replace_all(gebied, 'Schelde St. Amands - Oude Briel \\(LO\\)','Boottelling Zeeschelde')) %>% + mutate(gebied = str_replace(gebied, "Groot Schoor HAMME","MIDMASigma - Groot Schoor")) %>% + mutate(gebied = str_replace(gebied, "Grote Wal HAMME","MIDMASigma - Wal")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum > "2018-06-01") %>% + # dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, gebied, datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal), color = gebied) + + geom_col(aes(color = gebied)) + + facet_wrap(~gebied)+ + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "som aantal per wintermaand") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_Grootschoorwinter.jpg")) + + +``` + + + + ##### figuur maandelijkse totalen vogels Zeeschelde IV - Saliniteitsgradiënt ```{r 100-figuur-maandelijkse-totalen-ZeescheldeIV, fig.height=5, fig.width=8} @@ -689,7 +747,7 @@ data_watervogels %>% mutate(datum = paste(jaar, maand, "15", sep = "-") %>% ymd()) %>% # dplyr::filter(maand %in% c(10:12, 1:3)) %>% - dplyr::filter(teldatum < "2023-04-01") %>% + dplyr::filter(teldatum < "2024-04-01") %>% # dplyr::filter(teldatum > "2007-06-01") %>% dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld group_by(telseizoen,datum) %>% @@ -755,7 +813,7 @@ data_watervogels %>% ymd()) %>% # dplyr::filter(maand %in% c(10:12, 1:3)) %>% dplyr::filter(teldatum > "2007-06-01") %>% - dplyr::filter(teldatum < "2023-04-01") %>% + dplyr::filter(teldatum < "2024-04-01") %>% dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld group_by(telseizoen,datum) %>% summarise(aantal = sum(aantal, na.rm = TRUE)) %>% @@ -781,89 +839,89 @@ Waterbirds_all <- ymd() %>% month()) -Waterbirds_all %>% - dplyr::filter(maand %in% c(10:12, 1:3)) %>% - mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - # dplyr::filter(telseizoen1 > 2009) %>% - dplyr::filter(analyseset == "SIGMA_MIDMA") %>% - dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% - dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld - dplyr::filter(analyseset == "SIGMA_MIDMA") %>% - group_by(telseizoen, maand, gebiedsgroep_code) %>% - summarise(som = sum(aantal, na.rm = TRUE)) %>% - ungroup() %>% - group_by(telseizoen, gebiedsgroep_code) %>% - summarise(maximum = max(som, na.rm = TRUE)) %>% - ggplot(aes(ordered(telseizoen), maximum)) + - geom_col() + - labs(x = "telseizoen", - y = "wintermaximum per telseizoen") + - facet_wrap(~gebiedsgroep_code, - ncol = 2, scales = "free") + - theme(axis.text.x = element_text(angle = 90)) - -ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien_wetland.jpg")) - -table(check$gebiedsgroep_code) - -Waterbirds_all %>% - dplyr::filter(maand %in% c(10:12, 1:3)) %>% - mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - dplyr::filter(telseizoen1 > 2009) %>% - dplyr::filter(analyseset == "SIGMA_MIDMA") %>% - dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% - dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld - group_by(telseizoen, maand,gebiedsgroep) %>% - summarise(som = sum(aantal, na.rm = TRUE)) %>% - ungroup() %>% - group_by(telseizoen, gebiedsgroep) %>% - summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% - ggplot(aes(ordered(telseizoen), gemiddelde)) + - geom_col() + - labs(x = "telseizoen", - y = "gemiddelde per telseizoen") + - facet_wrap(~gebiedsgroep, - # ncol = 2, scales = "free" - ) + - theme(axis.text.x = element_text(angle = 90)) - - - -Waterbirds_sigma_estuarien %>% - dplyr::filter(maand %in% c(10:12, 1:3)) %>% - mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - # dplyr::filter(telseizoen1 > 2009) %>% - dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld - group_by(telseizoen, maand, gebiedsgroep_code) %>% - summarise(som = sum(aantal, na.rm = TRUE)) %>% - ungroup() %>% - group_by(telseizoen, gebiedsgroep_code) %>% - summarise(maximum = max(som, na.rm = TRUE)) %>% - ggplot(aes(ordered(telseizoen), maximum)) + - geom_col() + - labs(x = "telseizoen", - y = "wintermaximum per telseizoen Sigma estuarien") + - facet_wrap(~gebiedsgroep_code, - ncol = 2, scales = "free") + - theme(axis.text.x = element_text(angle = 90)) +# Waterbirds_all %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# # dplyr::filter(telseizoen1 > 2009) %>% +# dplyr::filter(analyseset == "SIGMA_MIDMA") %>% +# dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# dplyr::filter(analyseset == "SIGMA_MIDMA") %>% +# group_by(telseizoen, maand, gebiedsgroep_code) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep_code) %>% +# summarise(maximum = max(som, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), maximum)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "wintermaximum per telseizoen") + +# facet_wrap(~gebiedsgroep_code, +# ncol = 2, scales = "free") + +# theme(axis.text.x = element_text(angle = 90)) +# +# ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien_wetland.jpg")) +# +# table(check$gebiedsgroep_code) +# +# Waterbirds_all %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(telseizoen1 > 2009) %>% +# dplyr::filter(analyseset == "SIGMA_MIDMA") %>% +# dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# group_by(telseizoen, maand,gebiedsgroep) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep) %>% +# summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), gemiddelde)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "gemiddelde per telseizoen") + +# facet_wrap(~gebiedsgroep, +# # ncol = 2, scales = "free" +# ) + +# theme(axis.text.x = element_text(angle = 90)) +# +# +# +# Waterbirds_sigma_estuarien %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# # dplyr::filter(telseizoen1 > 2009) %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# group_by(telseizoen, maand, gebiedsgroep_code) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep_code) %>% +# summarise(maximum = max(som, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), maximum)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "wintermaximum per telseizoen Sigma estuarien") + +# facet_wrap(~gebiedsgroep_code, +# ncol = 2, scales = "free") + +# theme(axis.text.x = element_text(angle = 90)) -Waterbirds_sigma_estuarien %>% - dplyr::filter(maand %in% c(10:12, 1:3)) %>% - mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% - # dplyr::filter(telseizoen1 > 2009) %>% - dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld - group_by(telseizoen, maand, gebiedsgroep_code) %>% - summarise(som = sum(aantal, na.rm = TRUE)) %>% - ungroup() %>% - group_by(telseizoen, gebiedsgroep_code) %>% - summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% - ggplot(aes(ordered(telseizoen), gemiddelde)) + - geom_col() + - labs(x = "telseizoen", - y = "gemiddelde per telseizoen Sigma estuarien") + - facet_wrap(~gebiedsgroep_code, - ncol = 2, scales = "free") + - theme(axis.text.x = element_text(angle = 90)) +# Waterbirds_sigma_estuarien %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# # dplyr::filter(telseizoen1 > 2009) %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# group_by(telseizoen, maand, gebiedsgroep_code) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep_code) %>% +# summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), gemiddelde)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "gemiddelde per telseizoen Sigma estuarien") + +# facet_wrap(~gebiedsgroep_code, +# ncol = 2, scales = "free") + +# theme(axis.text.x = element_text(angle = 90)) ``` @@ -874,16 +932,16 @@ data_watervogels %>% mutate(datum = paste(jaar, maand, "15", sep = "-") %>% ymd()) %>% dplyr::filter(maand %in% c(10:12, 1:3)) %>% - dplyr::filter(teldatum > "2005-10-01" & teldatum < "2022-04-01") %>% # + dplyr::filter(teldatum > "2005-10-01" & teldatum < "2024-04-01") %>% # dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld - dplyr::filter(nednaam =="Wintertaling") %>% + dplyr::filter(nednaam =="Wintertaling") %>% group_by(telseizoen,datum,gebiedsgroep_code, niveau3) %>% summarise(aantal = sum(aantal, na.rm = TRUE)) %>% ungroup() %>% ggplot(aes(datum, aantal)) + geom_col() + - scale_x_date(date_breaks = "1 month", date_labels = "%m%Y") + - labs(x = "jaar", y = "aantal") + + scale_x_date(date_breaks = "6 month", date_labels = "%m%Y") + + labs(x = "jaar", y = "aantal", title = "Wintertaling") + theme(axis.text.x = element_text(angle = 90))+ geom_smooth(aes(color = "trendlijn")) + facet_wrap(~niveau3, ncol = 2, scales = "free") @@ -1158,6 +1216,7 @@ Waterbirds_sigma_estuarien %>% ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigmagebieden_estuarien.jpg"), width = 30, height = 15, units = "cm" ) +##wintergemiddelde Waterbirds_sigma_estuarien %>% dplyr::filter(maand %in% c(10:12, 1:3)) %>% mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% @@ -1173,6 +1232,40 @@ Waterbirds_sigma_estuarien %>% facet_wrap(~gebied, scales = "free")+ theme(axis.text.x = element_text(angle = 90)) +##axis not free +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + group_by(telseizoen1, maand, gebied, Sigmagebiedstype) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, gebied, Sigmagebiedstype) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(as.factor(telseizoen1), maximum, colour = Sigmagebiedstype)) + + geom_line(aes(group = 1)) + + # geom_point()+ + facet_wrap(~gebied)+ + theme(axis.text.x = element_text(angle = 90)) + +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(gebied == "GOG-GGG Bazelse Polder Noord") %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + group_by(telseizoen1, maand, nednaam) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, nednaam) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + dplyr::filter(maximum >10) %>% + ggplot(aes(as.factor(telseizoen1), maximum)) + + geom_line(aes(group = 1)) + + # geom_point()+ + facet_wrap(~nednaam)+ + theme(axis.text.x = element_text(angle = 90)) + + ``` #### Natuurindicator berekening IHD-Z @@ -2102,6 +2195,31 @@ data_watervogels_index_trofniv3 %>% ``` +##### figuur wintergemiddelde Zeeschelde + +```{r 100-figuur-aantallen-niveau2, fig.height=6, fig.width=8} + +data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen) %>% + summarise(wintergemiddelde = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), wintergemiddelde)) + + geom_col() + + labs(x = "telseizoen", + y = "wintergemiddelde per telseizoen") + + theme(axis.text.x = element_text(angle = 90)) + + ggsave(paste0(pad_figuren, "100_figuur_meanwinter_niveau2.jpg")) +``` + + + + ##### figuur wintergemiddelde aantallen per KRWzone ```{r 100-figuur-aantallen-niveau3, fig.height=6, fig.width=8} @@ -2497,7 +2615,52 @@ data_watervogels %>% ggsave(paste0(pad_figuren, "100_figuur_abundante_soortenna2009.jpg")) +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(telseizoen >= "2009/10" & telseizoen <= "2014/15") %>% + group_by(niveau3, nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 5) %>% + ggplot(aes(ordered(niveau3), aantal, fill = nednaam)) + + geom_col(position = "fill") + + scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + "#660099", "#CC0066", "#FF9999", "#FF9900", + "black", "red", "green", "blue", "yellow")) + + labs(x = "Niveau3 zones", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(telseizoen >= "2021/22" & telseizoen <= "2023/24") %>% + group_by(niveau3, nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 5) %>% + ggplot(aes(ordered(niveau3), aantal, fill = nednaam)) + + geom_col(position = "fill") + + scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + "#660099", "#CC0066", "#FF9999", "#FF9900", + "black", "red", "green", "blue", "yellow")) + + labs(x = "Niveau3 zones", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) +ggsave(paste0(pad_figuren, "100_figuur_abundante_soortennaT2021.jpg")) data_watervogels %>% # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% @@ -2624,11 +2787,16 @@ data_watervogels %>% summarise(aantal = sum(aantal, na.rm = TRUE)) %>% ungroup() %>% group_by(telseizoen, niveau3, nednaam) %>% - summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + summarise( + aantal = mean(aantal, na.rm = TRUE), + # sd = sd(aantal, na.rm= TRUE) + ) %>% ungroup() %>% ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + geom_point(aes(shape = niveau3)) + geom_line() + + # geom_errorbar(aes(ymin = aantal - sd, ymax = aantal + sd), + # width = 0.2) + labs(x = "telseizoen", y = "gemiddeld aantal") + facet_wrap(~nednaam, @@ -2998,7 +3166,7 @@ ggsave(paste0(pad_figuren, "100_figuur_habitatoppervlakte.jpg")) data_watervogels %>% - dplyr::filter(nednaam %in% c("Nijlgans", "Canadese Gans", "Soepeend", "Boerengans")) %>% + dplyr::filter(nednaam %in% c("Nijlgans", "Grote Canadese Gans", "Brandgans", "Boerengans")) %>% dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% dplyr::filter(maand %in% c(10:12, 1:3)) %>% dplyr::filter(jaar >= 2009, diff --git a/moneos_2024/030_ecotopen/10_tabellen_inleiding.Rmd b/moneos_2024/030_ecotopen/10_tabellen_inleiding.Rmd new file mode 100644 index 0000000..0091ed4 --- /dev/null +++ b/moneos_2024/030_ecotopen/10_tabellen_inleiding.Rmd @@ -0,0 +1,238 @@ +--- +params: + hoofdstuk: "030_ecotopen" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Rmarkdown template MONEOS analyse" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(INBOtheme) +library(rprojroot) +library(readxl) +library(writexl) +library(flextable) +library(officer) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + +# Tabel ecotoopklassen obv fysiotoop en geomorf + +```{r 030-tabel-ecotoopklassen-1} + +geomorftype <- + c("Onbepaald", + "Zacht substraat", + "Hard natuurlijk", + "Hard antropogeen (breuksteen)", + "Schor- en dijkvegetatie", + "Getijdeplas", + "Verhard" + ) + +fysiotopen <- + c("Zeer diep subtidaal", + "Diep subtidaal", + "Matig diep subtidaal", + "Ondiep subtidaal", + "Laag slik", + "Middelhoog slik", + "Hoog slik", + "Supralitoraal s.s.", + "Hoog supralitoraal" + ) + +ecotopen <- + c("Diep subtidaal", + "Matig diep subtidaal", + "Ondiep subtidaal", + "Laag slik zacht substraat", + "Middelhoog slik zacht substraat", + "Hoog slik zacht substraat", + "Laag slik hard natuurlijk", + "Middelhoog slik hard natuurlijk", + "Hoog slik hard natuurlijk", + "Laag slik hard antropogeen", + "Middelhoog slik hard antropogeen", + "Hoog slik hard antropogeen", + "Potentiële pionierzone", + "Schor", + "Supralitoraal s.s. hard natuurlijk", + "Supralitoraal s.s. hard antropogeen", + "Hoog supralitoraal (begroeid)", + "Hoog supralitoraal hard antropogeen", + "Getijdeplas", + "Antropogeen" + ) + +ecotopen_df <- data.frame(ecotopen) %>% + rename(Ecotoop = ecotopen) %>% + mutate( + Getijdezone = case_when( + str_detect(Ecotoop, "subtidaal") ~ "Sublitoraal", + str_detect(Ecotoop, "slik") ~ "Litoraal", + TRUE ~ "Supralitoraal" + ), + Geomorftype = case_when( + str_detect(Ecotoop, "Hoog supralitoraal hard antropogeen") ~ "Hard antropogeen (breuksteen)", + str_detect(Ecotoop, "Schor|Hoog supralitoraal") ~ "Schor- en dijkvegetatie", + str_detect(Ecotoop, "subtidaal") ~ "Onbepaald", + str_detect(Ecotoop, "zacht substraat|Potentiële pionierzone") ~ "Zacht substraat", + str_detect(Ecotoop, "hard natuurlijk") ~ "Hard natuurlijk", + str_detect(Ecotoop, "hard antropogeen") ~ "Hard antropogeen (breuksteen)", + str_detect(Ecotoop, "Getijdeplas") ~ "Getijdeplas", + str_detect(Ecotoop, "Antropogeen") ~ "Verhard" + ), + Fysiotoop = case_when( + str_detect(Ecotoop, "subtidaal") ~ Ecotoop, + str_detect(Ecotoop, "Laag slik") ~ "Laag slik", + str_detect(Ecotoop, "Middelhoog slik") ~ "Middelhoog slik", + str_detect(Ecotoop, "Hoog slik") ~ "Hoog slik", + str_detect(Ecotoop, "Hoog supralitoraal") ~ "Hoog supralitoraal", + str_detect(Ecotoop, "pionierzone|Supralitoraal|Schor") ~ "Supralitoraal s.s.", + str_detect(Ecotoop, "Getijdeplas|Antropogeen") ~ "" + ) + ) %>% + bind_rows(data.frame(Getijdezone = "Sublitoraal", + Ecotoop = "Diep subtidaal", + Geomorftype = "Onbepaald", + Fysiotoop = "Zeer diep subtidaal")) %>% + mutate(Ecotoop = factor(Ecotoop, levels = ecotopen)) %>% + arrange(Ecotoop, fct_relevel(Fysiotoop, 'Zeer diep subtidaal')) %>% + relocate(Getijdezone, Geomorftype, Fysiotoop, Ecotoop) + +``` + +```{r make flextable 1} +#### E1 klassen tabel #### + +set_flextable_defaults(background.color = "white") + +row_div <- c(5:7, 11:13, 18:19) + +flt_klassen <- + ecotopen_df %>% + flextable() %>% + merge_v() %>% + bold(i = 1, part = "header") %>% + width(j = "Fysiotoop", width = 40, unit = "mm") %>% + width(j = "Geomorftype", width = 45, unit = "mm") %>% + width(j = "Ecotoop", width = 67, unit = "mm") %>% + bg(i = row_div, j = 2:4, bg = "#D9D9D9", part = "body") %>% + hline_bottom(part = "body", border = fp_border(color = "#D9D9D9", width = 1.5)) %>% + rotate(j = "Getijdezone", rotation = "btlr", part = "body") %>% + set_header_labels(Getijdezone = "") %>% + width(j = 1, width = 10, unit = "mm") %>% + hline(i = c(4, 13), part = "body") %>% + vline(j = 1, part = "body") + +output_name_klassen <- "030_tabel_klassen_E1.png" +flt_klassen %>% save_as_image(path = str_c(pad_tabellen, output_name_klassen)) + +``` + +```{r 030-tabel-ecotoopklassen-2} + +ecotopen_20_sublitoraal <- + c("Hoogdynamisch diep subtidaal", + "Laagdynamisch diep subtidaal", + "Hoogdynamisch matig diep subtidaal", + "Laagdynamisch matig diep subtidaal", + "Hoogdynamisch ondiep subtidaal", + "Laagdynamisch ondiep subtidaal") + +snelheden_sublitoraal <- + c("> 0,83 m/s", + "<= 0,83 m/s", + "> 0,92 m/s", + "<= 0,92 m/s", + "> 1,01 m/s", + "<= 1,01 m/s") + +df_sublit_20 <- data.frame("Ecotoop" = ecotopen_20_sublitoraal, "maxV" = snelheden_sublitoraal) %>% + mutate(Getijdezone = "Sublitoraal", Geomorftype = "Onbepaald", Fysiotoop = Ecotoop) + +ecotopen_df_20 <- + ecotopen_df %>% + dplyr::filter(!str_detect(Ecotoop, "subtidaal")) %>% + mutate(maxV = "") %>% + bind_rows(df_sublit_20) %>% + bind_rows(data.frame(Getijdezone = "Sublitoraal", + Ecotoop = "Hoogdynamisch diep subtidaal", + Geomorftype = "Onbepaald", + Fysiotoop = "Zeer diep subtidaal", + maxV = "----")) %>% + mutate(Getijdezone = factor(Getijdezone, levels = c("Sublitoraal", "Litoraal", "Supralitoraal"))) %>% + arrange(Getijdezone, fct_relevel(Fysiotoop, 'Zeer diep subtidaal')) %>% + relocate(Getijdezone, Geomorftype, Fysiotoop, maxV, Ecotoop) + +movedown <- ecotopen_df_20 %>% + dplyr::filter(Ecotoop %in% c("Hoog supralitoraal (begroeid)", "Hoog supralitoraal hard antropogeen", "Getijdeplas", "Antropogeen")) + +ecotopen_df_20 <- ecotopen_df_20 %>% + dplyr::filter(!Ecotoop %in% c("Hoog supralitoraal (begroeid)", "Hoog supralitoraal hard antropogeen", "Getijdeplas", "Antropogeen")) %>% + bind_rows(movedown %>% + arrange(fct_relevel(Ecotoop, "Hoog supralitoraal (begroeid)", "Hoog supralitoraal hard antropogeen", "Getijdeplas", "Antropogeen"))) %>% + rename("Max. snelheid (vloed)" = maxV) + + + +``` + +```{r make flextable klassen 2} +#### E2 klassen tabel #### + +set_flextable_defaults(background.color = "white") + +row_div_2 <- c(8:10, 14:16, 21:22) + +flt_klassen_2 <- + ecotopen_df_20 %>% + flextable() %>% + merge_v(j = c(1:3, 5)) %>% + bold(i = 1, part = "header") %>% + width(j = "Fysiotoop", width = 40, unit = "mm") %>% + width(j = "Geomorftype", width = 45, unit = "mm") %>% + width(j = "Ecotoop", width = 67, unit = "mm") %>% + bg(i = row_div_2, j = 2:5, bg = "#D9D9D9", part = "body") %>% + hline_bottom(part = "body", border = fp_border(color = "#D9D9D9", width = 1.5)) %>% + rotate(j = "Getijdezone", rotation = "btlr", part = "body") %>% + set_header_labels(Getijdezone = "") %>% + width(j = 1, width = 10, unit = "mm") %>% + hline(i = c(7, 16), part = "body") %>% + vline(j = 1, part = "body") + +output_name_klasse_2 <- "030_tabel_klassen_E2.png" +flt_klassen_2 %>% save_as_image(path = str_c(pad_tabellen, output_name_klasse_2)) +``` + diff --git a/moneos_2024/040_vegetatiekaart/INBO.MONEOS_sjabloonT2023_BV_vegetatiekaart.docx b/moneos_2024/040_vegetatiekaart/INBO.MONEOS_sjabloonT2023_BV_vegetatiekaart.docx new file mode 100644 index 0000000..3ea331c Binary files /dev/null and b/moneos_2024/040_vegetatiekaart/INBO.MONEOS_sjabloonT2023_BV_vegetatiekaart.docx differ diff --git a/moneos_2024/040_vegetatiekaart/word_naar_rmd.R b/moneos_2024/040_vegetatiekaart/word_naar_rmd.R new file mode 100644 index 0000000..3245770 --- /dev/null +++ b/moneos_2024/040_vegetatiekaart/word_naar_rmd.R @@ -0,0 +1,19 @@ + +library(protocolhelper) + +source("../pad.R") + +hoofdstuk <- "040_vegetatiekaart" +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +convert_docx_to_rmd(from = "040_vegetatiekaart/INBO.MONEOS_sjabloonT2023_BV_vegetatiekaart.docx", + to = "150_geintegreerd_rapport/040_vegetatiekaart_magweg.Rmd", + dir_media = pad_figuren) + +add_captions(from = "150_geintegreerd_rapport/040_vegetatiekaart_magweg.Rmd", + to = "150_geintegreerd_rapport/040_vegetatiekaart.Rmd") + +unlink("150_geintegreerd_rapport/040_vegetatiekaart_magweg.Rmd") + diff --git a/moneos_2024/050_hogere_planten/INBO.MONEOS_sjabloonT2023_BV_hogereplanten.docx b/moneos_2024/050_hogere_planten/INBO.MONEOS_sjabloonT2023_BV_hogereplanten.docx new file mode 100644 index 0000000..faf5326 Binary files /dev/null and b/moneos_2024/050_hogere_planten/INBO.MONEOS_sjabloonT2023_BV_hogereplanten.docx differ diff --git a/moneos_2024/050_hogere_planten/word_naar_rmd.R b/moneos_2024/050_hogere_planten/word_naar_rmd.R new file mode 100644 index 0000000..241db88 --- /dev/null +++ b/moneos_2024/050_hogere_planten/word_naar_rmd.R @@ -0,0 +1,19 @@ + +library(protocolhelper) + +source("../pad.R") + +hoofdstuk <- "050_hogere_planten" +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +convert_docx_to_rmd(from = "050_hogere_planten/INBO.MONEOS_sjabloonT2023_BV_hogereplanten.docx", + to = "150_geintegreerd_rapport/050_hogere_planten_magweg.Rmd", + dir_media = pad_figuren) + +add_captions(from = "150_geintegreerd_rapport/050_hogere_planten_magweg.Rmd", + to = "150_geintegreerd_rapport/050_hogere_planten.Rmd") + +unlink("150_geintegreerd_rapport/050_hogere_planten_magweg.Rmd") + diff --git a/moneos_2024/060_sedimentkenmerken/10_sediment_data.Rmd b/moneos_2024/060_sedimentkenmerken/10_sediment_data.Rmd new file mode 100644 index 0000000..94a9fdd --- /dev/null +++ b/moneos_2024/060_sedimentkenmerken/10_sediment_data.Rmd @@ -0,0 +1,157 @@ +--- +params: + hoofdstuk: "060_sedimentkenmerken" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Sediment MONEOS data" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.showtext = TRUE, dpi = 300) + +``` + + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(INBOtheme) +library(rprojroot) + + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +# source("../pad.R") +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +# OPGELET!!! + # Dit script start met de afgewerkte data-aanlevering. + # Om te starten met extractie van de gegevens uit de databank zie script 2017 + +##datavoorbereiding 2024 +##koppelen van sedimentdata met locatiegegevens + +data2022loc <- read_excel(paste0(pad_data, "Locaties2022.xlsx")) +data2022sed <- read_excel(paste0(pad_data, "Sediment2022_spatial.xlsx")) + +data2022loc <- data2022loc %>% + dplyr::filter(CampagneCode == "Spatial2022") %>% + rename_with(tolower) %>% + rename(X = x) %>% + rename(Y = y) + +data2022sed <- data2022sed %>% + rename_with(tolower) %>% + rename (OM = om) + +data2022 <- data2022loc %>% + left_join(data2022sed, by = "locatiecode") %>% + rename(locatie = locatiecode) + +data2023loc <- read_excel(paste0(pad_data, "Locaties2023_ONAF.xlsx")) +data2023sed <- read_excel(paste0(pad_data, "Sediment2023_spatial.xlsx")) + +data2023loc <- data2023loc %>% + dplyr::filter(CampagneCode == "Spatial2023") %>% + rename_with(tolower) %>% + rename(X = x) %>% + rename(Y = y) + +data2023sed <- data2023sed %>% + rename_with(tolower) %>% + rename (OM = om) + +data2023 <- data2023loc %>% + left_join(data2023sed, by = "locatiecode") %>% + rename(locatie = locatiecode) + + +##selectie variabelen en omzetten lang formaat + +data2022 <- data2022 %>% + select(jaar, campagne, waterloop, tidaal, fysiotoop, locatie, X, Y, mediaan, OM, slib) %>% + gather("mediaan", "OM", "slib", key = variabele, value = waarde, na.rm = TRUE) + +data2023 <- data2023 %>% + select(jaar, campagne, waterloop, tidaal, fysiotoop, locatie, X, Y, mediaan, OM, slib) %>% + gather("mediaan", "OM", "slib", key = variabele, value = waarde, na.rm = TRUE) + +##check op dubbels +dubbel <-data2023 %>% + dplyr::group_by(jaar, campagne, waterloop, tidaal, fysiotoop, locatie, X, Y, variabele) %>% + dplyr::summarise(n = dplyr::n(), .groups = "drop") %>% + dplyr::filter(n > 1L) + +##data toevoegen aan dataset vorige rapportage + data <- read_excel(paste0(pad_data, "S_DS_V_004a_sediment_data2008_2021_rapportage2023.xlsx")) + + data <- data %>% + select(jaar, campagne, waterloop, tidaal, fysiotoop, locatie, X, Y, variabele, waarde) + + ##promemory uit de dataset/databank zijn volgende data verwijderd bij de aanlevering naar VLIZ omdat ze foutief zijn gemeten: + # foute data van GK 2015 intertidaal verwijderen + #subset(data, !(tidaal=="intertidaal" & jaar==2015 & waterloop=="Zeeschelde IV" & + # variabele %in% c("mediaan","slib") )) + # foute data ZSIV 2013 intertidaal verwijderen + # subset(data, !(tidaal == "intertidaal" & jaar ==2013 & waterloop == "Zeeschelde IV" & + # variabele %in% c("mediaan","slib") )) + # data ZSI subtidaal 2013 is ook verdacht en werd verwijderd + # subset(data, !(tidaal == "subtidaal" & jaar ==2013 & waterloop == "Zeeschelde I" & + # variabele %in% c("mediaan","slib") )) + + data <- data %>% + rbind (data2022, data2023) %>% + na.omit(TRUE) + +# template_data <- +# data.frame(x = sample(seq(0,10,0.05), 100, replace = TRUE)) %>% +# mutate(y = 0.5 + 2*x + rnorm(n())) + +``` + + +data gecreëerd op `r Sys.time()` + +data weggeschreven naar `r paste0(pad_data, "template_data.csv")` + + +```{r wegschrijven-data} + + file <- paste0(pad_data, "S_DS_V_004a_sediment_data2008_",(year(Sys.Date())-1),"_rapportage",year(Sys.Date()),".xlsx") + + openxlsx::write.xlsx(data, file, rowNames = FALSE, overwrite = TRUE) + + data %>% + write_delim(paste0(pad_data, "sediment_data.csv"), + delim = ";") + +``` + + + + diff --git a/moneos_2024/060_sedimentkenmerken/20_sediment_analyse.Rmd b/moneos_2024/060_sedimentkenmerken/20_sediment_analyse.Rmd new file mode 100644 index 0000000..2a74639 --- /dev/null +++ b/moneos_2024/060_sedimentkenmerken/20_sediment_analyse.Rmd @@ -0,0 +1,1540 @@ +--- +params: + hoofdstuk: "060_sedimentkenmerken" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Sedimentkenmerken MONEOS analyse" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE, fig.showtext = TRUE, dpi = 300) + +``` + + + +```{r libraries} + +library(tidyverse) +library(writexl) +library(gridExtra) +library(readxl) +library(rprojroot) +library(scales) +library(INBOtheme) +library(dplyr) +library(purrr) +library(ggplot2) +library(broom) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +# source("../pad.R") +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +sediment_data <- + read_delim(paste0(pad_data, "sediment_data.csv"), + delim = ";") + +vroegste_jaar <- + sediment_data$jaar %>% + min() + +recentste_jaar <- + sediment_data$jaar %>% + max() +# +# kleinste_y <- +# template_data$y %>% +# min() +# +# grootste_y <- +# template_data$y %>% +# max() + +``` + + +# beschrijving van de data + + - Er zijn `r ncol(sediment_data)` variabelen + + `r paste(names(sediment_data), sep = ", ")` + - Er zijn `r nrow(sediment_data)` metingen + + + +# overzicht jaar waarden + +```{r 000-tabel-jaar-waarden} + +# tabel_jaar_waarden1 <- +# sediment_data %>% +# mutate(jaarcat = cut(jaar, floor(vroegste_jaar-1):ceiling(recentste_jaar+1))) %>% +# count(jaarcat) + + +tabel_jaar_waarden <- + sediment_data %>% + group_by(jaar,campagne) %>% + summarise (count = n_distinct(locatie)) + +knitr::kable(tabel_jaar_waarden) + +write_xlsx(list(jaar_waarden = tabel_jaar_waarden), + paste0(pad_tabellen, "sediment_tabellen.xlsx")) + +``` + + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_jaar = vroegste_jaar, + recentste_jaar = recentste_jaar, + metingen = nrow(sediment_data)), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +``` + +```{r voorbereiding dataset} + +table(sediment_data$tidaal) +sediment_data$tidaal[sediment_data$tidaal=="inter"] <- "intertidaal" +sediment_data$tidaal[sediment_data$tidaal=="inter"] <- "Intertidaal" +sediment_data$tidaal[sediment_data$tidaal=="sub"] <- "subtidaal" + +table(sediment_data$waterloop) + sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde_trj_Ml_Gb"] <- "Zeeschelde I_up" + sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I trj_Ml_Gb"] <- "Zeeschelde I_up" + sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I trj_Ml_Gb\r\n"] <- "Zeeschelde I_up" + sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I tijarm Zwijnaarde"] <- "Zeeschelde I_up" + sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I tijarm Zwijnaarde\r\n"] <- "Zeeschelde I-up" + sediment_data$waterloop[sediment_data$waterloop=="Beneden_Dijle"] <- "Dijle" + # + # sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde_trj_Ml_Gb"] <- "Zeeschelde I" + # sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I trj_Ml_Gb"] <- "Zeeschelde I" + # sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I trj_Ml_Gb\r\n"] <- "Zeeschelde I" + # sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I tijarm Zwijnaarde"] <- "Zeeschelde I" + # sediment_data$waterloop[sediment_data$waterloop=="Zeeschelde I tijarm Zwijnaarde\r\n"] <- "Zeeschelde I" + # + table(sediment_data$waterloop) + sediment_data$waterloop <- factor(sediment_data$waterloop, + levels=c("Zeeschelde IV","Zeeschelde III","Zeeschelde II","Zeeschelde I","Zeeschelde I_up","Rupel","Durme","Nete","Dijle","Zenne")) + + # sediment_data$waterloop <- factor(sediment_data$waterloop, + # levels=c("Zeeschelde IV","Zeeschelde III","Zeeschelde II","Zeeschelde I","Zeeschelde I_up","Rupel","Durme","Nete","Dijle","Zenne")) + + + table(sediment_data$fysiotoop) + sediment_data$fysiotoop[sediment_data$fysiotoop=="diep subtidaal"] <- "diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoge slikzone"] <- "hoog" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoog slik"] <- "hoog" + sediment_data$fysiotoop[sediment_data$fysiotoop=="lage slikzone"] <- "laag" + sediment_data$fysiotoop[sediment_data$fysiotoop=="laag intertidaal"] <- "laag" + sediment_data$fysiotoop[sediment_data$fysiotoop=="laag slik"] <- "laag" + sediment_data$fysiotoop[sediment_data$fysiotoop=="matig diep subtidaal"] <- "matig diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="laagdynamisch matig diep subtidaal"] <- "matig diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoogdynamisch matig diep subtidaal"] <- "matig diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="middelhoge slikzone"] <- "midden" + sediment_data$fysiotoop[sediment_data$fysiotoop=="middelhoog slik"] <- "midden" + sediment_data$fysiotoop[sediment_data$fysiotoop=="nog te bepalen - sub"] <- "sub indet." + sediment_data$fysiotoop[sediment_data$fysiotoop=="subtidaal"] <- "sub indet." + sediment_data$fysiotoop[sediment_data$fysiotoop=="ondiep subtidaal"] <- "ondiep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="laagdynamisch ondiep subtidaal"] <- "ondiep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoogdynamisch ondiep subtidaal"] <- "ondiep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="slik onbepaald"] <- "inter indet." + sediment_data$fysiotoop[sediment_data$fysiotoop=="laagdynamisch diep subtidaal"] <- "diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoogdynamisch diep subtidaal"] <- "diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hoogdynamisch zeer diep subtidaal"] <- "diep" + sediment_data$fysiotoop[sediment_data$fysiotoop=="hard antropogeen"] <- "hard substraat" + + unique(sediment_data$fysiotoop) + + fyzzers <- c("hoog","midden","laag", + "hard substraat","inter indet.","ondiep", + "matig diep","diep", "sub indet.","onbepaald") + sediment_data$fysiotoop <- factor(sediment_data$fysiotoop, levels = fyzzers) + + hoofd <- c("Zeeschelde IV","Zeeschelde III","Zeeschelde II","Zeeschelde I","Zeeschelde I_up" ) + # hoofd <- c("Zeeschelde IV","Zeeschelde III","Zeeschelde II","Zeeschelde I") + zij <- c("Rupel","Durme","Nete","Dijle","Zenne") + inter <- c("inter indet.","laag", "hoog", "midden") + sub <- c("diep","matig diep","ondiep","sub indet.") + intersubZS <- c("laag", "hoog", "midden", "diep","matig diep","ondiep") + +``` + +# figuur regressie + +```{r 000-figuur-regressie, fig.height=5, fig.width=8} + + +ggplotRegression <- function (fit) { + +require(ggplot2) + +ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) + + geom_point() + + stat_smooth(method = "lm", col = "red") + + labs(title = paste("Adj R2 = ",signif(summary(fit)$adj.r.squared, 5), + "Intercept =",signif(fit$coef[[1]],5 ), + " Slope =",signif(fit$coef[[2]], 5), + " P =",signif(summary(fit)$coef[2,4], 5))) +} + +test <- sediment_data %>% + pivot_wider(names_from = variabele, values_from = waarde) + + +fit1 <- lm(OM ~ mediaan, data = test) +ggplotRegression(fit1) + +fit2 <- lm(OM ~ slib, data = test) +ggplotRegression(fit2) + +fit3 <- lm(mediaan ~ slib, data = test) +ggplotRegression(fit3) + +testslib <- test %>% + dplyr::filter(slib > 25) %>% #slibbodem + dplyr::filter(OM < 25) # geen veenbodem - arbitrair gekozen grens + +fit4 <- lm(OM ~ mediaan, data = testslib) +ggplotRegression(fit4) + +fit5 <- lm(OM ~ slib, data = testslib) +ggplotRegression(fit5) + +fit6 <- lm(mediaan ~ slib, data = testslib) +ggplotRegression(fit6) + +fit6 <- lm(mediaan ~ jaar, data = testslib) +ggplotRegression(fit6) + +####testjes + +nested_data <- test %>% + # dplyr::filter(waterloop == "Zeeschelde II") %>% + group_by(waterloop,fysiotoop) %>% + nest() + +#### model: mediane korrelgrootte +fit_lm <- function(df) { + lm(mediaan ~ jaar, data = df) +} + +# Apply the function to each nested data frame +models <- nested_data %>% + mutate(model = map(data, fit_lm)) + +models + +# Extract the model coefficients and fitted values +models <- models %>% + mutate(tidy_model = map(model, tidy), + augment_model = map(model, augment)) + +# Unnest the augmented data for plotting +augmented_data <- models %>% + select(fysiotoop, waterloop, augment_model) %>% + unnest(augment_model) + +# Plot the models +ggplot(augmented_data, aes(x = jaar, y = mediaan)) + + geom_point() + + geom_line(aes(y = .fitted), linetype = "dashed") + + facet_wrap(~ fysiotoop+waterloop) + + labs(title = "Linear Regression Fits by fysiotoop in Zeeschelde II", + x = "Year", + y = "Median") + +ggsave(file=paste0(pad_figuren,"060_figuur_regressieZSII_median.jpg")) + +# Extract the model coefficients and p-values +model_summaries <- models %>% + mutate(tidy_model = map(model, tidy)) %>% + unnest(tidy_model) %>% + dplyr::filter(term == "jaar") %>% + select(waterloop,fysiotoop, estimate, p.value) + +# Identify significant models (e.g., p-value < 0.05) +significant_models <- model_summaries %>% + dplyr::filter(p.value < 0.05) + +significant_models + +write_xlsx(list(modeloutput = significant_models), + paste0(pad_tabellen, "modeloutput.xlsx")) + +#################### +# linear model: slib +#################### +fit_lm <- function(df) { + lm(slib ~ jaar, data = df) +} + +# Apply the function to each nested data frame +models <- nested_data %>% + mutate(model = map(data, fit_lm)) + +models + +# Extract the model coefficients and fitted values +models <- models %>% + mutate(tidy_model = map(model, tidy), + augment_model = map(model, augment)) + +# Unnest the augmented data for plotting +augmented_data <- models %>% + select(fysiotoop, waterloop, augment_model) %>% + unnest(augment_model) + +# Plot the models +ggplot(augmented_data, aes(x = jaar, y = slib)) + + geom_point() + + geom_line(aes(y = .fitted), linetype = "dashed") + + # facet_wrap(~ fysiotoop+waterloop) + + facet_grid(fysiotoop ~ waterloop) + + labs(title = "Linear Regression Fits by fysiotoop", + x = "Year", + y = "Mud") + +partim <- hoofd + augmented_data_hoofd <- augmented_data[augmented_data$waterloop %in% partim,] +ggplot(augmented_data_hoofd, aes(x = jaar, y = slib)) + + geom_point() + + geom_line(aes(y = .fitted), linetype = "dashed") + + # facet_wrap(~ fysiotoop+waterloop) + + facet_grid(fysiotoop ~ waterloop) + + labs(title = "Linear Regression Fits by fysiotoop", + x = "Year", + y = "Mud%") + +ggsave(file=paste0(pad_figuren,"060_figuur_regressieZS_mud.jpg")) + +partim <- zij + augmented_data_zij <- augmented_data[augmented_data$waterloop %in% partim,] + augmented_data_zij <- augmented_data_zij[augmented_data_zij$fysiotoop != "onbepaald",] + +ggplot(augmented_data_zij, aes(x = jaar, y = slib)) + + geom_point() + + geom_line(aes(y = .fitted), linetype = "dashed") + + # facet_wrap(~ fysiotoop+waterloop) + + facet_grid(fysiotoop ~ waterloop) + + labs(title = "Linear Regression Fits by fysiotoop", + x = "Year", + y = "Mud%") + +ggsave(file=paste0(pad_figuren,"060_figuur_regressie_zijrivier_mud.jpg")) + +# Extract the model coefficients and p-values +model_summaries <- models %>% + mutate(tidy_model = map(model, tidy)) %>% + unnest(tidy_model) %>% + dplyr::filter(term == "jaar") %>% + select(waterloop,fysiotoop, estimate, p.value) + +# Identify significant models (e.g., p-value < 0.05) +significant_models <- model_summaries %>% + dplyr::filter(p.value < 0.05) + +significant_models + +write_xlsx(list(modeloutput = significant_models), + paste0(pad_tabellen, "modeloutput_slib.xlsx")) + + +###################### +##### linear model: OM +###################### + +fit_lm <- function(df) { + lm(OM ~ jaar, data = df) +} + +# Apply the function to each nested data frame +models <- nested_data %>% + mutate(model = map(data, fit_lm)) + +models + +# Extract the model coefficients and fitted values +models <- models %>% + mutate(tidy_model = map(model, tidy), + augment_model = map(model, augment)) + +# Unnest the augmented data for plotting +augmented_data <- models %>% + select(fysiotoop, waterloop, augment_model) %>% + unnest(augment_model) + +# Plot the models +ggplot(augmented_data, aes(x = jaar, y = OM)) + + geom_point() + + geom_line(aes(y = .fitted), linetype = "dashed") + + facet_wrap(~ fysiotoop+waterloop) + + labs(title = "Linear Regression Fits by fysiotoop", + x = "Year", + y = "OM") + +# ggsave(file=paste0(pad_figuren,"060_figuur_regressie_OM.jpg")) + +# Extract the model coefficients and p-values +model_summaries <- models %>% + mutate(tidy_model = map(model, tidy)) %>% + unnest(tidy_model) %>% + dplyr::filter(term == "jaar") %>% + select(waterloop,fysiotoop, estimate, p.value) + +# Identify significant models (e.g., p-value < 0.05) +significant_models <- model_summaries %>% + dplyr::filter(p.value < 0.05) + +significant_models + +write_xlsx(list(modeloutput = significant_models), + paste0(pad_tabellen, "modeloutput_OM.xlsx")) + +``` + + +```{r Mediaan-Zeeschelde, fig.height=5, fig.width=8 } + +var <- "mediaan" + partim <- hoofd + deel <- "Zeeschelde" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% intersubZS,] + + grafdat <- sediment_datab + kijk <- grafdat %>% + dplyr::filter(waterloop == "Zeeschelde I") %>% + dplyr::filter(tidaal == "intertidaal") + + + ggplot(data = subset(grafdat,!is.na(fysiotoop)), + aes(x = factor(tidaal),y = waarde)) + + geom_boxplot(aes(fill = fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_","boxplotfysiotopen.jpg")) + + ggplot(data = subset(grafdat,!is.na(fysiotoop) & jaar == 2022), + aes(x = factor(tidaal),y = waarde)) + + geom_boxplot(aes(fill = fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + +``` + +```{r Mediaan-Zeeschelde-intertidaal1, fig.height=5, fig.width=8 } + +var <- "slib" + partim <- hoofd + deel <- "Zeeschelde" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + grafdat <- sediment_datab + ggplot(data = subset(grafdat,!is.na(fysiotoop)), + aes(x = factor(tidaal),y = waarde)) + + geom_boxplot(aes(fill = fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib (%)") + + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_","boxplotfysiotopen.jpg")) + +``` +```{r Mediaan-Zeeschelde-intertidaal,fig.height=5, fig.width=8 } + +var <- "mediaan" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + +``` + +```{r Mediaan-Zeeschelde-subtidaal,fig.height=5, fig.width=8} +var <- "mediaan" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(!is.na(fysiotoop)) %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Mediane korrelgrootte (µm)") + +grafdat %>% + dplyr::filter(jaar < 2016) %>% + dplyr::filter(!is.na(fysiotoop)) %>% + dplyr::filter(fysiotoop == "diep") %>% + ggplot(aes(x = waterloop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + xlab("") + ylab("Mediane korrelgrootte (µm)")+ labs(title = "sedimentdata 2008-2015") + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + dplyr::filter(!is.na(fysiotoop)) %>% + dplyr::filter(fysiotoop == "diep") %>% + ggplot(aes(x = waterloop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + xlab("") + ylab("Mediane korrelgrootte (µm)") + labs(title = "sedimentdata 2016-2023") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"diep.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + dplyr::filter(fysiotoop == "diep") %>% + ggplot(aes(x = waterloop, y = waarde)) + + geom_boxplot(aes(color = campagne)) + + xlab("") + ylab("Mediane korrelgrootte (µm)") + + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + dplyr::filter(fysiotoop == "matig diep") %>% + ggplot(aes(x = waterloop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + xlab("") + ylab("Mediane korrelgrootte (µm)") + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + dplyr::filter(fysiotoop == "ondiep") %>% + ggplot(aes(x = waterloop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + xlab("") + ylab("Mediane korrelgrootte (µm)") + +``` + +```{r Mediaan-zijrivieren-intertidaal,fig.height=5, fig.width=8 } + +var <- "mediaan" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + + ###maak selectie indien geen extra zijrivieren bemonsterd werden +grafdat <- grafdat %>% + dplyr::filter(waterloop == "Durme"| waterloop == "Rupel") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=2) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + + ylim(0,250)+ + theme(axis.text.x = element_text(angle = 90)) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=2) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + ylim(0,200) +``` + +```{r Mediaan-zijrivieren-subtidaal,fig.height=5, fig.width=8 } + +var <- "mediaan" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + + ###maak selectie indien geen extra zijrivieren bemonsterd werden +grafdat <- grafdat %>% + dplyr::filter(waterloop == "Durme"| waterloop == "Rupel") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediane korrelgrootte (µm)") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=2) + xlab("") + ylab("Mediane korrelgrootte (µm)") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=2) + xlab("") + ylab("Mediane korrelgrootte (µm)") +``` + +```{r Slib-Zeeschelde-intertidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(waterloop != "Zeeschelde I_up") + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +grafdat %>% + # dplyr::filter(waterloop == "Zeeschelde IV") %>% + mutate(periode = factor(ifelse(jaar < 2015, "voor 2015", "2015 en later"), + levels = c("voor 2015", "2015 en later"))) %>% + ggplot(aes(x = fysiotoop, y = waarde, fill = periode)) + + geom_boxplot(position = position_dodge(width = 0.8)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + labs(title= "slib% intertidaal") + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxplotperiods.jpg")) + +``` + + +```{r Slib-ZeescheldeIV-intertidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(waterloop == "Zeeschelde IV") + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~fysiotoop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"ZSIV.jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trendZSIV.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + +``` + +```{r Slib-ZeescheldeIV-subtidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(waterloop == "Zeeschelde IV") + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~fysiotoop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"ZSIV.jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trendZSIV.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + +``` + + +```{r Slib-Zeeschelde-subtidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(waterloop != "Zeeschelde I_up") + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"box.jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +# ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trendZSIV.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +grafdat %>% + mutate(periode = factor(ifelse(jaar < 2015, "voor 2015", "2015 en later"), + levels = c("voor 2015", "2015 en later"))) %>% + ggplot(aes(x = fysiotoop, y = waarde, fill = periode)) + + geom_boxplot(position = position_dodge(width = 0.8)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + labs(title= "slib% subtidaal") + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxplotperiods.jpg")) + +``` + + + + +```{r Slib-Zeeschelde-intertidaal_zondertijarmen,fig.height=5, fig.width=8 } +###bij datavoorbereiding negeer even de klassificatie van TZ en GM naar Zeeschelde I om onderstaande figuren te maken + +# var <- "slib" +# partim <- hoofd +# deel <- "Zeeschelde" +# fysn <- inter +# tidaal <- "intertidaal" +# sediment_datab <- sediment_data[sediment_data$variabele == var,] +# sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] +# sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] +# grafdat <- sediment_datab +# ggplot(grafdat, +# aes(x=factor(jaar),y=waarde)) + +# geom_boxplot(aes(fill=fysiotoop)) + +# # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + +# # coord_trans(y="log") + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") +# +# ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"ZSIzndtijarmen.jpg")) +# +# +# +# ggplot(grafdat, +# aes(x=jaar,y=waarde)) + +# geom_point(aes(color=fysiotoop)) + +# geom_smooth(aes(color=fysiotoop)) + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +# scale_x_continuous (name = "jaar", +# breaks = grafdat$jaar, +# labels = grafdat$jaar) +# +# ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trendZSIzndtijarmen.jpg")) +# +# grafdat %>% +# dplyr::filter(jaar > 2016) %>% +# ggplot(aes(x = fysiotoop, y = waarde)) + +# geom_boxplot((aes(color = fysiotoop))) + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") +# +# +# ``` +# +# +# ```{r Slib-Zeeschelde-subtidaal,fig.height=5, fig.width=8 } +# +# var <- "slib" +# partim <- hoofd +# deel <- "Zeeschelde" +# fysn <- sub +# tidaal <- "subtidaal" +# sediment_datab <- sediment_data[sediment_data$variabele == var,] +# sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] +# sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] +# grafdat <- sediment_datab +# ggplot(grafdat, +# aes(x=factor(jaar),y=waarde)) + +# geom_boxplot(aes(fill=fysiotoop)) + +# # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + +# # coord_trans(y="log") + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") +# +# ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + +# +# ggplot(grafdat, +# aes(x=jaar,y=waarde)) + +# geom_point(aes(color=fysiotoop)) + +# geom_smooth(aes(color=fysiotoop)) + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +# scale_x_continuous (name = "jaar", +# breaks = grafdat$jaar, +# labels = grafdat$jaar) +# +# ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) +# +# grafdat %>% +# dplyr::filter(jaar > 2016) %>% +# ggplot(aes(x = fysiotoop, y = waarde)) + +# geom_boxplot((aes(color = fysiotoop))) + +# facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + +``` + + +```{r Slib-zijrivieren-subtidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(fysiotoop != "sub indet.") + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +grafdat %>% + mutate(periode = factor(ifelse(jaar < 2015, "voor 2015", "2015 en later"), + levels = c("voor 2015", "2015 en later"))) %>% + ggplot(aes(x = fysiotoop, y = waarde, fill = periode)) + + geom_boxplot(position = position_dodge(width = 0.8)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + labs(title= "slib% subtidaal") + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxplotperiods.jpg")) + +``` + +```{r Slib-zijrivieren-intertidaal,fig.height=5, fig.width=8 } + +var <- "slib" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter(fysiotoop !="inter indet.") + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +grafdat %>% + mutate(periode = factor(ifelse(jaar < 2015, "voor 2015", "2015 en later"), + levels = c("voor 2015", "2015 en later"))) %>% + ggplot(aes(x = fysiotoop, y = waarde, fill = periode)) + + geom_boxplot(position = position_dodge(width = 0.8)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + labs(title= "slib% intertidaal") + ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxplotperiods.jpg")) + +``` + +```{r OM-Zeeschelde-intertidaal,fig.height=5, fig.width=8 } + +var <- "OM" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + + ylim(0,20) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + ylim(0,20) + + +``` + +```{r OM-Zeeschelde-subtidaal,fig.height=5, fig.width=8 } + +var <- "OM" + partim <- hoofd + deel <- "Zeeschelde" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + +``` + +```{r OM-Zijrivieren-subtidaal,fig.height=5, fig.width=8 } + +var <- "OM" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + +``` + +```{r OM-Zijrivieren-intertidaal,fig.height=5, fig.width=8 } + +var <- "OM" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab + + ###maak selectie indien geen extra zijrivieren bemonsterd werden +grafdat <- grafdat %>% + dplyr::filter(waterloop == "Durme"| waterloop == "Rupel") + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,".jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,var,"_",deel,"_",tidaal,"trend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("Organisch materiaal %") + + +``` + +```{r Grafieken durme} + + +tabel_jaar_waarden_Durme <- + sediment_data %>% + dplyr::filter(waterloop == "Durme") %>% + group_by(jaar,campagne,tidaal) %>% + summarise (count = n_distinct(locatie)) %>% + spread(tidaal, count) + +knitr::kable(tabel_jaar_waarden_Durme) + +write_xlsx(list(jaar_waarden = tabel_jaar_waarden_Durme), + paste0(pad_tabellen, "sediment_tabel_Durme.xlsx")) +#################### +##slib intertidaal +################# + +var <- "slib" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + grafdat %>% + dplyr::filter(jaar == 2011| jaar > 2015) %>% + ggplot(aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + xlab("") + ylab("slib % intertidaal") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes()) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("slib % intertidaal") +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxDurme.jpg")) + +grafdat %>% + group_by(jaar) %>% + summarise(slibmean = (mean(waarde))) %>% +ggplot(aes(x = jaar, y = slibmean))+ + geom_boxplot(aes()) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("slibmean %") + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durmetrend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("slib %") + +#################### +##slib subtidaal +################# + +var <- "slib" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + + grafdat %>% + dplyr::filter(jaar == 2012| jaar > 2015) %>% + ggplot(aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + xlab("") + ylab("slib % subtidaal") + + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes()) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("slib % subtidaal") +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxDurme.jpg")) + + + +#################### +##mediaan intertidaal +################# + +var <- "mediaan" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("mediaan") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediaan") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durmetrend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediaan") + +#################### +##mediaan subtidaal +################# + +var <- "mediaan" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("mediaan") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediaan") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durmetrend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("mediaan") + +#################### +##OM intertidaal +################# + +var <- "OM" + partim <- zij + deel <- "zijrivieren" + fysn <- inter + tidaal <- "intertidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("OM%") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + +ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes()) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("OM % intertidaal") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"boxDurme.jpg")) + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("OM%") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durmetrend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("OM%") + +#################### +##OM subtidaal +################# + +var <- "OM" + partim <- zij + deel <- "zijrivieren" + fysn <- sub + tidaal <- "subtidaal" + sediment_datab <- sediment_data[sediment_data$variabele == var,] + sediment_datab <- sediment_datab[sediment_datab$waterloop %in% partim,] + sediment_datab <- sediment_datab[sediment_datab$fysiotoop %in% fysn,] + grafdat <- sediment_datab %>% + dplyr::filter (waterloop == "Durme") + + + ggplot(grafdat, + aes(x=factor(jaar),y=waarde)) + + geom_boxplot(aes(fill=fysiotoop)) + + # scale_y_log10(breaks = c(0,63,125,250,500,1000)) + + # coord_trans(y="log") + + xlab("") + ylab("OM%") + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durme.jpg")) + + +ggplot(grafdat, + aes(x=jaar,y=waarde)) + + geom_point(aes(color=fysiotoop)) + + geom_smooth(aes(color=fysiotoop)) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("OM%") + + scale_x_continuous (name = "jaar", + breaks = grafdat$jaar, + labels = grafdat$jaar) + +ggsave(file=paste0(pad_figuren,"060_figuur_",var,"_",deel,"_",tidaal,"Durmetrend.jpg")) + +grafdat %>% + dplyr::filter(jaar > 2016) %>% + ggplot(aes(x = fysiotoop, y = waarde)) + + geom_boxplot((aes(color = fysiotoop))) + + facet_wrap(~waterloop, ncol=1) + xlab("") + ylab("OM%") + +``` + diff --git a/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_analyse.Rmd b/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_analyse.Rmd new file mode 100644 index 0000000..03912cb --- /dev/null +++ b/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_analyse.Rmd @@ -0,0 +1,1862 @@ +--- +params: + hoofdstuk: "070_macrozoobenthos" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Macrozoöbenthos analyse" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r 070-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r 070-libraries} + +library(tidyverse) +library(readxl) +library(writexl) +library(ggpubr) +library(INBOtheme) +library(rprojroot) +library(lubridate) +library("ragg") +library(vegan) +library(ggpubr) + +``` + + +```{r 070-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +#source("../pad.R") +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +source("G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dZDBwVVJOVk5Ld2s/PRJ_SCHELDE/VNSC/Rapportage_INBO/2022/Function_CalculateShannonIndex.R") + +controlelijst <- read_excel(paste0(pad_data, "Soortenlijst_macrozoobenthos_2008_2022.xlsx"), + sheet = "Blad1") +``` + +# Wormendeterminatiejaar - alleen uit te voeren als er OID zijn verwerkt +```{r 070-Wormendeterminatiejaar - alleen uit te voeren als er OID zijn verwerkt} +# determinaties omzetten naar densiteit en biomassa door ze te verdelen over de Oligochaeta sp (waarvoor deze wel bekend zijn, voor de determinaties w geen biomassa of densiteit bepaald) + +#staalcodes waarvoor een determinatie is gebeurd +oli_loc <- + read_excel(paste0(pad_data, "Determinaties oligochaeten spatial 2020.xlsx")) %>% + dplyr::filter(RaaiofRandom == "random") %>% + dplyr::select(locatie=staal) %>% + dplyr::distinct() %>% + dplyr::mutate(del = 1) + +#data van Oligochaeta sp in 2020 waarvoor een determinatie is gebeurd (om te marchen met de dets) +oli2020 <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021OID.xlsx")) %>% + left_join(oli_loc, by = "locatie") %>% + dplyr::filter(del == 1 & soort == "Oligochaeta sp") %>% + rename(soortGNOID = soort) + +# aantallen per wormensoort per staal van de OID +OID2020soortstaal <- + read_excel(paste0(pad_data, "Determinaties oligochaeten spatial 2020.xlsx")) %>% + dplyr::select(volgnr, RaaiofRandom, datum, staal, fractie, leeftijd, soort) %>% + dplyr::filter(RaaiofRandom == "random") %>% + dplyr::group_by(staal, soort) %>% + dplyr::summarise(N = length(staal)) + +#som van wormen per locatie in de OID +OID2020staal <- + read_excel(paste0(pad_data, "Determinaties oligochaeten spatial 2020.xlsx")) %>% + dplyr::select(volgnr, RaaiofRandom, datum, staal, fractie, leeftijd, soort) %>% + dplyr::filter(RaaiofRandom == "random") %>% + dplyr::group_by(staal) %>% + dplyr::summarise(Nst = length(staal)) + +# file met fractie per wormensoort van aandeel in het OID staal +OID <- OID2020soortstaal %>% + left_join(OID2020staal, by ="staal") %>% + dplyr::mutate(soortfractie = N/Nst) %>% + rename(locatie = staal) %>% + left_join(oli2020, by = "locatie") %>% + dplyr::mutate(Densiteit = soortfractie*densiteit, + Biomassa = soortfractie*biomassa) %>% + dplyr::filter(!is.na(fysiotoop)) %>% + dplyr::select(jaar, fysiotoop, locatie, soort, densiteit=Densiteit, biomassa=Biomassa, Taxa_groep, KRWzone, Staaltype) %>% + dplyr::mutate(Staaltype = "OID") %>% + dplyr::mutate(biomassa = if_else(biomassa == 0, 0.0001, biomassa)) + +#data oli determinaties toevoegen en de voormalige Oligochaeta sp weglaten +data_mzboidvervang <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021OID.xlsx")) %>% + left_join(oli_loc, by = "locatie") %>% + dplyr::filter(!(del == 1 & jaar == 2020 & soort == "Oligochaeta sp")) %>% + dplyr::select(jaar, fysiotoop, locatie, soort, densiteit, biomassa, Taxa_groep, KRWzone, Staaltype) %>% + rbind(OID) + +file_nameoid <- + paste0(pad_data, "macrobenthos_data_2008_2021_OID", ".xlsx") + +write_xlsx(list(macrobenthos = data_mzboidvervang), + path = file_nameoid) + + +``` + +# Basis data file import +```{r 070-data} +#GEEN OID jaar, dus trends zonder soortniveau Oligochaeta +data_macrobenthos <- + read_excel(paste0(paste0(pad_data, "/Nieuwe_datafile/"), "macrobenthos_data_2008_2022NIETAANTELEVEREN.xlsx"), sheet = "macrobenthos") %>% + dplyr::mutate(niveau3_hybr = recode(waterloop2, "Zeeschelde IV"= "Saliniteitsgradient", "Zeeschelde III"= "Oligohalien", "Zeeschelde II"= "Zoet lang verblijf", "Zeeschelde I"= "Zoet kort verblijf")) %>% + dplyr::mutate(fysiotoop = case_when( + fysiotoop %in% c("diep subtidaal") ~ "diep subtidaal", + fysiotoop %in% c("matig diep subtidaal") ~ "matig diep subtidaal", + fysiotoop %in% c("ondiep subtidaal") ~ "ondiep subtidaal", + fysiotoop %in% c("subtidaal", "nog te bepalen - sub", "nog te bepalen - subtidaal") ~ "subtidaal indet.", + fysiotoop %in% c("lage slikzone", "laag slik", "laag intertidaal (75-100%)") ~ "laag intertidaal", + fysiotoop %in% c("middelhoge slikzone", "hoge slikzone", "hoog intertidaal (0-25%)", "middelhoog slik", "middelhoog/hoog slik", "midden intertidaal (25-75%)") ~ "middelhoog/hoog intertidaal", + fysiotoop %in% c("hard substraat", "hard antropogeen") ~ "hard substraat", + fysiotoop %in% c("nog te bepalen - inter", "onbepaald", "slik", "slik onbepaald") ~ "intertidaal indet.", + TRUE ~ fysiotoop)) %>% + dplyr::filter(!is.na(tidaal)) %>% + dplyr::mutate(densiteit = if_else(soort != "geen" & densiteit == 0, 314, densiteit)) ## probleem van soorten waarvoor densiteit = 0, wrsch doordat geen hele ex gevonden zijn of invoerfouten. Dit geeft probleem oa bij Shannon index dus hier waarden invullen met helft laagste waarde. Om toch onderscheid te maken met die soorten waarvoor wel een 1 genoteerd werd wordt 628 gebruikt (cijfers na de komma niet, wel bij andere cf opp van steekbuis) + + + +vroegste_jaar <- + data_macrobenthos %>% + pull(jaar) %>% + min() + +laatste_jaar <- + data_macrobenthos %>% + pull(jaar) %>% + max() + +zeeschelde_order <- + c("Zeeschelde IV", "Zeeschelde III", "Zeeschelde II", "Zeeschelde I") + +zeeschelde_order2022 <- c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf") +zeeschelde_order2022tot <- c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde_totaal") + +zijrivieren_order <- + c("Rupel", "Durme", "Nete", "Dijle", "Zenne") +waterlopen_order <- + c(zeeschelde_order, zijrivieren_order) + +waterlopen_order2022 <- + c(zeeschelde_order2022, zijrivieren_order) +fysiotoop_order <- + c("diep subtidaal", "matig diep subtidaal", "ondiep subtidaal", "laag intertidaal", "middelhoog/hoog intertidaal", "hard substraat") + +``` + +# Totaal-files +```{r 070-totaal-over-soorten} + +data_macrobenthos_totaal <- + data_macrobenthos %>% + dplyr::group_by(jaar, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal, fysiotoop, locatie) %>% + dplyr::summarise_at(vars(densiteit, biomassa), ~sum(.,na.rm=TRUE)) %>% + ungroup() +sum(data_macrobenthos_totaal$biomassa) + + + + +loc_systdata <- data_macrobenthos %>% + dplyr::select(locatie, jaar, fysiotoop, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal) %>% + dplyr::distinct() + +#groeperen per Taxa_groep maar om later gemiddelde juist te berekenen nu ook missing cases toevoegen +data_macrobenthos_totaalTAX <- + data_macrobenthos %>% + complete(locatie, Taxa_groep, fill = list(densiteit = 0, biomassa =0)) %>% + dplyr::select(! c(jaar, fysiotoop, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal)) %>% + left_join(loc_systdata, by = "locatie") %>% + dplyr::group_by(jaar, Taxa_groep, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal, fysiotoop, locatie) %>% + dplyr::summarise_at(vars(densiteit, biomassa), ~sum(.,na.rm=TRUE)) %>% + ungroup() + + +# Bivalven +data_macrobenthos_totaalBIV <- + data_macrobenthos %>% + dplyr::select(!Taxa_groep) %>% + complete(locatie, soort, fill = list(densiteit = 0, biomassa =0)) %>% + dplyr::left_join(controlelijst, by = "soort") %>% + dplyr::select(! c(jaar, fysiotoop, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal)) %>% # anders deze vars dubbel + left_join(loc_systdata, by = "locatie") %>% + dplyr::filter(Taxa_groep == "Bivalvia") %>% + dplyr::group_by(jaar, soort, waterlichaam, waterloop, niveau3_hybr, systeem, tidaal, fysiotoop, locatie) %>% + dplyr::summarise_at(vars(densiteit, biomassa), ~sum(.,na.rm=TRUE)) %>% + ungroup() + + + +sum(data_macrobenthos_totaalTAX$biomassa) + +biom_min <- + min(data_macrobenthos_totaal$biomassa[!is.na(data_macrobenthos_totaal$biomassa) & data_macrobenthos_totaal$biomassa > 0]) + +data_macrobenthos_totaal %>% + dplyr::distinct(tidaal, fysiotoop) %>% + arrange(tidaal, fysiotoop) + +data_macrobenthos_totaal %>% + dplyr::filter(jaar == laatste_jaar) %>% + dplyr::distinct(tidaal, fysiotoop) %>% + dplyr::arrange(tidaal, fysiotoop) + +``` + +```{r 070-tabel-staalnamelocaties} + +tabel_staalnamelocaties <- + data_macrobenthos_totaal %>% + dplyr::filter(jaar == laatste_jaar) %>% + dplyr::count(waterloop = niveau3_hybr, fysiotoop) %>% + pivot_wider(names_from = fysiotoop, + values_from = n, + values_fill = list(n = 0)) %>% + dplyr::select(waterloop, `laag intertidaal`, `middelhoog/hoog intertidaal`, `diep subtidaal`, `matig diep subtidaal`, `ondiep subtidaal`, `hard substraat`)# `subtidaal indet.`, + +aantal_stalen <- tabel_staalnamelocaties %>% + dplyr::select(-waterloop) %>% + dplyr::summarise(aantal = sum(.)) +n_staal <- aantal_stalen$aantal + +write_xlsx(list(staalnamelocaties = tabel_staalnamelocaties), + path = paste0(pad_tabellen, "070_Macrobenthos_tabellen.xlsx")) + +``` + +# Totaal files tidaal (met tijarm versie) +```{r 070-per-waterloop-en-tidaal} + +data_macrobenthos_tidaal <- # als group_by met waterlichaam en systeem, dan 2 waarden op niveau3_hybr, dus versie met en zonder maken + data_macrobenthos_totaal %>% + group_by(jaar, niveau3_hybr, tidaal) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() + + + +data_macrobenthos_tidaalWL <- # als group_by met waterlichaam, dan 2 waarden op niveau3_hybr, dus versie met en zonder maken + data_macrobenthos_totaal %>% + group_by(jaar, waterlichaam, niveau3_hybr, systeem, tidaal) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() + +####################################### +#met tijarmen + +data_macrobenthos_tidaalTA <- # als group_by met waterlichaam en systeem, dan 2 waarden op niveau3_hybr, dus versie met en zonder maken + data_macrobenthos_totaal %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + group_by(jaar, waterloop, tidaal) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() + + +data_macrobenthos_tidaalTA <- # als group_by met waterlichaam, dan 2 waarden op niveau3_hybr, dus versie met en zonder maken + data_macrobenthos_totaal %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + group_by(jaar, waterloop, niveau3_hybr, systeem, tidaal) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() + +``` + + +```{r 070-figuur-densiteit-waterlichaam, fig.height=8, fig.width=8} + +xlb <- "waterloop" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +fnt <- 8 + +bxp_ZS <- + data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")) %>% + dplyr::mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")), + densiteit = densiteit + 1) %>% + ggplot(aes(niveau3_hybr, densiteit, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_wrap(~tidaal) +#bxp_ZS + +bxp_ZR <- data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + densiteit = densiteit + 1) %>% + ggplot(aes(niveau3_hybr, densiteit, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_wrap(~tidaal) +# bxp_ZR + +pl1 <- ggarrange(bxp_ZS + rremove("xlab") + font("xy.text", size = fnt), + bxp_ZR + rremove("xlab") + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +pl1 +ggsave(paste0(pad_figuren, "070-figuur-densiteit-waterlichaam.jpg"), pl1) + +``` + + +```{r 070-figuur-densiteit-Zeeschelde} + +xlb <- "waterloop" +ylb <- expression(paste("densiteit ", (g/m^2))) + +fnt <- 8 + +data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")) %>% + mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")), + densiteit = densiteit + 1) %>% + ggplot(aes(niveau3_hybr, densiteit, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + theme(axis.text.x = element_text(angle = 350))+ + facet_wrap(~tidaal, ncol = 1) + +ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde.jpg"), height=6, width=8) + +``` + + +```{r 070-figuur-densiteit-mediaan-waterlichaam-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +fnt <- 8 + +bxp_ZS <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")) %>% + dplyr::mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")), + densiteit_med = densiteit_med + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_med)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZS + +# ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + densiteit_med = densiteit_med + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_med)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZS + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-densiteit-waterlichaam-mediaan_alternatief.jpg"), height=8, width=8) + +``` + +#Figuur densiteit mediaan tijarm +```{r 070-figuur-densiteit-mediaan-waterlichaam-alternatief versie TIJARMEN} + +xlb <- "jaar" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +fnt <- 8 + +bxp_ZSTA <- + data_macrobenthos_tidaalTA %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::mutate(waterloop = factor(waterloop, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")), + densiteit_med = densiteit_med + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I tijarm Zwijnaarde" = "tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb" = "tijarm Gent-Melle")) %>% + ggplot(aes(jaar, densiteit_med)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~waterloop) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZSTA + +# ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + densiteit_med = densiteit_med + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_med)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZSTA + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-densiteit-waterlichaam-mediaan_alternatiefTA.jpg"), height=8, width=8) + +``` + + +```{r 070-figuur-densiteit-gemiddelde-waterlichaam-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +fnt <- 8 + +bxp_ZS <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")), + densiteit_mean = densiteit_mean + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_mean)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR +bxp_ZS + +# ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + densiteit_mean = densiteit_mean + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_mean)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZS + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-densiteitgemiddelde.png"), height=8, width=8) + +``` + +#Figuur densiteit gemiddelde met tijarm +```{r 070-figuur-densiteit-gemiddelde-waterlichaam-alternatief met TIJARMEN} + +xlb <- "jaar" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +fnt <- 8 + +bxp_ZSTA <- + data_macrobenthos_tidaalTA %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::mutate(waterloop = factor(waterloop, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")), + densiteit_mean = densiteit_mean + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I tijarm Zwijnaarde" = "tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb" = "tijarm Gent-Melle")) %>% + ggplot(aes(jaar, densiteit_mean)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~waterloop) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZSTA + + +# ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaalTA %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + densiteit_mean = densiteit_mean + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_mean)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZSTA + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-densiteitgemiddeldeTA.png"), height=8, width=8) + +``` + +```{r 070-figuur-densiteit-Zeeschelde-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("densiteit ", (ind/m^2))) + +data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")), + densiteit_med = densiteit_med + 1, + densiteit_lwr1 = densiteit_lwr1 + 1, + densiteit_upr1 = densiteit_upr1 + 1, + densiteit_lwr2 = densiteit_lwr2 + 1, + densiteit_upr1 = densiteit_upr2 + 1) %>% + ggplot(aes(jaar, densiteit_med)) + + geom_line() + + geom_ribbon(aes(ymin = densiteit_lwr1, ymax = densiteit_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = densiteit_lwr2, ymax = densiteit_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = xlb, + y = ylb) + + facet_grid(niveau3_hybr~tidaal) + + theme(axis.text.x = element_text(angle = 45)) + +ggsave(paste0(pad_figuren, "070-figuur-densiteit-Zeeschelde-alternatief.jpg"), height=8, width=6) + + +``` + + +```{r 070-figuur-biomassa-waterlichaam, fig.height=8, fig.width=8} + +xlb <- "waterloop" +ylb <- expression(paste("biomassa ", (g/m^2))) + +fnt <- 8 + +bxp_ZS <- + data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")) %>% + mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")), + biomassa = biomassa + biom_min) %>% + ggplot(aes(niveau3_hybr, biomassa, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb) + + facet_wrap(~tidaal) +# bxp_ZS + +bxp_ZR <- data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + biomassa = biomassa + biom_min) %>% + ggplot(aes(niveau3_hybr, biomassa, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb) + + facet_wrap(~tidaal) +# bxp_ZR + +ggarrange(bxp_ZS + rremove("xlab") + font("xy.text", size = fnt), + bxp_ZR + rremove("xlab") + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-biomassa-waterlichaam.jpg")) + +``` + + +```{r 070-figuur-biomassa-Zeeschelde} + +xlb <- "waterloop" +ylb <- expression(paste("biomassa ", (g/m^2))) + +fnt <- 8 + +data_macrobenthos_totaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")) %>% + mutate(jaar = ordered(jaar), + niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")), + biomassa = biomassa + biom_min) %>% + ggplot(aes(niveau3_hybr, biomassa, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb) + + facet_wrap(~tidaal, ncol = 1) + +ggsave(paste0(pad_figuren, "070-figuur-biomassa-Zeeschelde.jpg"), height=6, width=8) + +``` + + +```{r 070-figuur-biomassa-waterlichaam-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("biomassa ", (g/m^2))) + +fnt <- 8 + +bxp_ZS <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf")), + biomassa_med = biomassa_med + biom_min, + biomassa_lwr1 = biomassa_lwr1 + biom_min, + biomassa_upr1 = biomassa_upr1 + biom_min, + biomassa_lwr2 = biomassa_lwr2 + biom_min, + biomassa_upr1 = biomassa_upr2 + biom_min) %>% + ggplot(aes(jaar, biomassa_med)) + + geom_line() + + geom_ribbon(aes(ymin = biomassa_lwr1, ymax = biomassa_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = biomassa_lwr2, ymax = biomassa_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb)+ + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZS + +# ggsave(paste0(pad_figuren, "070-figuur-biomassa-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + biomassa_med = biomassa_med + biom_min, + biomassa_lwr1 = biomassa_lwr1 + biom_min, + biomassa_upr1 = biomassa_upr1 + biom_min, + biomassa_lwr2 = biomassa_lwr2 + biom_min, + biomassa_upr1 = biomassa_upr2 + biom_min) %>% + ggplot(aes(jaar, biomassa_med)) + + geom_line() + + geom_ribbon(aes(ymin = biomassa_lwr1, ymax = biomassa_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = biomassa_lwr2, ymax = biomassa_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZS + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-biomassa-waterlichaammediaan-alternatief.jpg"), height=8, width=8) + +``` + +#Figuur biomassa gemiddelde met tijarm +```{r 070-figuur-biomassagemiddelde-waterlichaam-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("biomassa ", (g/m^2))) + +fnt <- 8 + +bxp_ZSTA <- + data_macrobenthos_tidaalTA %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::mutate(waterloop = factor(waterloop, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")), + biomassa_mean = biomassa_mean + biom_min, + biomassa_lwr1 = biomassa_lwr1 + biom_min, + biomassa_upr1 = biomassa_upr1 + biom_min, + biomassa_lwr2 = biomassa_lwr2 + biom_min, + biomassa_upr1 = biomassa_upr2 + biom_min) %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I tijarm Zwijnaarde" = "tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb" = "tijarm Gent-Melle")) %>% + ggplot(aes(jaar, biomassa_mean)) + + geom_line() + + geom_ribbon(aes(ymin = biomassa_lwr1, ymax = biomassa_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = biomassa_lwr2, ymax = biomassa_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + ylim(0,70)+ + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~waterloop) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZSTA + +# ggsave(paste0(pad_figuren, "070-figuur-biomassa-Zeeschelde-alternatief.jpg"), height=4, width=8) + + +bxp_ZR <- + data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Rupel", "Durme", "Nete", "Dijle", "Zenne")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Rupel", "Durme", "Nete", "Dijle", "Zenne")), + biomassa_mean = biomassa_mean + biom_min, + biomassa_lwr1 = biomassa_lwr1 + biom_min, + biomassa_upr1 = biomassa_upr1 + biom_min, + biomassa_lwr2 = biomassa_lwr2 + biom_min, + biomassa_upr1 = biomassa_upr2 + biom_min) %>% + ggplot(aes(jaar, biomassa_mean)) + + geom_line() + + geom_ribbon(aes(ymin = biomassa_lwr1, ymax = biomassa_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = biomassa_lwr2, ymax = biomassa_upr2), alpha = 0.2) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + ylim(0,70)+ + labs(x = xlb, + y = ylb) + + facet_grid(tidaal~niveau3_hybr) + + theme(axis.text.x = element_text(angle = 45)) +bxp_ZR + +ggarrange(bxp_ZSTA + font("xy.text", size = fnt), + bxp_ZR + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE) + +ggsave(paste0(pad_figuren, "070-figuur-biomassagemiddelde-waterlichaam-alternatiefTA.jpg"), height=8, width=8) + +``` + + +```{r 070-figuur-biomassa-Zeeschelde-alternatief} + +xlb <- "jaar" +ylb <- expression(paste("biomassa ", (g/m^2))) + +data_macrobenthos_tidaal %>% + dplyr::filter(niveau3_hybr %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")) %>% + mutate(niveau3_hybr = factor(niveau3_hybr, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Durme", "Rupel")), + biomassa_med = biomassa_med + biom_min, + biomassa_lwr1 = biomassa_lwr1 + biom_min, + biomassa_upr1 = biomassa_upr1 + biom_min, + biomassa_lwr2 = biomassa_lwr2 + biom_min, + biomassa_upr1 = biomassa_upr2 + biom_min) %>% + ggplot(aes(jaar, biomassa_med)) + + geom_line() + + geom_ribbon(aes(ymin = biomassa_lwr1, ymax = biomassa_upr1), alpha = 0.2) + + # geom_ribbon(aes(ymin = biomassa_lwr2, ymax = biomassa_upr2), alpha = 0.2) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_log10(breaks = c(0,0.1,1,10,100,1000)+biom_min, labels = c(0,0.1,1,10,100,1000)) + + labs(x = xlb, + y = ylb) + + facet_grid(niveau3_hybr~tidaal) + + theme(axis.text.x = element_text(angle = 45)) + +ggsave(paste0(pad_figuren, "070-figuur-biomassa-Zeeschelde-alternatief.jpg"), height=8, width=6) + +``` + +#Lege stalen +```{r 070-figuur-aandeel-legel-stalen} + +data_macrobenthos_totaal %>% + dplyr::filter(!is.na(waterloop)) %>% + group_by(jaar, waterloop = niveau3_hybr, systeem) %>% + summarise(leeg = sum(densiteit == 0 & biomassa == 0, na.rm = TRUE), + totaal = n(), + leeg_perc = leeg/totaal*100) %>% + ungroup() %>% + mutate(waterloop = factor(waterloop, levels = waterlopen_order2022)) %>% + ggplot(aes(jaar, leeg_perc, color = waterloop)) + + geom_line(aes(linetype = systeem), size = 1) + + geom_point(aes(shape = systeem), size = 3) + + scale_x_continuous(breaks = seq(if_else((laatste_jaar-vroegste_jaar)%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + scale_y_continuous(breaks = seq(0,50,10), labels = paste0(seq(0,50,10), "%")) + + labs(y = "aandeel lege stalen") + +ggsave(paste0(pad_figuren, "070-figuur-aandeel-lege-stalen.jpg"), height=5, width=8) + +unique(data_macrobenthos_totaal$niveau3_hybr) + +``` + +#Soortenrijkdom +```{r 070-figuur-soortenrijkdom-Zeeschelde} + +data_macrobenthos %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::filter(#waterloop2 == "Zeeschelde I", + fysiotoop %in% fysiotoop_order, + fysiotoop != "hard substraat") %>% + dplyr::filter(!is.na(waterloop)) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::mutate(waterloop = factor(waterloop, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb"))) %>% + mutate(is_soort = if_else(soort == "geen", 0, 1)) %>% + dplyr::group_by(jaar, tidaal, locatie, waterloop) %>% + dplyr::summarise(n = sum(is_soort)) %>% + ungroup() %>% + dplyr::mutate(jaar = ordered(jaar)) %>% + ggplot(aes(tidaal, n, fill = jaar)) + + geom_boxplot() + + ggsci::scale_fill_simpsons() + + labs(y = "aantal soorten")+ + labs(x = "")+ + facet_wrap(~waterloop) + +ggsave(paste0(pad_figuren, "070-figuur-soortenrijkdom-Zeeschelde.jpg"), height=5, width=8) +waterlopen_order + +SR<- data_macrobenthos %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::mutate(waterloop = factor(waterloop, + levels = c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb"))) %>% + dplyr::filter(!is.na(waterloop)) %>% + select(!c(locatie, densiteit, biomassa)) %>% + dplyr::filter(fysiotoop %in% fysiotoop_order, + fysiotoop != "hard substraat") %>% + dplyr::filter(soort !="geen") %>% + dplyr::mutate(is_soort = if_else(soort == "geen", 0, 1)) %>% + distinct() %>% + dplyr::group_by(jaar, tidaal, waterloop) %>% + dplyr::summarise(n = sum(is_soort)) %>% + ungroup() %>% + mutate(jaar = ordered(jaar)) %>% + ggplot(aes(x=jaar,y = n, fill = tidaal)) + + ylab("aantal taxa") + + geom_line(aes(colour = tidaal, group = tidaal)) + + theme(axis.text.x = element_text(angle = 90))+ + facet_wrap(~waterloop) +SR +ggsave(paste0(pad_figuren, "070-figuur-soortenrijkdom-lijn-Zeeschelde.jpg"), height=5, width=8) + + +``` + +#Shannon +```{r 070-Shannon} + +ZStotshbiom <- data_macrobenthos %>% + dplyr::filter(!is.na(waterloop)) %>% + dplyr::mutate(jaar = as.factor(jaar), soort = if_else(Taxa_groep == "Oligochaeta", "Oligochaeta", soort)) %>% ## sommige jaren zijn determinatiejaren voor wormen, dus alle oligo als 1 soort. Oligo weg laten geen goed idee want dan geen soorten meer in bv oligohalien in vele jaren + dplyr::filter(systeem != "zijrivieren", biomassa > 0, soort != "geen") %>% + dplyr::group_by(soort, tidaal, jaar) %>% + dplyr::summarize(bm = sum(na.omit(biomassa))) %>% + dplyr::ungroup() %>% + dplyr::group_by(tidaal, jaar) %>% + dplyr::summarize(Shannon_biomassa = calc_shannon_index(bm)) %>% + dplyr::mutate(waterloop_ZS = "Zeeschelde_totaal") + + +Sh_b_bas<- data_macrobenthos %>% + dplyr::filter(!is.na(waterloop)) %>% + dplyr::rename(waterloop_ZS = niveau3_hybr) %>% + dplyr::mutate(jaar = as.factor(jaar), soort = if_else(Taxa_groep == "Oligochaeta", "Oligochaeta", soort)) %>% ## sommige jaren zijn determinatiejaren voor wormen, dus alle oligo als 1 soort. Oligo weg laten geen goed idee want dan geen soorten meer in bv oligohalien in vele jaen + dplyr::filter(systeem != "zijrivieren", biomassa > 0) %>% + dplyr::group_by(soort, waterloop_ZS, tidaal, jaar) %>% + dplyr::summarize(bm = sum(na.omit(biomassa)), + ab = sum(na.omit(densiteit))) %>% + dplyr::ungroup() %>% + dplyr::group_by(waterloop_ZS, tidaal, jaar) %>% + dplyr::summarize(Shannon_biomassa = calc_shannon_index(bm)) + +Sh_biom_i <- Sh_b_bas %>% + rbind(ZStotshbiom) %>% + dplyr::mutate(waterloop_ZS = factor(waterloop_ZS, + levels = zeeschelde_order2022tot)) %>% + dplyr::filter(tidaal == "intertidaal") %>% + ggplot(aes(x=jaar, y=Shannon_biomassa), colour=waterloop_ZS)+ + geom_line(aes(colour=waterloop_ZS, group=waterloop_ZS), size =1.2) + +Sh_biom_s <- Sh_b_bas %>% + rbind(ZStotshbiom) %>% + dplyr::mutate(waterloop_ZS = factor(waterloop_ZS, + levels = zeeschelde_order2022tot)) %>% + dplyr::filter(tidaal == "subtidaal") %>% + ggplot(aes(x=jaar, y=Shannon_biomassa), colour=waterloop_ZS)+ + geom_line(aes(colour=waterloop_ZS, group=waterloop_ZS), size =1.2) + +# Shannon aantal +ZStotshaant <- data_macrobenthos %>% + dplyr::filter(!is.na(waterloop)) %>% + dplyr::mutate(jaar = as.factor(jaar), soort = if_else(Taxa_groep == "Oligochaeta", "Oligochaeta", soort)) %>% ## sommige jaren zijn determinatiejaren voor wormen, dus alle oligo als 1 soort. Oligo weg laten geen goed idee want dan geen soorten meer in bv oligohalien in vele jaen + dplyr::filter(systeem != "zijrivieren", soort != "geen") %>% + dplyr::group_by(soort, tidaal, jaar) %>% + dplyr::summarize(ab = sum(na.omit(densiteit))) %>% + dplyr::ungroup() %>% + dplyr::group_by(tidaal, jaar) %>% + dplyr::summarize(Shannon_aantal = calc_shannon_index(ab)) %>% + dplyr::mutate(waterloop_ZS = "Zeeschelde_totaal") + + +Sh_a_bas<- data_macrobenthos %>% + dplyr::filter(!is.na(waterloop)) %>% + dplyr::rename(waterloop_ZS = niveau3_hybr) %>% + dplyr::mutate(jaar = as.factor(jaar), soort = if_else(Taxa_groep == "Oligochaeta", "Oligochaeta", soort)) %>% ## sommige jaren zijn determinatiejaren voor wormen, dus alle oligo als 1 soort. Oligo weg laten geen goed idee want dan geen soorten meer in bv oligohalien in vele jaen + dplyr::filter(systeem != "zijrivieren", soort != "geen") %>% + dplyr::group_by(soort, waterloop_ZS, tidaal, jaar) %>% + dplyr::summarize(bm = sum(na.omit(biomassa)), + ab = sum(na.omit(densiteit))) %>% + dplyr::ungroup() %>% + dplyr::group_by(waterloop_ZS, tidaal, jaar) %>% + dplyr::summarize(Shannon_aantal = calc_shannon_index(ab)) + + + +Sh_aant_i<- Sh_a_bas %>% + rbind(ZStotshaant) %>% + dplyr::mutate(waterloop_ZS = factor(waterloop_ZS, + levels = zeeschelde_order2022tot)) %>% + dplyr::filter(tidaal == "intertidaal") %>% + ggplot(aes(x=jaar, y=Shannon_aantal), colour=waterloop_ZS)+ + geom_line(aes(colour=waterloop_ZS, group=waterloop_ZS), size =1.2) + +Sh_aant_s<- Sh_a_bas %>% + rbind(ZStotshaant) %>% + dplyr::mutate(waterloop_ZS = factor(waterloop_ZS, + levels = zeeschelde_order2022tot)) %>% + dplyr::filter(tidaal == "subtidaal") %>% + ggplot(aes(x=jaar, y=Shannon_aantal), colour=waterloop_ZS)+ + geom_line(aes(colour=waterloop_ZS, group=waterloop_ZS), size =1.2) + + +ggarrange(Sh_aant_i + rremove("xlab")+ font("xy.text", size = fnt), + Sh_biom_i + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE, legend = "right")+ bgcolor("White") + +ggsave(paste0(pad_figuren, "070-figuur-Shannondiv-intert-Zeeschelde.jpg"), height=5, width=8) + +ggarrange(Sh_aant_s + rremove("xlab")+ font("xy.text", size = fnt), + Sh_biom_s + font("xy.text", size = fnt), + nrow = 2, + common.legend = TRUE, legend = "right")+ bgcolor("White") + +ggsave(paste0(pad_figuren, "070-figuur-Shannondiv-subt-Zeeschelde.jpg"), height=5, width=8) + +``` + + +## koppelen met OPPS + +```{r 070-oppervlakte koppelen} +#Volledige jaren: 2001,2010, 2016, 2019, andere jaren niet voor OMES 14-19 dus niet gebruiken + +oppsruw <- read_delim(paste0(pad_data, "SpatialEcotopenOpp_INBO_2021.csv")) %>% #, sheet = "SpatialEcotopenOpp_INBO_2021") + dplyr::filter(waterloop != "SCHRAP", !is.na(tidaal)) %>% + # hoog en middelhoog samennemen - tot categorie middelhoog/hoog intertidaal + # eco/fysiotoopnamen opkuisen om match te kunnen maken tussen + # oppervlakten en biotagegevens + dplyr::mutate(ecotoop = recode(ecotoop, "hoog intertidaal"= "middelhoog/hoog intertidaal", "middelhoog intertidaal" = "middelhoog/hoog intertidaal")) %>% + rename(fysiotoop = ecotoop, opp1 = SomVanShape_Area) %>% + dplyr::mutate(opp1 = opp1/100000000000000) %>% # geen ieee waarom bij import er plots een veel hoger getal genomen wordt?%>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf", "Tijarm" = "Zeeschelde I tijarm Zwijnaarde")) %>% + dplyr::mutate(waterloop = ifelse(Omessegmen == "19 trGM", "Zeeschelde I trj_Ml_Gb", waterloop)) + + + + # segmenten optellen +opps <- oppsruw %>% + dplyr::group_by(jaar, waterloop, tidaal, fysiotoop) %>% + dplyr::summarise(opp =sum(na.omit(opp1))) %>% + dplyr::ungroup() + +opps_intertidaalfys <- opps %>% + dplyr::filter(tidaal == "intertidaal") %>% ## Enkel intertidaal + dplyr::mutate (kaartjaar = jaar) %>% + dplyr::mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde III + Rupel" = "Oligohalien")) + + +opps_SUBfys <- opps %>% + dplyr::filter(tidaal == "subtidaal") %>% + mutate (kaartjaar = jaar) %>% + mutate(waterloop = recode(waterloop, "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) + + +data_macrobenthos_intertidaalfys <- + data_macrobenthos_totaal %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::filter(tidaal == "intertidaal") %>% + dplyr::filter(fysiotoop != "hard substraat") %>% + dplyr::filter(systeem == "Zeeschelde") %>% + mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + group_by(jaar, waterloop, niveau3_hybr, systeem, fysiotoop) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() %>% + dplyr::mutate (kaartjaar = jaar) %>% #jaar van de beste oppervlaktematch toevoegen - we kiezen de kaartjaren van totale Zeeschelde-ecotopenkaarten + dplyr::mutate (kaartjaar = if_else(jaar < 2012 & !waterloop %in% c("Nete", "Zenne", "Dijle"), 2010, ifelse(waterloop %in% c("Nete", "Zenne", "Dijle"), 2013, kaartjaar))) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2011 & jaar < 2015, 2013, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2014 & jaar < 2018 & !waterloop %in% c("Nete", "Zenne", "Dijle"), 2016, ifelse(waterloop %in% c("Nete", "Zenne", "Dijle"), 2013, kaartjaar))) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2017 & !waterloop %in% c("Nete", "Zenne", "Dijle", "Oligohalien", "Saliniteitsgradient"), 2019, ifelse(waterloop %in% c("Nete", "Zenne", "Dijle"), 2013, ifelse(jaar > 2017 & waterloop %in% c("Oligohalien", "Saliniteitsgradient"), 2021, kaartjaar)))) + +#Opps voor Zenne, Nete, Dijle enkel in 2013, dus steeds link met 2013 maken + +# %>% + # rename (waterloop = niveau3_hybr) + +sort(unique(data_macrobenthos_intertidaalfys$waterloop)) +sort(unique(opps_intertidaalfys$waterloop)) + +data_macrobenthos_OPP <- data_macrobenthos_intertidaalfys %>% + left_join(opps_intertidaalfys, by = c("kaartjaar", "fysiotoop","waterloop")) %>% + dplyr::mutate(biomassa_fys = (biomassa_mean * opp*10000)/1000000) #ton benthos, maar opp te groot? + +## samenvatten per waterloop en bereken totaal + +data_macrobenthos_OPPWL <- data_macrobenthos_OPP %>% + rename(jaar = jaar.x) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Zoet kort verblijf", "Zoet lang verblijf", "Oligohalien", "Durme", "Rupel", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% + dplyr::group_by(waterloop, jaar) %>% + dplyr::summarise(biomass_waterloop = sum(na.omit(biomassa_fys))) %>% + dplyr::ungroup() + +totaal <-data_macrobenthos_OPPWL %>% + dplyr::group_by(jaar) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Zoet kort verblijf", "Zoet lang verblijf", "Oligohalien", "Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb")) %>% ## som totale Zeeschelde dus ZONDER Rupel en Durme + dplyr::summarise(biomass_waterloop = sum(na.omit(biomass_waterloop))) %>% + dplyr::mutate (waterloop = "totaal_Zeeschelde") + +data_macrobenthos_OPPWL <- data_macrobenthos_OPPWL %>% + bind_rows(totaal) + +data_macrobenthos_OPPWL$waterloop <- factor(data_macrobenthos_OPPWL$waterloop, levels=c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf","Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb", "Rupel","Durme","totaal_Zeeschelde")) + +data_macrobenthos_OPPWL %>% + ggplot(aes(x = as.factor(jaar), y = biomass_waterloop))+ + geom_hline(yintercept = 30, linetype=2, colour = "deeppink4", size = 1.2) + + geom_hline(yintercept = 14.2, linetype=2, colour = "darkblue", size = 1.2) + + geom_hline(yintercept = 8.3, linetype=2, colour = "darkorange2", size = 1.2) + + geom_hline(yintercept = 5, linetype=2, colour = "brown", size = 1.2) + + geom_hline(yintercept = 2.5, linetype=2, colour = "darkgreen", size = 1.2) + + geom_line(aes(colour = waterloop, group = waterloop), size = 1.8) + + labs(x="", y = "systeembiomassa (ton droge stof)") + +ggsave(paste0(pad_figuren, "070-figuur-intertidalesysteembiomassa.jpg"), height=5, width=8) + +## gewogen biomassa per m² per waterloop + data_macrobenthos_OPP$waterloop <- factor(data_macrobenthos_OPP$waterloop, levels=c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf","Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb", "Rupel","Durme","totaal_Zeeschelde")) + +data_macrobenthos_OPP %>% + rename(jaar = jaar.x) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf","Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb","Rupel","Durme","totaal_Zeeschelde")) %>% + dplyr::group_by(waterloop, jaar) %>% + dplyr::summarise(weightedbiomass_waterloop = weighted.mean(biomassa_mean, opp)) %>% + ggplot(aes(x = as.factor(jaar), y = weightedbiomass_waterloop))+ + geom_line(aes(colour = waterloop, group = waterloop), size = 1.8) + + labs(x="", y = "gewogen gemiddelde biomassa (g/m²)") + + ggsave(paste0(pad_figuren, "070-figuur-gewogengemiddeldebiomassa.jpg"), height=5, width=8) + +## Gemiddelde biomassa + data_macrobenthos_OPP %>% + rename(jaar = jaar.x) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf","Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb","Rupel","Durme","totaal_Zeeschelde")) %>% + dplyr::group_by(waterloop, jaar) %>% + summarise(weightedbiomass_waterloop = mean(biomassa_mean)) %>% + ggplot(aes(x = as.factor(jaar), y = weightedbiomass_waterloop))+ + geom_line(aes(colour = waterloop, group = waterloop), size = 1.8) + + labs(x="", y = "gemiddelde biomassa (g/m²)") + + sysbiomgew <- data_macrobenthos_OPP %>% + rename(jaar = jaar.x) %>% + dplyr::filter(waterloop %in% c("Saliniteitsgradient", "Oligohalien", "Zoet lang verblijf", "Zoet kort verblijf","Zeeschelde I tijarm Zwijnaarde", "Zeeschelde I trj_Ml_Gb","Rupel","Durme","totaal_Zeeschelde")) %>% + group_by(waterloop, jaar) %>% + summarise(weightedbiomass_waterloop = mean(biomassa_mean)) + +opps %>% + dplyr::group_by(waterloop, jaar) %>% + dplyr::summarise(oppt = sum(opp)) %>% + #dplyr::filter(waterloop !="Tijarm") %>% + ggplot(aes(x=jaar, y=oppt))+ + geom_line(aes(colour=waterloop, group=waterloop), size=1.8) + +mb.sel.8sp<- data_macrobenthos %>% + dplyr::filter(waterlichaam == "Zeeschelde IV" & jaar == 2020) %>% + dplyr::group_by(soort) %>% + dplyr::summarise(biom = sum(na.omit(biomassa))) %>% + ungroup() %>% + distinct() %>% + arrange(desc(biom)) %>% + slice(1:8) %>% + ungroup() +selmb <- mb.sel.8sp$soort + +data_macrobenthos %>% + dplyr::filter(soort %in% selmb) %>% + dplyr::filter(jaar %in% c(2016, 2017, 2018, 2019, 2020, 2021, 2022)) %>% + dplyr::filter(waterlichaam == "Zeeschelde IV") %>% + dplyr::group_by(soort, jaar) %>% + dplyr::summarize(bm = sum(biomassa)) %>% + dplyr::ungroup() %>% + ggplot(aes(x=jaar, y = bm, colour = soort))+ + geom_line(aes(colour = soort, group = soort), size = 1.8) + +``` + +```{r 070-bijdrage taxa groepen Zeeschelde} +data_macrobenthos_intertidaalfysTAX <- + data_macrobenthos_totaalTAX %>% + dplyr::filter(tidaal == "intertidaal") %>% + dplyr::filter(fysiotoop != "hard substraat") %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + dplyr::filter(systeem == "Zeeschelde") %>% + dplyr::group_by(jaar, Taxa_groep, waterloop, niveau3_hybr, systeem, fysiotoop) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() %>% + dplyr::mutate (kaartjaar = jaar) %>% #jaar van de beste oppervlaktematch toevoegen - we kiezen de kaartjaren van totale Zeeschelde-ecotopenkaarten + dplyr::mutate (kaartjaar = if_else(jaar < 2012, 2010, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2011 & jaar < 2015, 2013, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2014 & jaar < 2018, 2016, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2017, 2019, ifelse(jaar == 2022, 2021, kaartjaar))) + +data_macrobenthos_OPPTAX <- data_macrobenthos_intertidaalfysTAX %>% + left_join(opps_intertidaalfys, by = c("kaartjaar", "fysiotoop","waterloop")) %>% + mutate(biomassa_fys = (biomassa_mean/1000000)*opp*10000) #ton benthos + + +data_macrobenthos_OPPWLTAXzs <- data_macrobenthos_OPPTAX %>% + rename(jaar = jaar.x) %>% + dplyr::group_by(Taxa_groep, jaar) %>% + dplyr::summarise(biomass_TAX = sum(na.omit(biomassa_fys))) %>% + dplyr::ungroup() %>% + dplyr::mutate(Taxa_groep2 = if_else(Taxa_groep %in% c("Acari", "Collembola", "Cladocera", "Coleoptera", "Nematoda", "Microturbellaria", "Psychodidae", "Diptera", "Hirudinea", "Neuroptera", "Trichoptera", "Gastropoda", "Maxillopoda", "Ostracoda", "Copepoda", "Ephemeroptera", "Cnidaria"), "REST", Taxa_groep)) %>% + dplyr::filter(!is.na(Taxa_groep2)) + %>% + dplyr::filter(!is.na(Taxa_groep)) + +unique(data_macrobenthos_OPPWLTAXzs$Taxa_groep) + + +data_macrobenthos_OPPWLTAXzs %>% + ggplot(aes(x = as.factor(jaar), y = biomass_TAX, fill=Taxa_groep2))+ + geom_bar(aes(fill=Taxa_groep2), stat="identity")+ + labs(x="", y = "systeembiomassa (ton droge stof)") + +ggsave(filename = paste0(pad_figuren, "PopTaxgroep_ZS", ".jpg"), height=5, width=8) + + +## Zelfde voor Saliniteitsgradient +data_macrobenthos_intertidaalfysTAX1 <- + data_macrobenthos_totaalTAX %>% + dplyr::filter(tidaal == "intertidaal") %>% + dplyr::filter(fysiotoop != "hard substraat") %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + #dplyr::filter(waterloop == "Saliniteitsgradient") %>% + dplyr::group_by(jaar, Taxa_groep, waterloop, niveau3_hybr, systeem, fysiotoop) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() %>% + dplyr::mutate (kaartjaar = jaar) %>% #jaar van de beste oppervlaktematch toevoegen - we kiezen de kaartjaren van totale Zeeschelde-ecotopenkaarten + dplyr::mutate (kaartjaar = if_else(jaar < 2012, 2010, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2011 & jaar < 2015, 2013, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2014 & jaar < 2018, 2016, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2017, 2019, ifelse(jaar == 2022, 2021, kaartjaar))) + + +data_macrobenthos_OPPTAX1 <- data_macrobenthos_intertidaalfysTAX1 %>% + left_join(opps_intertidaalfys, by = c("kaartjaar", "fysiotoop","waterloop")) %>% + mutate(biomassa_fys = (biomassa_mean/1000000)*opp*10000) #ton benthos + + +data_macrobenthos_OPPWLTAX1 <- data_macrobenthos_OPPTAX1 %>% + rename(jaar = jaar.x) %>% + dplyr::group_by(Taxa_groep, jaar) %>% + dplyr::summarise(biomass_TAX = sum(na.omit(biomassa_fys))) %>% + dplyr::ungroup() %>% + dplyr::filter(!Taxa_groep %in% c("Acari", "Collembola", "Cladocera", "Coleoptera", "Nematoda", "Microturbellaria", "Psychodidae", "Diptera", "Hirudinea", "Neuroptera", "Trichoptera", "Gastropoda", "Maxillopoda", "Ostracoda", "Copepoda", "Ephemeroptera", "Cnidaria")) %>% + dplyr::filter(!is.na(Taxa_groep)) + +unique(data_macrobenthos_OPPWLTAX1$Taxa_groep) + + +data_macrobenthos_OPPWLTAX1 %>% + ggplot(aes(x = as.factor(jaar), y = biomass_TAX, fill=Taxa_groep))+ + geom_bar(aes(fill=Taxa_groep), stat="identity")+ + labs(x="", y = "systeembiomassa (ton droge stof)") + +ggsave(filename = paste0(pad_figuren, "PopTaxgroep_Salgradient", ".jpg"), height=5, width=8) + + +``` + +```{r 070-bijdrage van bivalv soorten aan Bivalvia doorheen de tijd} +data_macrobenthos_intertidaalfysBIV <- + data_macrobenthos_totaalBIV %>% + dplyr::filter(tidaal == "subtidaal") %>% # hier kan ook subtidaal ingevuld worden; dan moet data_macrobenthos_OPPBIV wel een join krijgen met opps_SUBfys (zie hieronder) + dplyr::filter(fysiotoop != "hard substraat") %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" , "Beneden_Dijle" = "Dijle", "Zeeschelde IV" = "Saliniteitsgradient", "Zeeschelde III" = "Oligohalien", "Zeeschelde II" = "Zoet lang verblijf", "Zeeschelde I" = "Zoet kort verblijf")) %>% + dplyr::mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + dplyr::filter(systeem == "Zeeschelde") %>% + dplyr::group_by(jaar, soort, waterloop, niveau3_hybr, systeem, fysiotoop) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() %>% + dplyr::mutate (kaartjaar = jaar) %>% #jaar van de beste oppervlaktematch toevoegen - we kiezen de kaartjaren van totale Zeeschelde-ecotopenkaarten + dplyr::mutate (kaartjaar = if_else(jaar < 2012, 2010, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2011 & jaar < 2015, 2013, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2014 & jaar < 2018, 2016, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2017, 2019, kaartjaar)) + + +data_macrobenthos_OPPBIV <- data_macrobenthos_intertidaalfysBIV %>% + left_join(opps_SUBfys, by = c("kaartjaar", "fysiotoop","waterloop")) %>% # opps_SUBfys voor sub opps_intertidaalfys + mutate(biomassa_fys = (biomassa_mean/1000000)*opp*10000) #ton benthos + + +data_macrobenthos_OPPWLBIVzs <- data_macrobenthos_OPPBIV %>% + rename(jaar = jaar.x) %>% + dplyr::group_by(soort, jaar) %>% + dplyr::summarise(biomass_BIV = sum(na.omit(biomassa_fys))) %>% + dplyr::ungroup() %>% + dplyr::filter(!soort %in% c("Pisidium sp", "Dreissena sp", "Dreissena polymorpha", "Dreissena bugensis")) %>% + dplyr::filter(!is.na(soort)) + +unique(data_macrobenthos_OPPWLBIVzs$soort) + +data_macrobenthos_OPPWLBIVzs %>% + ggplot(aes(x = as.factor(jaar), y = biomass_BIV, color=soort))+ + geom_line(aes(x = as.factor(jaar), y=biomass_BIV, group=soort)) + + labs(x="", y = "systeembiomassa (ton droge stof)") + +data_macrobenthos_OPPWLBIVzs %>% + ggplot(aes(x = as.factor(jaar), y = biomass_BIV, fill=soort))+ + geom_bar(aes(fill=soort), stat="identity")+ + labs(x="", y = "systeembiomassa (ton droge stof)") + + + +data_macrobenthos_OPPWLBIVzs +ggsave(filename = paste0(pad_figuren, "BIVsoortenSUB_ZS", ".jpg"), height=5, width=8) + + +## Zelfde voor Saliniteitsgradient +data_macrobenthos_intertidaalfysTAX <- + data_macrobenthos_totaalTAX %>% + dplyr::filter(tidaal == "intertidaal") %>% + dplyr::filter(fysiotoop != "hard substraat") %>% + dplyr::mutate (fysiotoop = (if_else(waterloop == "Durme" & fysiotoop != "intertidaal indet.", "intertidaal indet.", fysiotoop))) %>% + dplyr::filter(niveau3_hybr == "Saliniteitsgradient") %>% + dplyr::group_by(jaar, Taxa_groep, waterlichaam, niveau3_hybr, systeem, fysiotoop) %>% + summarise_at(vars(densiteit, biomassa), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() %>% + dplyr::mutate (kaartjaar = jaar) %>% #jaar van de beste oppervlaktematch toevoegen - we kiezen de kaartjaren van totale Zeeschelde-ecotopenkaarten + dplyr::mutate (kaartjaar = if_else(jaar < 2012, 2010, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2011 & jaar < 2015, 2013, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2014 & jaar < 2018, 2016, kaartjaar)) %>% + dplyr::mutate (kaartjaar = if_else(jaar > 2017, 2019, kaartjaar)) %>% + rename(waterloop = niveau3_hybr) + + +data_macrobenthos_OPPTAX <- data_macrobenthos_intertidaalfysTAX %>% + left_join(opps_intertidaalfys, by = c("kaartjaar", "fysiotoop","waterloop")) %>% + mutate(biomassa_fys = (biomassa_mean/1000000)*opp*10000) #ton benthos + + +data_macrobenthos_OPPWLTAX <- data_macrobenthos_OPPTAX %>% + rename(jaar = jaar.x) %>% + dplyr::group_by(Taxa_groep, jaar) %>% + dplyr::summarise(biomass_TAX = sum(na.omit(biomassa_fys))) %>% + dplyr::ungroup() %>% + dplyr::filter(!Taxa_groep %in% c("Acari", "Collembola", "Cladocera", "Coleoptera", "Nematoda", "Microturbellaria", "Psychodidae", "Diptera", "Hirudinea", "Neuroptera", "Trichoptera", "Gastropoda", "Maxillopoda", "Ostracoda", "Copepoda", "Ephemeroptera", "Cnidaria")) %>% + dplyr::filter(!is.na(Taxa_groep)) + +unique(data_macrobenthos_OPPWLTAX$Taxa_groep) + + +data_macrobenthos_OPPWLTAX %>% + ggplot(aes(x = as.factor(jaar), y = biomass_TAX, fill=Taxa_groep))+ + geom_bar(aes(fill=Taxa_groep), stat="identity")+ + labs(x="", y = "systeembiomassa (ton droge stof)") + +ggsave(filename = paste0(pad_figuren, "PopTaxgroep_Salgradient", ".jpg"), height=5, width=8) + + + +``` + +# voorbereiding OID dataset +```{r 070-VOOR OID jaren, OID verwerking} + +OID <- data_macrobenthos %>% + dplyr::filter(Staaltype == "OID") %>% + dplyr::group_by(locatie, soort) %>% + dplyr::mutate(aantal = n()) %>% + dplyr::ungroup() + +OIDsp <- OID %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(soortenrijkdom = n()) + + +rijkdomdata.waterlich1234inter <- OIDsp %>% + dplyr::filter(waterloop2 == c("Zeeschelde I", "Zeeschelde II", "Zeeschelde III", "Zeeschelde IV")) %>% dplyr::filter(tidaal == "inter") %>% + dplyr::mutate(jaar = factor(jaar)) + +rijkdomdata.waterlich1234sub <- OIDsp %>% + dplyr::filter(waterloop2 == c("Zeeschelde I", "Zeeschelde II", "Zeeschelde III", "Zeeschelde IV")) %>% dplyr::filter(tidaal == "sub")%>% + dplyr::mutate(jaar = factor(jaar)) + +rijkdomdata.zijrivierinter <- OIDsp %>% + dplyr::filter(waterloop2 == c("Nete", "Rupel", + "Durme", "Zenne", "Dijle")) %>% + dplyr::filter(tidaal == "inter")%>% + dplyr::mutate(jaar = factor(jaar)) + +rijkdomdata.zijriviersub <- OIDsp %>% + dplyr::filter(waterloop2 == c("Nete", "Rupel", + "Durme", "Zenne", "Dijle")) %>% + dplyr::filter(tidaal == "sub")%>% + dplyr::mutate(jaar = factor(jaar)) + + +#Figuur inter waterlichaam +Figwaterlichaaminter <- ggplot(rijkdomdata.waterlich1234inter, aes(x = waterloop2, y = soortenrijkdom), group = jaar)+ + geom_boxplot(aes(fill = jaar))+ + theme_bw() +Figwaterlichaaminter +#Figuur sub waterlichaam +Figwaterlichaamsub <- ggplot(rijkdomdata.waterlich1234sub, aes(x = waterloop2, y = soortenrijkdom), group = jaar)+ + geom_boxplot(aes(fill = jaar))+ + theme_bw() +Figwaterlichaamsub + +#Figuur inter zijrivier +Figzijrivierinter <- ggplot(rijkdomdata.zijrivierinter, aes(x = waterloop2, y = soortenrijkdom), group = jaar)+ + geom_boxplot(aes(fill = jaar))+ + theme_bw() +Figzijrivierinter +#Figuur sub zijrivier +Figzijriviersub <- ggplot(rijkdomdata.zijriviersub, aes(x = waterloop2, y = soortenrijkdom), group = jaar)+ + geom_boxplot(aes(fill = jaar))+ + theme_bw() +Figzijriviersub + + + +``` + +#Species accumulation OID: vgl tussen de 5 jaren per ZS segment +```{r 070-Species accumulation OID: vgl tussen de 5 jaren per ZS segment} +#for loop om df te maken bruikbaar voor vegan +var_list = unique(OIDsp$jaar) +df_list = list() +col <- c("black", "darkred", "forestgreen", "orange", "blue") #"darkgreen", + +# eerst teur echte tellingen gebruiken, ervan uitgaande dat altijd max. 50 wormen gedteermineerd zijn +OIDspN <- OIDsp %>% + dplyr::mutate(N = round(densiteit/628, 0)) %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(NsampleOLI = sum(N)) %>% + dplyr::mutate(Ncorr = ifelse(NsampleOLI>50, round(N/NsampleOLI*50,0),N)) + + +for(i in 1:length(var_list)) + { + df_list[[i]] <- filter(OIDspN, systeem == "Zeeschelde" & jaar == var_list[i]) %>% + dplyr::group_by(waterloop2, soort) %>% + dplyr::summarise(tot = sum(na.omit(Ncorr))) %>% + dplyr::ungroup() %>% + pivot_wider(names_from = soort, values_from = tot) %>% + replace(is.na(.), 0) %>% + remove_rownames %>% + column_to_rownames(var="waterloop2") +} + +# voor elk van de gegenereerde df een rarecurve object maken + +plot_list <- list() +for(i in 1:length(var_list)) { +plot_list[[i]] <- rarecurve(df_list[[i]], + step=3, + sample=rowSums(df_list[[i]]), + col = col) +} + +#plotten van de rarecurve objects in ggplot +# eerst functie +as_tibble_rc <- function(x){ + nsamples <- map_int(x, length) + total_samples <- sum(nsamples) + if(!is.null(names(x))){ + sites <- names(x) + } else { + sites <- as.character(1:length(nsamples)) + } + result <- data_frame(Site = rep("", total_samples), + Sample_size = rep(0, total_samples), + Species = rep(0, total_samples)) + start <- 1 + for (i in 1:length(nsamples)){ + result[start:(start + nsamples[i]-1), "Site"] <- sites[i] + result[start:(start + nsamples[i]-1), "Sample_size"] <- attr(x[[i]], + "Subsample") + result[start:(start + nsamples[i]-1), "Species"] <- x[[i]] + start <- start + nsamples[i] + } + result + } + +plot_listt <- list() + +plotList <- lapply( + 1:length(var_list), + function(i) { + plot_listt[[i]] <- as_tibble_rc(plot_list[[i]]) + r <- ggplot(data = plot_listt[[i]], aes(x = Sample_size, y = Species, color = Site)) + + ggtitle(paste0(var_list[i]))+ + geom_line(size=1) + + ylab("")+ + scale_color_discrete(labels=c('ZS I', 'ZS II', 'ZS III', 'ZS IV')) + + ggsave(filename = paste0(pad_figuren, "ZS1234_rarefy", var_list[i], ".jpg")) + r + } +) + +# figuur maken met de 5 plots samen; best op 3 rijen om de figuur +allplots1 <- ggarrange(plotlist=plotList, + ncol = 2, nrow = 3) +allplots1 +ggsave(filename = paste0(pad_figuren, "ZS1234_rarefy1", ".jpg"), height=6, width=8) + + +``` +#Species accumulation OID: vgl tussen de 5 jaren per zijrivier +```{r 070-Species accumulation OID: vgl tussen de 5 jaren per zijrivier} +#for loop om df te maken bruikbaar voor vegan +var_list = unique(OIDsp$jaar) + +df_list = list() +col <- c("black", "darkred", "forestgreen", "orange", "blue") #"darkgreen", + +# eerst df met echte tellingen berekenen, ervan uitgaande dat altijd max. 50 wormen gedetermineerd zijn +OIDspN <- OIDsp %>% + dplyr::mutate(N = round(densiteit/628, 0)) %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(NsampleOLI = sum(N)) %>% + dplyr::mutate(Ncorr = ifelse(NsampleOLI>50, round(N/NsampleOLI*50,0),N)) + + +for(i in 1:length(var_list)) + { + df_list[[i]] <- filter(OIDspN, systeem == "zijrivieren" & jaar == var_list[i]) %>% + dplyr::group_by(waterloop2, soort) %>% + dplyr::summarise(tot = sum(na.omit(Ncorr))) %>% + dplyr::ungroup() %>% + pivot_wider(names_from = soort, values_from = tot) %>% + replace(is.na(.), 0) %>% + remove_rownames %>% + column_to_rownames(var="waterloop2") +} + +rownames(df_list[[5]]) + + +# voor elk van de gegenereerde df een rarecurve object maken +plot_list <- list() +for(i in 1:length(var_list)) { +plot_list[[i]] <- rarecurve(df_list[[i]], + step=3, + sample=rowSums(df_list[[i]]), + col = col) +} + +#plotten van de rarecurve objects in ggplot +# eerst functie +as_tibble_rc <- function(x){ + nsamples <- map_int(x, length) + total_samples <- sum(nsamples) + if(!is.null(names(x))){ + sites <- names(x) + } else { + sites <- as.character(1:length(nsamples)) + } + result <- data_frame(Site = rep("", total_samples), + Sample_size = rep(0, total_samples), + Species = rep(0, total_samples)) + start <- 1 + for (i in 1:length(nsamples)){ + result[start:(start + nsamples[i]-1), "Site"] <- sites[i] + result[start:(start + nsamples[i]-1), "Sample_size"] <- attr(x[[i]], + "Subsample") + result[start:(start + nsamples[i]-1), "Species"] <- x[[i]] + start <- start + nsamples[i] + } + result + } + +plot_listt <- list() + +plotList <- lapply( + 1:length(var_list), + function(i) { + plot_listt[[i]] <- as_tibble_rc(plot_list[[i]]) + r <- ggplot(data = plot_listt[[i]], aes(x = Sample_size, y = Species, color = Site)) + + ggtitle(paste0(var_list[i]))+ + geom_line(size=1) + + ylab("")+ + scale_color_discrete(labels=c('Dijle', 'Durme', 'Nete', 'Rupel', 'Zenne')) + + ggsave(filename = paste0(pad_figuren, "Zijrivier_rarefy", var_list[i], ".jpg")) + r + } +) + +# figuur maken met de 5 plots samen; best op 3 rijen om de figuur +allplots <- ggarrange(plotlist=plotList, + ncol = 2, nrow = 3) +allplots +ggsave(filename = paste0(pad_figuren, "Zijrivier_rarefy", ".jpg"), height=6, width=8) + +``` + +# Species accumulation OID: vgl tussen de 5 jaren hele ZS +```{r 070-Species accumulation OID: vgl tussen de 5 jaren hele ZS} +#for loop om df te maken bruikbaar voor vegan +var_list1 <- OIDsp %>% + dplyr::ungroup() %>% + dplyr::filter(systeem == "Zeeschelde") %>% + dplyr::select(waterloop2) %>% + dplyr::distinct() %>% + dplyr::arrange(waterloop2) + +var_list = unique(var_list1$waterloop2) +var_list +df_list = list() +col <- c("black", "darkred", "forestgreen", "orange", "blue") #"darkgreen", + +# eerst df met echte tellingen berekenen, ervan uitgaande dat altijd max. 50 wormen gedetermineerd zijn +OIDspN <- OIDsp %>% + dplyr::mutate(N = round(densiteit/628, 0)) %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(NsampleOLI = sum(N)) %>% + dplyr::mutate(Ncorr = ifelse(NsampleOLI>50, round(N/NsampleOLI*50,0),N)) + + +for(i in 1:length(var_list)) + { + df_list[[i]] <- filter(OIDspN, systeem == "Zeeschelde" & waterloop2 == var_list[i]) %>% + dplyr::group_by(jaar, soort) %>% + dplyr::summarise(tot = sum(na.omit(Ncorr))) %>% + dplyr::ungroup() %>% + pivot_wider(names_from = soort, values_from = tot) %>% + replace(is.na(.), 0) %>% + remove_rownames %>% + column_to_rownames(var="jaar") +} + +df_list[[2]] +# voor elk van de gegenereerde df een rarecurve object maken + +for(i in 1:length(var_list)) { +plot_list[[i]] <- rarecurve(df_list[[i]], + step=3, + sample=rowSums(df_list[[i]]), + col = col) +} + +#plotten van de rarecurve objects in ggplot +# eerst functie +as_tibble_rc <- function(x){ + nsamples <- map_int(x, length) + total_samples <- sum(nsamples) + if(!is.null(names(x))){ + sites <- names(x) + } else { + sites <- as.character(1:length(nsamples)) + } + result <- data_frame(Site = rep("", total_samples), + Sample_size = rep(0, total_samples), + Species = rep(0, total_samples)) + start <- 1 + for (i in 1:length(nsamples)){ + result[start:(start + nsamples[i]-1), "Site"] <- sites[i] + result[start:(start + nsamples[i]-1), "Sample_size"] <- attr(x[[i]], + "Subsample") + result[start:(start + nsamples[i]-1), "Species"] <- x[[i]] + start <- start + nsamples[i] + } + result + } + +plot_listt <- list() + +plotList <- lapply( + 1:length(var_list), + function(i) { + plot_listt[[i]] <- as_tibble_rc(plot_list[[i]]) + r <- ggplot(data = plot_listt[[i]], aes(x = Sample_size, y = Species, color = Site)) + + ggtitle(paste0(var_list[i]))+ + geom_line(size=1) + + ylab("")+ + xlab("N Oligochaeta")+ + scale_color_discrete(labels=c('2008', '2011', '2014', '2017', '2020'))+ + guides(fill=guide_legend(title="Jaar")) + + ggsave(filename = paste0(pad_figuren, "JaarperZS_rarefy", var_list[i], ".jpg")) + r + } +) + +# figuur maken met de 5 plots samen; best op 3 rijen om de figuur +allplots <- ggarrange(plotlist=plotList, + ncol = 2, nrow = 2) +allplots +ggsave(filename = paste0(pad_figuren, "JaarperZS", ".jpg"), height=6, width=8) + + +# freq tabellen soorten doorheen de tijd +OIDspN %>% + dplyr::filter(waterloop2 == "Zeeschelde IV") %>% + dplyr::group_by(waterloop2, soort, jaar) %>% + dplyr::summarise(Freq=n()) %>% + pivot_wider(names_from = jaar, values_from = Freq) %>% + write_xlsx(paste0(pad_tabellen,"ZSIV_olispecies.xlsx")) + +``` + + + + +```{r} +#unused fragments possibly recycling later + + opps <- aggregate(SomVanShape_Area ~ jaar + waterloop + tidaal + fysiotoop + Omessegmen, + data = oppsruw, FUN = sum) + # veinzen dat ook in 2012 en 2014 OMES 14 beschikbaar is + # door gegevens van 2013 in te vullen + twaalf <- opps[opps$jaar==2013 & opps$Omessegmen=="14",] + twaalf$jaar <- 2012 + veertien <- opps[opps$jaar==2013 & opps$Omessegmen=="14",] + veertien$jaar <- 2014 + opps <- rbind(opps,twaalf,veertien) + + + + # listopp <- opps_intertidaalfys[c("jaar","waterloop","fysiotoop")] + # listopp <- unique(listopp) + # unique(listopp$fysiotoop) + # unique(data_macrobenthos_intertidaalfys$fysiotoop) + + # opps_intertidaal_waterloop <- opps_intertidaalfys %>% + # filter(grepl("Zeeschelde", waterloop)) %>% + # group_by(waterloop, jaar) %>% + # summarise (Totslik = sum(opp)) %>% + # ungroup() + # + # ggplot(opps_intertidaal_waterloop,aes(x = jaar, y = Totslik, color = waterloop)) + + # geom_point(aes(shape = waterloop))+ + # geom_line() + ##oppervlakte data 2015 : er zit een fout in deze vr ZSIV en ZSIII - lijken niet betrouwbaar in deze dataset +``` + + +```{r 070-meta-data} + +meta_data <- + enframe(c(laatstejaar = laatste_jaar, + vroegstejaar = vroegste_jaar, + aantal_stalen = n_staal), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +``` + + diff --git a/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_data.Rmd b/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_data.Rmd new file mode 100644 index 0000000..74cdec0 --- /dev/null +++ b/moneos_2024/070_macrozoobenthos/070_macrozoobenthos_data.Rmd @@ -0,0 +1,508 @@ +--- +params: + hoofdstuk: "070_macrozoobenthos" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Macrozoöbenthos data" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) +library(rprojroot) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +#source("../pad.R") +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +pad_data +``` + +```{r data voorbereiden} + +#benthosdata inlezen, groeperen per staal. Opletten dat "geen" niet weerhouden wordt wanneer er ook andere soorten ih staal zitten (geen wordt op fractieniveau toegekend). Omzetten naar aantal/biom per m² +benthos22 <- + read_excel(paste0(pad_data, "Benthos2022.xlsx"), sheet = "Sheet1") %>% + dplyr::filter(CampagneCode == "Spatial2022") %>% + dplyr::group_by(LocatieCode, soort) %>% + dplyr::summarise(N = sum(aantal), + Biom = sum(AFDW)) %>% + dplyr::mutate(Nrec = length(soort)) %>% + dplyr::ungroup() %>% + dplyr::filter(!(soort == "geen" & Nrec >1)) %>% + dplyr::select(!Nrec) + + +loc22 <- + read_excel(paste0(pad_data, "Locaties2022.xlsx"), sheet = "Sheet1") %>% + dplyr::filter(CampagneCode == "Spatial2022") %>% + dplyr::select(LocatieCode, Benthosstaal, Protocol_conform) + + +#exacte XY Lambert72 via meting, door Dimi zijn WGS al omgezet naar Lambert72 +gps22 <- + read_excel(paste0(pad_data, "GPS2022.xlsx"), sheet = "Sheet1") %>% + dplyr::filter(CampagneCode == "Spatial2022") %>% + dplyr::select(LocatieCode, X_Lambert72, Y_Lambert72, Z) + +#Joost berekende met script via Waterinfo de effectieve subdieptes, maar niet voor zijrivieren! +Zberekend22 <- + read_excel(paste0(pad_data, "sample_allocnr_elevation.xlsx"), sheet = "Sheet1") %>% + dplyr::filter(campagne_code == "Spatial22") %>% + dplyr::select(LocatieCode=locatie_code, Zsub=Diepte) + +ontbrekendeZzijriv <- read_excel(paste0(pad_data, "RP_SP22_ecotoopgrenzen.xlsx"), sheet = "RP_spatial21_tijdata_Zwaarde") %>% + dplyr::select(LocatieCode = Staal, fysiotoop = BenthosEcotoop, Zvooraf = 'Z-waarde', POINT_X, POINT_Y) %>% + dplyr::mutate(LocatieCode = ifelse(nchar(LocatieCode) == 6, str_replace(LocatieCode, "_", "_0"), LocatieCode)) + +taxa <- read_excel(paste0(pad_data, "Soortenlijst_macrozoobenthos_2008_2022.xlsx"), sheet = "Blad1") + +B22 <- loc22 %>% + left_join(benthos22, by = "LocatieCode") %>% + left_join(gps22, by = "LocatieCode") %>% + left_join(Zberekend22, by = "LocatieCode") %>% + dplyr::mutate(Z = ifelse(is.na(Z) & !is.na(Zsub), Zsub, Z)) %>% + left_join(ontbrekendeZzijriv, by = "LocatieCode") %>% + dplyr::mutate(Z = ifelse(is.na(Z) & !is.na(Zvooraf), Zvooraf, Z)) %>% + dplyr::mutate(X_Lambert72 = ifelse(is.na(X_Lambert72), POINT_X, X_Lambert72)) %>% + dplyr::mutate(Y_Lambert72 = ifelse(is.na(Y_Lambert72), POINT_Y, Y_Lambert72)) %>% + dplyr::select(LocatieCode, X_Lambert72, Y_Lambert72, Z, fysiotoop, soort, N, Biom, Protocol_conform) %>% + dplyr::mutate(Nm2 = ifelse(Protocol_conform == "YES", N*1/((0.045/2)^2*pi), ifelse(Protocol_conform == "NO_43mm", N*1/((0.043/2)^2*pi), NA))) %>% + dplyr::mutate(Biomm2 = ifelse(Protocol_conform == "YES", Biom*1/((0.045/2)^2*pi), ifelse(Protocol_conform == "NO_43mm", Biom*1/((0.043/2)^2*pi), NA))) %>% + dplyr::filter(Protocol_conform != "NO_LV") %>% + dplyr::select(LocatieCode, X_Lambert72, Y_Lambert72, Z, fysiotoop, soort, densiteit= Nm2, biomassa = Biomm2) %>% + left_join(taxa, by = "soort") %>% + dplyr::mutate(waterloop = + ifelse(str_detect(LocatieCode, "DD"), "Zeeschelde II", + ifelse(str_detect(LocatieCode, "DG"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "DI"), "Dijle", + ifelse(str_detect(LocatieCode, "DU"), "Durme", + ifelse(str_detect(LocatieCode, "GK"), "Zeeschelde IV", + ifelse(str_detect(LocatieCode, "KD"), "Zeeschelde III", + ifelse(str_detect(LocatieCode, "NE"), "Nete", + ifelse(str_detect(LocatieCode, "RU"), "Rupel", + ifelse(str_detect(LocatieCode, "ZE"), "Zenne", + ifelse(str_detect(LocatieCode, "TZ"), "Zeeschelde I tijarm Zwijnaarde +", + ifelse(str_detect(LocatieCode, "GM"), "Zeeschelde I trj_Ml_Gb +", "")))))))))))) %>% + dplyr::mutate(waterlichaam = + ifelse(str_detect(LocatieCode, "DD"), "Zeeschelde II", + ifelse(str_detect(LocatieCode, "DG"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "DI"), "Getijdedijle en -zenne", + ifelse(str_detect(LocatieCode, "DU"), "Getijdedurme", + ifelse(str_detect(LocatieCode, "GK"), "Zeeschelde IV", + ifelse(str_detect(LocatieCode, "KD"), "Zeeschelde III + Rupel", + ifelse(str_detect(LocatieCode, "NE"), "GetijdeNete", + ifelse(str_detect(LocatieCode, "RU"), "Zeeschelde III + Rupel", + ifelse(str_detect(LocatieCode, "ZE"), "Getijdedijle en -zenne", + ifelse(str_detect(LocatieCode, "TZ"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "GM"), "Zeeschelde I", "")))))))))))) %>% + dplyr::mutate(waterloop2 = + ifelse(str_detect(LocatieCode, "DD"), "Zeeschelde II", + ifelse(str_detect(LocatieCode, "DG"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "DI"), "Dijle", + ifelse(str_detect(LocatieCode, "DU"), "Durme", + ifelse(str_detect(LocatieCode, "GK"), "Zeeschelde IV", + ifelse(str_detect(LocatieCode, "KD"), "Zeeschelde III", + ifelse(str_detect(LocatieCode, "NE"), "Nete", + ifelse(str_detect(LocatieCode, "RU"), "Rupel", + ifelse(str_detect(LocatieCode, "ZE"), "Zenne", + ifelse(str_detect(LocatieCode, "TZ"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "GM"), "Zeeschelde I", "")))))))))))) %>% + dplyr::mutate(KRWzone = + ifelse(str_detect(LocatieCode, "DD"), "Zeeschelde II", + ifelse(str_detect(LocatieCode, "DG"), "Zeeschelde I", + ifelse(str_detect(LocatieCode, "DI"), "Dijle", + ifelse(str_detect(LocatieCode, "DU"), "Durme", + ifelse(str_detect(LocatieCode, "GK"), "Zeeschelde IV", + ifelse(str_detect(LocatieCode, "KD"), "Zeeschelde III + Rupel", + ifelse(str_detect(LocatieCode, "NE"), "Nete", + ifelse(str_detect(LocatieCode, "RU"), "Zeeschelde III + Rupel", + ifelse(str_detect(LocatieCode, "ZE"), "Zenne", + ifelse(str_detect(LocatieCode, "TZ"), "tijarmTZ", + ifelse(str_detect(LocatieCode, "GM"), "tijarmGM", "")))))))))))) %>% + dplyr::mutate(systeem = ifelse(str_detect(LocatieCode, "DI|ZE|NE|DU|RU"), "zijrivieren", "Zeeschelde")) %>% + dplyr::mutate(tidaal = ifelse(str_detect(fysiotoop, "sub"), "subtidaal", "intertidaal"), jaar = 2022) + + +sheetmacrobenthos2022 <- B22 %>% + dplyr::select(jaar, waterlichaam, waterloop, waterloop2, systeem, tidaal, fysiotoop, locatie = LocatieCode, soort, densiteit, biomassa, Taxa_groep) + +write_xlsx(sheetmacrobenthos2022, + path = paste0(pad_data, "sheetmacrobenthos2022.xlsx")) + + +sheetlocaties2022 <- B22 %>% + dplyr::select(LocatieCode, X_Lambert72, Y_Lambert72) %>% + dplyr::distinct() %>% + dplyr::mutate(campagne = "spatial 2022") %>% + dplyr::select(locatie = LocatieCode,campagne, X = X_Lambert72, Y = Y_Lambert72) + +write_xlsx(sheetlocaties2022, + path = paste0(pad_data, "sheetlocaties2022.xlsx")) +``` + + +```{r jaar} + +jaar_recent <- + B22 %>% + distinct(jaar) %>% + pull(jaar) + +``` + + +```{r controleren-fysiotoop} + +B22 %>% + distinct(tidaal, fysiotoop) %>% + arrange(tidaal, fysiotoop) + +``` + + +##### aantal stalen: + +```{r aantal-stalen} + +aantal_stalen <- + B22 %>% + distinct(LocatieCode) %>% + nrow() + +aantal_stalen_waterlichaam_fysiotoop <- + B22 %>% + distinct(LocatieCode, tidaal, fysiotoop, waterlichaam) %>% + count(waterlichaam, tidaal, fysiotoop) %>% + knitr::kable() + + +``` + + - Er zijn `r aantal_stalen` stalen in de dataset voor `r jaar_recent` + - het aantal stalen per waterlichaam en fysiotoop: + + `r aantal_stalen_waterlichaam_fysiotoop` + + +##### lege stalen: + +```{r lege-stalen} + +lege_stalen_waterlichaam_fysiotoop <- + B22 %>% + dplyr::filter(soort == "geen") %>% + count(waterlichaam, tidaal, fysiotoop) %>% + knitr::kable() + + +lege_stalen <- + B22 %>% + dplyr::filter(soort == "geen") %>% + dplyr::select(LocatieCode, soort) + +``` + + - er zijn `r nrow(lege_stalen)` lege stalen in de dataset + + `r knitr::kable(lege_stalen)` + + +##### aantal soorten: + +```{r soorten-recent} +soortendata <- B22 %>% + dplyr::filter(soort != "geen") + +soorten <- + soortendata %>% + dplyr::filter(soort != "geen") %>% + distinct(soort) + +soorten_per_waterlichaam <- + soortendata %>% + distinct(waterlichaam, soort) %>% + count(waterlichaam) + +``` + + + - Er zijn `r nrow(soorten)` soorten(groepen) aangetroffen in de dataset + + `r pull(soorten, soort)` + + - Het aantal soorten per waterlichaam is: + + `r knitr::kable(soorten_per_waterlichaam)` + + +##### biomassa versus densiteit + +```{r biomassa-vs-densiteit, fig.height=4, fig.width=6} + +B22 %>% + dplyr::filter(!is.na(biomassa), !is.na(densiteit)) %>% + #dplyr::filter(Taxa_groep != "Bivalvia") %>% + ggplot(aes(biomassa + min(biomassa[biomassa > 0]), densiteit + min(densiteit[densiteit > 0]))) + + geom_point() + + scale_x_log10() + + scale_y_log10() + +``` + + +##### data worden samengevoegd met historische gegevens + +```{r inlezen-historische-data} + +##Probleem: geen complete oude dataset met alle OID erin! (foutje in 2023) +data_macrobenthos_2020gnOID <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021NIETAANTELEVEREN.xlsx"), + sheet = "macrobenthos") %>% + dplyr::filter(jaar == 2020) %>% + dplyr::distinct(locatie, jaar, waterlichaam, waterloop, waterloop2, systeem, tidaal, fysiotoop) + +#data met OID voor 2020 +data_macrobenthos_2020OID <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021_OID.xlsx"), + sheet = "macrobenthos") %>% +dplyr::filter(jaar == 2020) %>% + dplyr::select(!Staaltype) %>% + left_join(data_macrobenthos_2020gnOID) %>% + dplyr::select(jaar, waterlichaam, waterloop, waterloop2, systeem, tidaal, fysiotoop, locatie, soort, densiteit, biomassa, Taxa_groep) + +#data met metadata, maar geen OID voor 2020. Daarom 2020 weg en vervangen door OID +data_macrobenthos_historisch.1 <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021NIETAANTELEVEREN.xlsx"), + sheet = "macrobenthos") %>% + dplyr::filter(jaar != 2020) %>% + dplyr::select(!locatie_oud) %>% + rbind(data_macrobenthos_2020OID) +# soortnamen zijn een boeltje. Opkuisenen orig file vervangen + +soortlijsthist <- data_macrobenthos_historisch.2 %>% + dplyr::select(soort) %>% + dplyr::distinct() %>% + dplyr::filter(soort !="stuk") %>% + arrange(desc(soort)) + +controlelijst <- read_excel(paste0(pad_data, "Soortenlijst_macrozoobenthos_2008_2022.xlsx"), + sheet = "Blad1") %>% + dplyr::mutate(Naam_correct = "YES") + +checksoort <- soortlijsthist %>% + left_join(controlelijst, by = "soort") + +data_macrobenthos_historisch.2 <- data_macrobenthos_historisch.1 %>% + dplyr::filter(soort !="stuk") %>% + dplyr::mutate(soort = recode(soort, "Oligochaeta sp" = "Oligochaeta", + "quistadrilus multisetosus" = "Quistadrilus multisetosus", + "paranais litoralis" = "Paranais litoralis", + "heteromastus filiformis" = "Heteromastus filiformis", + "Muscidae sp" = "Muscidae", + "Microturbellaria sp" = "Microturbellaria", + "Lymnaeidae sp" = "Lymnaeidae", + "Limnodrilus spec" = "Limnodrilus sp", + "Limnodrilus claparedeianus" = "Limnodrilus claparedianus", + "Limecola balthica" = "Macoma balthica", + "Hypereteone sp." = "Hypereteone sp", + "Geen" = "geen", + "Ephemeroptera sp" = "Ephemeroptera", + "Chloropidae sp" = "Chloropidae", + "Coleoptera sp" = "Coleoptera")) %>% + dplyr::mutate(densiteit = ifelse(soort == "geen", NA, round(densiteit,0))) %>% + dplyr::mutate(biomassa = ifelse(soort == "geen", NA, biomassa)) %>% + dplyr::mutate(densiteit = ifelse(soort !="geen" & densiteit == 0, round(629/2, 0), densiteit)) %>% + dplyr::mutate(biomassa = ifelse(soort !="geen" & biomassa == 0, 0.0629/2, biomassa)) + + +#indien soort densiteit != 0 maar wel biomassa == 0, dan wellicht onder detectielimiet. Daarom wordt dan helft van detectielimiet toegekend, tenzij densiteit echt groot (dan ontbrekende data wellicht). ALs densiteit == 0, dan ook helft toekennen. Als soort == "geen", dan is biomassa en densiteit NA +geenbiom <- data_macrobenthos_historisch.2 %>% + dplyr::filter(biomassa < 0.1) + +soortrat <- data_macrobenthos_historisch.2 %>% + dplyr::filter(biomassa != 0) %>% + dplyr::group_by(soort) %>% + dplyr::reframe(rat = mean(na.omit(densiteit/biomassa))) %>% + dplyr::ungroup() + + + +#########ungroup()##########################biomassa############################# +#locaties sheet +data_macrobenthos_historisch_locaties <- + read_excel(paste0(pad_data, "macrobenthos_data_2008_2021NIETAANTELEVEREN.xlsx"), + sheet = "locaties") + + +``` + + +##### biomassa versus densiteit historische gegevens + +```{r biomassa-vs-densiteit_historisch, fig.height=4, fig.width=6} + +data_macrobenthos_historisch.2 %>% + ggplot(aes(densiteit, biomassa)) + + geom_point() + +data_macrobenthos_historisch.2 %>% + ggplot(aes(densiteit + 1, biomassa + min(biomassa[biomassa > 0], na.rm = TRUE))) + + geom_point() + + scale_x_log10() + + scale_y_log10() + +zero_densiteit_nonzero_biomassa <- + data_macrobenthos_historisch %>% + filter(densiteit == 0, + biomassa != 0) %>% + select(locatie, waterlichaam, fysiotoop, soort, densiteit, biomassa) + +zero_biomassa_nonzero_densiteit <- + data_macrobenthos_historisch.2 %>% + filter(densiteit != 0, + biomassa == 0) %>% + select(locatie, waterlichaam, fysiotoop, soort, densiteit, biomassa) + +negatieve_biomassa <- + data_macrobenthos_historisch.2 %>% + filter(biomassa < 0) %>% + select(locatie, waterlichaam, fysiotoop, soort, densiteit, biomassa) + +extreme_biomassa <- + data_macrobenthos_historisch.2 %>% + filter(biomassa > 200) %>% + select(locatie, waterlichaam, fysiotoop, soort, densiteit, biomassa) + +``` + + - Er zijn `r nrow(zero_densiteit_nonzero_biomassa)` cases van soorten met aantal = 0 en biomassa > 0: + + - Er zijn `r nrow(zero_biomassa_nonzero_densiteit)` cases van soorten met aantal > 0 en biomassa = 0: + +
+ + - Er zijn `r nrow(negatieve_biomassa)` cases van soorten met biomassa < 0 + + + negatieve biomassa wordt op NA gezet + + `r knitr::kable(negatieve_biomassa)` + +
+ + - Er is één outlier met extreem hoge biomassa + + `r knitr::kable(extreme_biomassa)` + + + + +```{r samenvoegen recent-historisch} + + +data_macrobenthos2008_2022.0 <- + data_macrobenthos_historisch.2 %>% + bind_rows(sheetmacrobenthos2022) %>% + dplyr::mutate(tidaal = recode(tidaal, "inter" = "intertidaal", "sub"= "subtidaal", "subtidaal" = "subtidaal", "Intertidaal" = "intertidaal")) %>% + dplyr::mutate(densiteit = round(densiteit,0)) %>% + dplyr::distinct() + +# in sommige jaren is er "geen" behouden ook al zijn er andere soorten in het staal gevonden (vaak doordat geen op fractieniveau is toegekend en nadien bij een summarize behouden is) -> wegfilteren +FALSEgeen <- data_macrobenthos2008_2022.0 %>% + dplyr::distinct() %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(Nspecs = length(soort)) %>% + dplyr::ungroup() %>% + dplyr::mutate(teveel = ifelse(soort == "geen" & Nspecs > 1, "Y", "N")) %>% + dplyr::select(locatie, teveel) %>% + dplyr::distinct() %>% + dplyr::group_by(locatie) %>% + dplyr::mutate(dubbels = length(locatie)) %>% + dplyr::filter(!(dubbels == 2 & teveel == "N")) + + +data_macrobenthos2008_2022 <- data_macrobenthos2008_2022.0 %>% + left_join(FALSEgeen, by = "locatie") %>% + dplyr::filter(!(soort == "geen" & teveel == "Y")) %>% + dplyr::mutate(waterloop = recode(waterloop, "Zeeschelde I trj_Ml_Gb\n" = "Zeeschelde I trj_Ml_Gb", "Zeeschelde I tijarm Zwijnaarde\n" = "Zeeschelde I tijarm Zwijnaarde" )) %>% + dplyr::select(!c("teveel", "dubbels")) + + +data_macrobenthos_locaties <- + data_macrobenthos_historisch_locaties %>% + bind_rows(sheetlocaties2022) + + +``` + + + +##### jaren in de finale dataset: + +```{r jaren} + +jaren <- + data_macrobenthos2008_2022 %>% + distinct(jaar) %>% + pull(jaar) + +jaar_range <- + range(jaren) + +``` + + + - `r jaren` + + +##### finale data weggeschreven naar: + +```{r filenames} + +file_name <- + paste0(paste0(pad_data, "/Nieuwe_datafile/"), "macrobenthos_data_", paste(jaar_range, collapse = "_"), "NIETAANTELEVEREN", ".xlsx") + +``` + + - `r file_name` + + +```{r wegschrijven-data, eval=FALSE} + +write_xlsx(list(macrobenthos = data_macrobenthos2008_2022, + locaties = data_macrobenthos_locaties), + path = file_name) + +``` + + + diff --git a/moneos_2024/080_hyperbenthos/080_hyperbenthos_analyse.Rmd b/moneos_2024/080_hyperbenthos/080_hyperbenthos_analyse.Rmd new file mode 100644 index 0000000..15ca95f --- /dev/null +++ b/moneos_2024/080_hyperbenthos/080_hyperbenthos_analyse.Rmd @@ -0,0 +1,717 @@ +--- +params: + hoofdstuk: "080_hyperbenthos" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Hyperbenthos data" +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r 080-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r 080-libraries} + +library(tidyverse) +library(readxl) +library(writexl) +library(ggpubr) +library(INBOtheme) +library(rprojroot) +library(lubridate) +library(ggforce) +library(grid) +library(forcats) +library(gghighlight) + +``` + + +```{r 080-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +source("G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dZDBwVVJOVk5Ld2s/PRJ_SCHELDE/VNSC/Rapportage_INBO/2022/Function_CalculateShannonIndex.R") +``` + + +```{r 080-data} + +data_hyperbenthos <- + read_excel(paste0(pad_data, "hyperbenthos_data_2013_2023.xlsx")) %>% + dplyr::filter(soort != "Potamocorbula amurensis") + + + +data_hpb.gnexoot <- data_hyperbenthos %>% + dplyr::filter(exoot == 0) + +vroegste_jaar <- + data_hyperbenthos %>% + pull(Jaar) %>% + min() + +laatste_jaar <- + data_hyperbenthos %>% + pull(Jaar) %>% + max() + +gebied_order <- + c("Paardenschor","St-Anna","Rupel", "Ballooi","Dendermonde","Brede Schoren") + + + +``` + + +```{r 080-totaal-over-soorten} +# som alle soorten, geen exoten +data_hyperbenthos_totaal <- + data_hpb.gnexoot %>% + dplyr::group_by(Jaar, Maand, gebied) %>% + dplyr::summarise_at(vars(n, AFDW), ~sum(.,na.rm=TRUE)) %>% + dplyr::mutate(zone = if_else(gebied == "Brede Schoren" | gebied == "Dendermonde", "Zoet", if_else(gebied == "Ballooi" | gebied == "Rupel", "Oligohalien", "Sterke Saliniteitsgradiënt"))) %>% + ungroup() + +#som per soort, per jaar, ook exoten, en in percent. stomme INBOtheme kan maar 9 kleuren, dus selecteren van 8 grootste +#eerst jaarsom om % te knn berekenen in volgende stap +hpb.totsom <- data_hyperbenthos %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(totbiom = sum(na.omit(AFDW)), + totdens = sum(na.omit(n))) + +data.h.b <- data_hyperbenthos %>% + left_join(hpb.totsom, by = "Jaar") %>% + dplyr::group_by(soort, Jaar) %>% + dplyr::summarise(biom_perc = sum(AFDW)/totbiom) %>% + ungroup() %>% + distinct() %>% + arrange(desc(biom_perc)) %>% + dplyr::group_by(Jaar) %>% + slice(1:8) %>% + ungroup() +#om negende fractie te krijgen +tussenstap.1 <- data.h.b %>% + group_by(Jaar) %>% + summarise(biom_perct = 1- sum(biom_perc)) %>% + ungroup() %>% + mutate(soort = "rest") +#de hoogste 8 samenvoegen met de rest +data.hpb.biomsoort<- tussenstap.1 %>% + dplyr::select(soort, Jaar, biom_perct) %>% + rename(biom_perc = biom_perct) %>% + rbind(data.h.b) + + +## probleem blijft want je hebt over meerdere jaren 21 soorten, dus soorten krijgen versch kleuren in versch jaren. Daarom selectie van 9 meest abundante taxa maken, en die dan voor elk jaar plotten. + + + + +``` + +```{r 080-soort trends} +data.h.bsp <- data_hyperbenthos %>% + dplyr::mutate(zone = if_else(gebied == "Brede Schoren" | gebied == "Dendermonde", "Zoet", if_else(gebied == "Ballooi" | gebied == "Rupel", "Oligohalien", "Sterke Saliniteitsgradiënt"))) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + dplyr::mutate(soort = recode(soort, "Pomatoschistus minutus"="Pomatoschistus sp")) %>% + dplyr::group_by(soort, Jaar, zone) %>% + dplyr::summarise(biom_sp = sum(na.omit(AFDW))) %>% + ungroup() %>% + complete(soort, zone, Jaar, fill = list(biom_sp = 0)) %>% #geen Palaemons in 2023!!! + dplyr::filter(soort %in% c("Platichthys flesus", "Crangon crangon", "Neomysis integer", "Pomatoschistus sp", "Palaemon longirostris", "Mesopodopsis slabberi")) #rest"Abramis brama", + +ggplot(data.h.bsp, aes(x=Jaar, y=biom_sp, color=soort))+ + geom_line(aes(color=soort), linewidth=2)+ + scale_x_continuous(labels = scales::number_format(accuracy = 1))+ + ylab("Biomassa AFDW jaarsom 2 locaties")+ + facet_grid(~zone) + +ggsave(paste0(pad_figuren, "080-figuur-biomassa_soorten_jaren.jpg"), height=6, width=9) + +levels(ordered(data_hyperbenthos$soort)) + +``` + + + +```{r 080-taxa selectie 8} +# selecteer 8 taxa met hoogste proc bijdrage aan biomassa overheen alle jaren. Keuze voor 8 omdat INBO_theme maar 9 kleur levels heeft +hpb.sel.8sp<- data_hyperbenthos %>% + dplyr::filter(Maand %in% c(4:10)) %>% + left_join(hpb.totsom, by = "Jaar") %>% + dplyr::group_by(soort, Jaar) %>% + dplyr::reframe(biom_perc = sum(na.omit(AFDW))/totbiom*100) %>% + ungroup() %>% + distinct() %>% + dplyr::group_by(soort) %>% + dplyr::summarize(perc_biom = max(na.omit(biom_perc)))%>% + arrange(desc(perc_biom)) %>% + slice(1:8) %>% + ungroup() +sel <- hpb.sel.8sp$soort + +#dframe met alleen de 8 sp en hun perc_biom +hpb.sel.8sp.biom<- data_hyperbenthos %>% + dplyr::filter(Maand %in% c(4:10)) %>% + left_join(hpb.totsom, by = "Jaar") %>% + dplyr::group_by(soort, Jaar) %>% + dplyr::reframe(biom_perc = sum(na.omit(AFDW))/totbiom*100) %>% + ungroup() %>% + complete(soort, Jaar, fill = list(biom_perc = 0)) %>% + dplyr::filter(soort %in% sel) %>% + distinct() + +# Nu berekenen wat biom proc is van rest voor elk jaar +restbiom8sp <-data_hyperbenthos %>% + dplyr::filter(Maand %in% c(4:10)) %>% + dplyr::filter(soort %in% sel) %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(biom_8sp = sum(na.omit(AFDW))) %>% + left_join(hpb.totsom, by ="Jaar") %>% + dplyr::mutate(perc_biom = (totbiom-biom_8sp)/totbiom*100, + soort = "rest") %>% + dplyr::select(soort, Jaar, perc_biom) %>% + rename(biom_perc = perc_biom) + +hpb.sel.8sp.compl <- hpb.sel.8sp.biom %>% + rbind(restbiom8sp) + + + +``` + + +```{r 080-per-waterloop-en-tidaal} + +data_hyperbenthos_ZSmaand <- + data_hyperbenthos_totaal %>% + group_by(Jaar, Maand) %>% + summarise_at(vars(n, AFDW), + list(mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() + +#jaartotalen voor ZS - som van 6 gebieden, alleen april-okt, +data_hyperbenthos_ZS <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar %in% c(2014:2020)) %>% + dplyr::group_by(Jaar) %>% + summarise_at(vars(n, AFDW), + list(tot = ~sum(., na.rm = TRUE), mean = ~max(0, mean(., na.rm = TRUE)), + med = ~max(0, median(., na.rm = TRUE)), + lwr1 = ~max(0, quantile(., 0.25, na.rm = TRUE)), + upr1 = ~max(0, quantile(., 0.75, na.rm = TRUE)), + lwr2 = ~max(0, quantile(., 0.05, na.rm = TRUE)), + upr2 = ~max(0, quantile(., 0.95, na.rm = TRUE)))) %>% + ungroup() +``` + + +```{r 080-figuur-densiteit-totaal-gebied-maandverloop-jaren} + + +ylb <- expression(paste("densiteit ", "(ind/", '40', m^3, ")")) + +fnt <- 8 + + +bxp_hpbaprokt <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10)) %>% + mutate(gebied = factor(gebied, + levels = gebied_order), + Maand = ordered(Maand)) + +bxp_hpbaprokt23 <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10)) %>% + mutate(gebied = factor(gebied, + levels = gebied_order), + Maand = ordered(Maand)) %>% + dplyr::filter(Jaar == 2023) + +bxp_hpb <- bxp_hpbaprokt %>% + ggplot(aes(x=Maand, y= n, group=Jaar)) + + geom_line(aes(colour=Jaar), linewidth = 0.8) + + geom_line(data = bxp_hpbaprokt23, aes(x=Maand, y= n), linewidth = 3, colour = "lightblue") + + #gghighlight(Jaar == 2023, + # unhighlighted_params = list(linewidth = 0.5, colour= NULL), keep_scales = TRUE)+ + #geom_line(data = dplyr::filter(bxp_hpbaprokt, Jaar == 2023), linewidth = 2)+ + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + scale_color_continuous(label = function(x) sprintf("%.0f", x)) + + labs(x = "Maand", + y = ylb) + +bxp_hpb1 <- bxp_hpb+ + facet_grid_paginate(~gebied, ncol=3, nrow=1, page=1) + + +bxp_hpb2 <- bxp_hpb+ + facet_grid_paginate(~gebied, ncol=3, nrow=1, page=2) + + +ggarrange(bxp_hpb1 + rremove("xlab")+ font("xy.text", size = fnt), + bxp_hpb2 + font("xy.text", size = fnt), + nrow = 2, common.legend = TRUE, legend = "right")+ bgcolor("White") + +ggsave(paste0(pad_figuren, "080-figuur-densiteit_totaal-gebied-maandverloop_jaren.jpg"), height=6, width=9) + +``` + +```{r 080-figuur-densiteit-totaal-ZS-maandverloop-jaren} +ylb <- expression(paste("densiteit ", "(ind/", '40', m^3, ")")) + +fnt <- 8 + + +bxp_hpbZSaprokt <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013) %>% + mutate(Maand = ordered(Maand)) %>% + dplyr::group_by(Jaar, Maand) %>% + dplyr::summarise(nZS = sum(na.omit(n)), + AFDWZS = sum(na.omit(AFDW))) + +bxp_hpbZSaprokt23 <- bxp_hpbZSaprokt %>% + dplyr::filter(Jaar == 2023) + +bxp_hpbZS <- bxp_hpbZSaprokt %>% + ggplot(aes(x=Maand, y= nZS, group=Jaar)) + + geom_line(aes(colour=Jaar), linewidth = 0.8) + + geom_line(data= bxp_hpbZSaprokt23, aes(x=Maand, y= nZS), linewidth = 3, colour= "lightblue") + + scale_y_log10(breaks = c(0,10,1000,10000)+1, labels = c(0,10,1000,10000)) + + labs(x = "Maand", + y = ylb) +bxp_hpbZS + +ggsave(paste0(pad_figuren, "080-figuur-densiteit_totaal-ZS-maandverloop_jaren.jpg"), height=4, width=6) + + +bxp_hpbZSj_ALL <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013) %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(nZS = sum(na.omit(n)/6), + AFDWZS = sum(na.omit(AFDW))/6) %>% + ggplot(aes(x=Jaar, y= nZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(nZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="") + + #theme(axis.text.x = element_text(angle = 45))+ + ylim(100,25000)+ ggtitle("Volledige Zeeschelde")+ + theme(title =element_text(size=10)) +bxp_hpbZSj_ALL + +bxp_hpbZSj_SS <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013, zone == "Sterke Saliniteitsgradiënt") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n)/2), + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= nZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(nZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="") + + #theme(axis.text.x = element_text(angle = 45))+ + ylim(100,80000)+ ggtitle("Sterke Saliniteitsgradiënt")+ + theme(title =element_text(size=10)) + +bxp_hpbZSj_OL <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013, zone == "Oligohalien") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n)/2), + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= nZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(nZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="") + + #theme(axis.text.x = element_text(angle = 45))+ + ylim(100,3000)+ ggtitle("Oligohalien") + + theme(title =element_text(size=10)) + +bxp_hpbZSj_ZO <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013,zone == "Zoet") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n))/2, + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= nZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(nZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="") + + #theme(axis.text.x = element_text(angle = 45))+ + ylim(100,3000)+ ggtitle("Zoet")+ + theme(title =element_text(size=10)) + +t <-ggarrange(bxp_hpbZSj_SS + font("xy.text", size = fnt), + bxp_hpbZSj_OL + font("xy.text", size = fnt), + bxp_hpbZSj_ZO + font("xy.text", size = fnt), + bxp_hpbZSj_ALL + font("xy.text", size = fnt), ncol=2, nrow = 2) +annotate_figure(t, left=text_grob("Gemiddelde densiteit per jaar per zone", rot=90), bottom=text_grob("Jaar"))+ bgcolor("White") + + +ggsave(paste0(pad_figuren, "080-figuur-densiteit_ZS_jaarverloop_zones1.jpg"), height=4, width=6) + + + +bxp_hpbZSb <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013) %>% + mutate(Maand = ordered(Maand)) %>% + dplyr::group_by(Jaar, Maand) %>% + dplyr::summarise(nZS = sum(na.omit(n)), + AFDWZS = sum(na.omit(AFDW))) %>% + ggplot(aes(x=Jaar, y= nZS, group=Maand)) + + geom_line(aes(colour=Maand), size = 0.8) + + scale_y_log10(breaks = c(0,10,1000,10000)+1, labels = c(0,10,1000,10000)) + + labs(x = "Maand", + y = ylb) +bxp_hpbZSb + + +``` + +```{r 080-figuur-biomassa-totaal-ZS-maandverloop-jaren} +ylbb <- expression(paste("biomassa ", "(g droge stof/", '40', m^3, ")")) + +fnt <- 8 + +biom_hpbZSOA <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013) %>% + mutate(Maand = ordered(Maand)) %>% + dplyr::group_by(Jaar, Maand) %>% + dplyr::summarise(nZS = sum(na.omit(n)), + AFDWZS = sum(na.omit(AFDW))) %>% + dplyr::ungroup() + +biom_hpbZSOA23 <- biom_hpbZSOA %>% + dplyr::filter(Jaar == 2023) + + +biom_hpbZS <- biom_hpbZSOA %>% + ggplot(aes(x=Maand, y= AFDWZS, group=Jaar)) + + geom_line(aes(colour=Jaar), size = 0.8) + + geom_line(data= biom_hpbZSOA23, aes(x=Maand, y= AFDWZS), linewidth = 3, colour= "lightblue") + + scale_y_log10(breaks = c(0,10,100, 1000,10000)+1, labels = c(0,10,100,1000,10000)) + + labs(x = "Maand", + y = ylbb) + + scale_color_continuous(label = function(x) sprintf("%.0f", x)) + + theme(axis.text.x = element_text(angle = 45)) +biom_hpbZS + +ggsave(paste0(pad_figuren, "080-figuur-biomassa_totaal-ZS-maandverloop_jaren.jpg"), height=4, width=6) + +biom_hpbZSj_ALL <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013) %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(nZS = sum(na.omit(n)/6), + AFDWZS = sum(na.omit(AFDW))/6) %>% + ggplot(aes(x=Jaar, y= AFDWZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(AFDWZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="")+ + ylim(0,30)+ ggtitle("Gehele Zeeschelde")+ + theme(title =element_text(size=10)) +biom_hpbZSj_ALL + +biom_hpbZSj_SS <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013, zone == "Sterke Saliniteitsgradiënt") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n)/2), + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= AFDWZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(AFDWZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="")+ + ylim(0,60)+ ggtitle("Sterke Saliniteitsgradiënt")+ + theme(title =element_text(size=10)) + +biom_hpbZSj_OL <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013, zone == "Oligohalien") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n)/2), + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= AFDWZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(AFDWZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="")+ + ylim(0,20)+ ggtitle("Oligohalien")+ + theme(title =element_text(size=10)) + +biom_hpbZSj_ZO <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10), Jaar !=2013, zone == "Zoet") %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(nZS = sum(na.omit(n)/2), + AFDWZS = sum(na.omit(AFDW))/2) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + ggplot(aes(x=Jaar, y= AFDWZS)) + + geom_line(size = 1.2) + + geom_line(aes(y=zoo::rollmean(AFDWZS, 3, na.pad=TRUE)), size = 1.2, colour="red") + + geom_line(size = 1.2) + + labs(x = "", y="")+ + ylim(0,40)+ ggtitle("Zoet")+ + theme(title =element_text(size=10)) + +q <-ggarrange(biom_hpbZSj_SS + font("xy.text", size = fnt), + biom_hpbZSj_OL + font("xy.text", size = fnt), + biom_hpbZSj_ZO + font("xy.text", size = fnt), + biom_hpbZSj_ALL + font("xy.text", size = fnt), ncol=2, nrow = 2) +annotate_figure(q, left=text_grob("Gemiddelde biomassa (2 locaties)", rot=90), bottom=text_grob("Jaar"))+ bgcolor("White") + + + +ggsave(paste0(pad_figuren, "080-figuur-biomassa_ZS_jaarverloop_zones.jpg"), height=4, width=6) + +``` + + +```{r 080-figuur-biomassa-gebied-maandverloop-jaar} + + +ylbb <- expression(paste("biomassa ", "(mg droge stof/", '40', m^3, ")")) + +fnt <- 8 + + +bxp_hpbbOA <- + data_hyperbenthos_totaal %>% + dplyr::filter(Maand %in% c(4:10)) %>% + mutate(gebied = factor(gebied, + levels = gebied_order), + Maand = ordered(Maand)) +bxp_hpbbOA23 <- bxp_hpbbOA %>% + dplyr::filter(Jaar == 2023) + +bxp_hpbb <- bxp_hpbbOA %>% + ggplot(aes(x=Maand, y= AFDW+1, group=Jaar)) + + geom_line(aes(colour=Jaar)) + + geom_line(data= bxp_hpbbOA23, aes(x=Maand, y= AFDW+1), linewidth = 2, colour= "lightblue") + + scale_y_log10(breaks = c(0,10,1000,100000)+1, labels = c(0,10,1000,100000)) + + labs(x = "Maand", + y = ylbb) + + scale_color_continuous(label = function(x) sprintf("%.0f", x)) + + theme(axis.text.x = element_text(angle = 45)) + +bxp_hpbb1 <- bxp_hpbb+ + facet_grid_paginate(~gebied, ncol=3, nrow=1, page=1) + +bxp_hpbb2 <- bxp_hpbb+ + facet_grid_paginate(~gebied, ncol=3, nrow=1, page=2) + + +ggarrange(bxp_hpbb1 + rremove("xlab")+ font("xy.text", size = fnt), + bxp_hpbb2 + font("xy.text", size = fnt), + nrow = 2, common.legend = TRUE, legend = "right")+ bgcolor("White") +ggsave(paste0(pad_figuren, "080_figuur_biomassa_gebied_maandverloop_jaar.jpg"), height=6, width=9) + + +``` + + +```{r 080-figuur-biomassa-biomassa-perc-soorten-perjaar} + +pie_up <- hpb.sel.8sp.compl %>% + ggplot(aes(x="", y=biom_perc, fill=soort)) + + geom_bar(stat="identity", width=1, color="white") + + coord_polar("y", start=0) + + theme_void() + + facet_grid_paginate(~Jaar, ncol=3, nrow=1, page=1) +pie_middle<- hpb.sel.8sp.compl %>% + ggplot(aes(x="", y=biom_perc, fill=soort)) + + geom_bar(stat="identity", width=1, color="white") + + coord_polar("y", start=0) + + theme_void() + + facet_grid_paginate(~Jaar, ncol=3, nrow=1, page=2) +pie_bottom<- hpb.sel.8sp.compl %>% + ggplot(aes(x="", y=biom_perc, fill=soort)) + + geom_bar(stat="identity", width=1, color="white") + + coord_polar("y", start=0) + + theme_void() + + facet_grid_paginate(~Jaar, ncol=3, nrow=1, page=3) +pie_last<- hpb.sel.8sp.compl %>% + ggplot(aes(x="", y=biom_perc, fill=soort)) + + geom_bar(stat="identity", width=1, color="white") + + coord_polar("y", start=0) + + theme_void() + + facet_grid_paginate(~Jaar, ncol=3, nrow=1, page=4) + +ggarrange(pie_up, pie_middle, pie_bottom, pie_last, + nrow = 4, common.legend = TRUE, legend ="right")+ bgcolor("White") + +ggsave(paste0(pad_figuren, "080_figuur_biomassa_biomassa_perc_soorten_perjaar.jpg"), height=4, width=6) + +``` + +```{r 080-figuur-soortenrijkdomZS-perjaar} +#In jaar 2013 niet volledig gesampled wat taxa rijkdom beinvloedt, dus die niet +#met exoten +hpb_specrich <- data_hyperbenthos %>% + dplyr::filter(Maand %in% c(4:10)) %>% + dplyr::filter(Jaar != 2013) %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(specrich = length(unique(soort))) %>% + ungroup() + + +welex <-ggplot(hpb_specrich, aes(Jaar, specrich)) + + geom_line(size=1)+ + ylab("Taxa rijkdom")+ + ylim(35,60) + +#zonder exoten +hpb_specrichgnex <- data_hyperbenthos %>% + dplyr::filter(Maand %in% c(4:10)) %>% + dplyr::filter(exoot == 0, Jaar != 2013) %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(specrich = length(unique(soort))) %>% + ungroup() +gnex <-ggplot(hpb_specrichgnex, aes(Jaar, specrich)) + + geom_line(size=1)+ + ylab("Taxa rijkdom zonder exoten")+ + ylim(35,60) + +ggarrange(welex, gnex, + nrow = 1) + +ggsave(paste0(pad_figuren, "080_figuur_soortenrijkdomZS_perjaar.jpg"), height=4, width=6) + +``` + +```{r 080-figuur-soortenrijkdomZS-perjaargebied} +#In jaar 2013 niet volledig gesampled wat taxa rijkdom beinvloedt, dus die niet +#met exoten +hpb_specrichzon <- data_hyperbenthos %>% + dplyr::mutate(zone = if_else(gebied == "Brede Schoren" | gebied == "Dendermonde", "Zoet", if_else(gebied == "Ballooi" | gebied == "Rupel", "Oligohalien", "Sterke Saliniteitsgradiënt"))) %>% + mutate(zone = factor(zone, + levels = c("Sterke Saliniteitsgradiënt", "Oligohalien", "Zoet"))) %>% + dplyr::filter(Maand %in% c(4:10)) %>% + dplyr::filter(Jaar != 2013) %>% + dplyr::group_by(Jaar, zone) %>% + dplyr::summarise(specrich = length(unique(soort))) %>% + ungroup() + +welexgeb <-ggplot(hpb_specrichzon, aes(Jaar, specrich)) + + geom_line(size=1)+ + ylab("Taxa rijkdom")+ + ylim(0,50)+ + facet_grid(~zone)+ + theme(axis.text.x = element_text(angle = 45))+ + theme(strip.text = element_text(size=14)) +welexgeb + +ggsave(paste0(pad_figuren, "080_figuur_soortenrijkdomZS_perjaarzon.jpg"), height=5, width=10) +``` + + +```{r 080-figuur-Shannon-diversiteit} +shannon_hpbZS <- data_hyperbenthos %>% + dplyr::group_by(soort, Jaar) %>% + dplyr::summarise(nZS = sum(na.omit(n)), + afdwZS = sum(na.omit(AFDW))) %>% + dplyr::ungroup() %>% + dplyr::group_by(Jaar) %>% + dplyr::summarise(shannon_afdw = calc_shannon_index(afdwZS), + shannon_n = calc_shannon_index(nZS)) %>% + dplyr::ungroup() %>% + dplyr::mutate(zone = "Gehele Zeeschelde") + + +shannon_hpb <- data_hyperbenthos %>% + dplyr::mutate(zone = if_else(gebied == "Brede Schoren" | gebied == "Dendermonde", "Zoet", if_else(gebied == "Ballooi" | gebied == "Rupel", "Oligohalien", "Sterke Saliniteitsgradiënt"))) %>% + ungroup() %>% + dplyr::group_by(soort, zone, Jaar) %>% + dplyr::summarise(nzone = sum(na.omit(n)), + afdwzone = sum(na.omit(AFDW))) %>% + dplyr::ungroup() %>% + dplyr::group_by(zone, Jaar) %>% + dplyr::summarise(shannon_afdw = calc_shannon_index(afdwzone), + shannon_n = calc_shannon_index(nzone)) %>% + dplyr::ungroup() %>% + rbind(shannon_hpbZS) + + shan_n <- ggplot(shannon_hpb, aes(x=Jaar, colour=zone))+ + geom_line(aes(y=shannon_n), size=1)+ + ylab("Shannon diversiteit densiteit")+ + xlab("Jaar")+ + theme(legend.text = element_text(size=14))+ + theme(legend.title = element_text(size=14))+ + scale_x_continuous(labels = scales::number_format(accuracy = 1)) + + +shan_b <- ggplot(shannon_hpb, aes(x=Jaar, colour=zone))+ + geom_line(aes(y=shannon_afdw), size=1)+ + ylab("Shannon diversiteit biomassa")+ + xlab("Jaar")+ + theme(legend.text = element_text(size=14))+ + theme(legend.title = element_text(size=14))+ + scale_x_continuous(labels = scales::number_format(accuracy = 1)) + +ggarrange(shan_n, shan_b, + nrow = 1, common.legend=T)+ bgcolor("White") + +ggsave(paste0(pad_figuren, "080_figuur_shannon.jpg"), height=5, width=10) + +``` + + + +```{r 080-meta-data} + +meta_data <- + enframe(c(laatstejaar = laatste_jaar, + vroegstejaar = vroegste_jaar, + aantal_stalen = n_staal), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +``` + diff --git a/moneos_2024/080_hyperbenthos/080_hyperbenthos_data.Rmd b/moneos_2024/080_hyperbenthos/080_hyperbenthos_data.Rmd new file mode 100644 index 0000000..165cad6 --- /dev/null +++ b/moneos_2024/080_hyperbenthos/080_hyperbenthos_data.Rmd @@ -0,0 +1,137 @@ +--- +params: + hoofdstuk: "080_hyperbenthos" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "Hyperbenthos data" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(rprojroot) +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) +library(RODBC) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} +#eerst recente kopie van op Amazon op G gezet +MDB <- odbcConnectAccess2007("G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dZDBwVVJOVk5Ld2s/PRJ_SCHELDE/Benthos/HyperEpibenthos/DATA/HYPERBENTHOS_SCHELDEaug2024.accdb") + +# querry met mulitply (substaal nr) al gebruikt voor aantal, WW en AFDW, daardoor is AFDW niet meer DW-AW in uiteindelijke tabel! +sqlCode <- " +SELECT tblSample.campagne, tblStaalnameGebied.Naam AS gebied, tblSample.event_name, tblSample.datum, tblHyperBiot.fractie, tblTaxaList.hoger_taxon, tblHyperBiot.soort, tblTaxaList.vis_NL, tblTaxaList.exoot, Sum([aantal]*[multiply]) AS n, Sum([WW]*[multiply]) AS WWs, tblHyperBiot.DW, tblHyperBiot.AW, Sum([tblHyperBiot].[multiply]*([tblHyperBiot].[DW]-[tblHyperBiot].[AW])) AS AFDW, tblSample.materiaal, tblHyperBiot.Invoerder, tblHyperBiot.Aanmaakdatum, tblHyperBiot.[Laatst gewijzigd] +FROM tblStaalnameGebied INNER JOIN (tblCampagne INNER JOIN (tblTaxaList INNER JOIN (tblSample INNER JOIN tblHyperBiot ON (tblSample.Id = tblHyperBiot.IdSample) AND (tblSample.repeat = tblHyperBiot.repeat)) ON tblTaxaList.soortnaam = tblHyperBiot.soort) ON tblCampagne.campagnecode = tblSample.campagne) ON tblStaalnameGebied.Id = tblSample.IdStaalnameGebied +GROUP BY tblSample.campagne, tblStaalnameGebied.Naam, tblSample.event_name, tblSample.datum, tblHyperBiot.fractie, tblTaxaList.hoger_taxon, tblHyperBiot.soort, tblTaxaList.vis_NL, tblTaxaList.exoot, tblHyperBiot.WW, tblHyperBiot.DW, tblHyperBiot.AW, tblSample.materiaal, tblHyperBiot.Invoerder, tblHyperBiot.Aanmaakdatum, tblHyperBiot.[Laatst gewijzigd], tblTaxaList.taxonredux, tblSample.repeat, tblHyperBiot.contaminatie +HAVING (((tblTaxaList.taxonredux)='in') AND ((tblSample.repeat)=1) AND ((tblHyperBiot.contaminatie) Is Null)); +" +#, tblTaxaList.exoot tblTaxaList.exoot + +tel.0 <- sqlQuery(channel = MDB, sqlCode, stringsAsFactors=FALSE) +moniloc <- c("Paardenschor","St-Anna","Ballooi","Dendermonde","Brede Schoren","Rupel") + +#data van BoVO campagnes, van 6 stations, dubbelcampagne van 2014 wegdoen +tel <- tel.0 %>% + dplyr::mutate(Jaar = year(datum), + Maand= month(datum)) %>% + dplyr::mutate(gebied = if_else(gebied == "Konkelschoor - KS" & Jaar == 2013, "Brede Schoren", gebied), + gebied = if_else(gebied == "Vlassenbroek" & Jaar == 2013, "Dendermonde", gebied)) %>% + dplyr::filter(gebied %in% moniloc, str_detect(campagne, "BoVo")) %>% + dplyr::filter(!str_detect(campagne,"_1")) %>% + dplyr::filter(Jaar!=2024) %>% + rename(WW = WWs) + + +jaarorder <- c("2013", "2014", "2015", "2016","2017","2018","2019", "2020", "2021", "2022", "2023") + + +tel %>% + distinct(datum, gebied, Maand, Jaar) %>% + count(gebied, Maand, Jaar) %>% + dplyr::mutate(Jaar = ordered(Jaar, levels=jaarorder)) %>% + pivot_wider(names_from = Maand, values_from= n) %>% + knitr::kable() + + +``` + +```{r} +# paar ontbrekende AFDW aanvullen op basis van geschatte regressie WW-AFDW, vooral relaties gebruiken met hogere aantallen, want vaak afwijkingen bij zr lage gewichten. OOk enkele neg AFDW vervangen op zelfde manier +# Pomatoschistus soms als sp. (kleintjes en soms als microps, maar wrsch bijna altijd microps. Omdat dit voor taxonrijkdom en procentuele bijdrage lastig is, hier samen gevoegd) + +telc <- tel %>% + dplyr::mutate(AFDW = if_else(DW==0 & soort=="Gasterosteus aculeatus", WW/6, AFDW), + AFDW = if_else(DW==0 & soort == "Gammarus tigrinus", WW/5.5, AFDW), + AFDW = if_else(DW==0 & soort == "Pomatoschistus microps", WW/5.8, AFDW), + AFDW = if_else(DW==0 & soort == "Limnomysis benedeni", WW/4.7, AFDW), + AFDW = if_else(DW==0 & soort =="Bathyporeia pilosa", WW/6, AFDW), + AFDW = if_else(AFDW<0 & soort == "Abramis brama", WW/7.7, AFDW), + AFDW = if_else(AFDW<0 & soort=="Synidotea laticauda", WW/7, AFDW), + AFDW = if_else(WW% + dplyr::filter(WW% + distinct(Jaar) %>% + pull(Jaar) + +jaar_range <- + range(jaren) + +``` + +```{r wegschrijven-data} +file_name <- + paste0(pad_data, "hyperbenthos_data_", paste(jaar_range, collapse = "_"), ".xlsx") + +write_xlsx(telc, + path = file_name) +``` + + + + diff --git a/moneos_2024/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd b/moneos_2024/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd new file mode 100644 index 0000000..58bb2ec --- /dev/null +++ b/moneos_2024/090_vissen/10_moneos_visdata_VIS_fuiken.Rmd @@ -0,0 +1,268 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, + "/output") + )}) + +title: "visdata fuiken" +output: + bookdown::word_document2: default +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +run_pad <- function() { + + source(find_root_file("../pad.R", criterion = is_rstudio_project)) + + pad_data <- maak_pad(params$hoofdstuk, "data") + pad_figuren <- maak_pad(params$hoofdstuk, "figuren") + pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + +} + +run_pad() + +``` + + +```{r variabelen} + +run_variabelen <- + function() { + + jaren <- as.numeric(jaar_moneos) - 1 + vangstmethode <- c('Schietfuik') + + # Zeeschelde vissen + locaties_name <- "fuikvangsten_Zeeschelde_locaties" + metadata_name <- "fuikvangsten_Zeeschelde_metadata" + filename <- "fuikdata_Zeeschelde" + + # zijrivieren vissen + # locaties_name <- "fuikvangsten_zijrivieren_locaties" + # metadata_name <- "fuikvangsten_zijrivieren_metadata" + # filename <- "fuikdata_zijrivieren" + + locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) + locatie_nrs <- locaties$locatiecode %>% as.character() + locatie_namen <- locaties$locatie + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + + } + +run_variabelen() + +``` + + +```{r connectie met databank} + +VIS2 <- connect_inbo_dbase("D0147_00_Vis2") +VIS <- connect_inbo_dbase("W0001_00_Vis") + +``` + + +```{r bevragen databank} + +FactMeting_Pivot <- + tbl(VIS, "FactMeting_Pivot") +DimWaarneming <- + tbl(VIS, "DimWaarneming") +DimGebied <- + tbl(VIS, "DimGebied") +DimGebiedInfo <- + tbl(VIS, "DimGebiedInfo") +DimTaxon <- + tbl(VIS, "DimTaxon") +DimVisindexTaxon <- + tbl(VIS, "DimVisindexTaxon") +DimMethode <- + tbl(VIS, "DimMethode") +DimDate <- + tbl(VIS, "DimDate") + + +# Vispunten <- +# tbl(VIS2, "Vispunten") +# VHAVispunten <- +# tbl(VIS2, "VHAVispunten") +AbiotischeMeting <- + tbl(VIS2, "AbiotischeMeting") + + +tbl_campagnes <- + DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")) %>% + inner_join(DimMethode, by = "MethodeKey") %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs + # , + # Methodenaam %in% vangstmethode + ) %>% + select(WaarnemingKey, WaarnemingID, GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, Begindatum, Month, Year, MethodeKey, Methodenaam, Methodegroepcode, AantalDagen, AantalFuiken) + +tbl_data <- + FactMeting_Pivot %>% + right_join(DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")), + by = "WaarnemingKey") %>% + inner_join(DimTaxon %>% + left_join(DimVisindexTaxon %>% select(TaxonKey, Exoot)), + by = "TaxonKey") %>% + inner_join(DimMethode, by = "MethodeKey") %>% + select(MetingPivotKey, WaarnemingKey, WaarnemingID, + GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, + Begindatum, Month, Year, + MethodeKey, Methodenaam, Methodegroepcode, AantalDagen, AantalFuiken, + TaxonKey, Soort, WetenschappelijkeNaam, Exoot, + TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN, + TEMPERATUUR, ZUURSTOF, TURBIDITEIT, CONDUCTIVITEIT, PH) %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs + # , + # Methodenaam %in% vangstmethode + ) + +(gebied_codes <- + tbl_data %>% + distinct(Gebiedcode) %>% + collect() %>% + pull()) + +waarneming_IDs <- + tbl_data %>% + distinct(WaarnemingID) %>% + collect() %>% + pull() + +# tbl_locatie_gegevens <- +# Vispunten %>% +# inner_join(VHAVispunten, by = c("VIP_ID" = "VHP_VIP_ID")) %>% +# select(VIP_CDE, VIP_Omschrijving, VHP_LOTIC_NAAM, VHP_LOTIC_BekNaam, VHP_LOTIC_STROOMGEBIED, VHP_GEMEENTE) %>% +# filter(VIP_CDE %in% gebied_codes) + +tbl_abiotiek <- + AbiotischeMeting %>% + select(ABME_WRNG_ID, ABME_ZUURSTOF, ABME_ZUURSTOFPROCENT, ABME_TEMPERATUUR, ABME_PH, ABME_CONDUCTIVITEIT, ABME_TURBIDITEIT, ABME_SALINITEIT_PRM) %>% + filter(ABME_WRNG_ID %in% waarneming_IDs) + +data <- + tbl_data %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +campagnes <- + tbl_campagnes %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +soorten <- + data %>% + distinct(Soort, WetenschappelijkeNaam, Exoot) + +data <- + data %>% + select(-WetenschappelijkeNaam) + +``` + + +```{r sluiten databank} + +dbDisconnect(VIS) +dbDisconnect(VIS2) + +``` + + +```{r hervariabel, ref.label=c('pad', 'variabelen')} + +rm(list = ls()[-which(ls() %in% c("data", "campagnes", "soorten", "params", "run_pad", "run_variabelen"))]) + +run_pad() +run_variabelen() + +``` + + +```{r opslaan ruwe data fuiken} + +write_xlsx(list(campagnes = campagnes, + soorten = soorten, + data = data), + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +``` + + +```{r check campagnes, eval=FALSE} + +campagnes <- + read_xlsx(sheet = "campagnes", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +data <- + read_xlsx(sheet = "data", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +campagnes_dstnct <- + campagnes %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +campagnes_dstnct2 <- + data %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +(sd <- setdiff(campagnes_dstnct, campagnes_dstnct2)) + +campagnes_dstnct %>% + distinct(Gebiedcode, Gebiednaam) + +``` + diff --git a/moneos_2024/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd b/moneos_2024/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd new file mode 100644 index 0000000..80224d8 --- /dev/null +++ b/moneos_2024/090_vissen/11_moneos_visdata_VIS_ankerkuil.Rmd @@ -0,0 +1,310 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, + "/output") + )}) + +title: "visdata fuiken" +output: + bookdown::word_document2: default +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(tidyjson) +library(lubridate) +library(readxl) +library(writexl) +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r, pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +run_pad <- function() { + + source(find_root_file("../pad.R", criterion = is_rstudio_project)) + + pad_data <- maak_pad(params$hoofdstuk, "data") + pad_figuren <- maak_pad(params$hoofdstuk, "figuren") + pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + +} + +run_pad() + +``` + + +```{r, variabelen} + +run_variabelen <- + function() { + + jaren <- as.numeric(jaar_moneos) - 1 + # jaren <- 2015:2023 + vangstmethode <- c('Ankerkuil', 'Ankerkuil-vloed', 'Ankerkuil-eb') + + # Zeeschelde vissen + locaties_name <- "ankerkuil_Zeeschelde_locaties" + metadata_name <- "ankerkuil_Zeeschelde_metadata" + filename <- "ankerkuil_Zeeschelde" + + # zijrivieren vissen + # locaties_name <- "fuikvangsten_zijrivieren_locaties" + # metadata_name <- "fuikvangsten_zijrivieren_metadata" + # filename <- "fuikdata_zijrivieren" + + locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) + locatie_nrs <- locaties$locatiecode %>% as.character() + locatie_namen <- locaties$locatie + + # print(ls()) + + sapply(ls(), function(x) assign(x, get(x), .GlobalEnv)) + + } + +run_variabelen() + +``` + + +```{r connectie met databank} + +VIS2 <- connect_inbo_dbase("D0147_00_Vis2") +VIS <- connect_inbo_dbase("W0001_00_Vis") + +``` + + +```{r bevragen databank} + +FactMeting_Pivot <- + tbl(VIS, "FactMeting_Pivot") +DimWaarneming <- + tbl(VIS, "DimWaarneming") +DimGebied <- + tbl(VIS, "DimGebied") +DimGebiedInfo <- + tbl(VIS, "DimGebiedInfo") +DimTaxon <- + tbl(VIS, "DimTaxon") +DimVisindexTaxon <- + tbl(VIS, "DimVisindexTaxon") +DimMethode <- + tbl(VIS, "DimMethode") +DimDate <- + tbl(VIS, "DimDate") + + +# Vispunten <- +# tbl(VIS2, "Vispunten") +# VHAVispunten <- +# tbl(VIS2, "VHAVispunten") +AbiotischeMeting <- + tbl(VIS2, "AbiotischeMeting") +Waarneming <- + tbl(VIS2, "Waarneming") +Methode <- + tbl(VIS2, "Methode") +Meting <- + tbl(VIS2, "Meting") + +# informatie ivm met berekening en eenheid voor catch per unit effort zijn te vinden in VIS2 tabel 'Methode' (en 'MethodeCpueParameter') + + +tbl_campagnes <- + DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")) %>% + inner_join(DimMethode, by = "MethodeKey") %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs, + Methodenaam %in% vangstmethode) %>% + select(WaarnemingKey, WaarnemingID, GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, Begindatum, Month, Year, MethodeKey, Methodenaam, Methodegroepcode) + + +tbl_data <- + FactMeting_Pivot %>% + right_join(DimWaarneming %>% + inner_join(DimGebied, + by = "GebiedKey") %>% + inner_join(DimDate, by = c("BeginDatumKey" = "DateKey")), + by = "WaarnemingKey") %>% + inner_join(DimTaxon %>% + left_join(DimVisindexTaxon %>% select(TaxonKey, Exoot)), + by = "TaxonKey") %>% + inner_join(DimMethode, by = "MethodeKey") %>% + select(MetingPivotKey, WaarnemingKey, MetingID, WaarnemingID, + GebiedKey, Gebiedcode, LambertX, LambertY, Lat, Long, Gebiednaam, Gemeentenaam, + Begindatum, Month, Year, + MethodeKey, Methodenaam, Methodegroepcode, + TaxonKey, Soort, WetenschappelijkeNaam, Exoot, + TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN, + TEMPERATUUR, ZUURSTOF, TURBIDITEIT, CONDUCTIVITEIT, PH) %>% + filter(Year %in% jaren, + Gebiedcode %in% locatie_nrs, + Methodenaam %in% vangstmethode) + +(gebied_codes <- + tbl_data %>% + distinct(Gebiedcode) %>% + collect() %>% + pull()) + +waarneming_IDs <- + tbl_data %>% + distinct(WaarnemingID) %>% + collect() %>% + pull() + +meting_IDs <- + tbl_data %>% + distinct(MetingID) %>% + collect() %>% + pull() + +tbl_abiotiek <- + AbiotischeMeting %>% + select(ABME_WRNG_ID, ABME_ZUURSTOF, ABME_ZUURSTOFPROCENT, ABME_TEMPERATUUR, ABME_PH, ABME_CONDUCTIVITEIT, ABME_TURBIDITEIT, ABME_SALINITEIT_PRM) %>% + filter(ABME_WRNG_ID %in% waarneming_IDs) + +tbl_volume <- + Waarneming %>% + select(WRNG_ID, WRNG_WGST_CDE, WRNG_METH_CDE, WRNG_OCR, WRNG_CPUE_PARAMETERS) %>% + filter(WRNG_ID %in% waarneming_IDs) + +tbl_verdunning <- + Meting %>% + select(METI_ID, METI_WRNG_ID, METI_DILUTION_FACTOR) %>% + filter(METI_ID %in% meting_IDs) + +volume <- + tbl_volume %>% + collect() %>% + bind_cols(., .$WRNG_CPUE_PARAMETERS %>% + spread_all() %>% + select(AantalUrenStuurboord, AantalUrenBakboord, AfgevistVolumeStuurboord, AfgevistVolumeBakboord) %>% + as_tibble()) %>% + replace_na(list(AantalUrenStuurboord = 0, AantalUrenBakboord = 0, + AfgevistVolumeStuurboord = 0, AfgevistVolumeBakboord = 0)) %>% + mutate(uren = AantalUrenStuurboord + AantalUrenBakboord, + volume = AfgevistVolumeStuurboord + AfgevistVolumeBakboord) + + +data <- + tbl_data %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(volume %>% select(WRNG_ID, uren, volume), by = c("WaarnemingID" = "WRNG_ID")) %>% + left_join(tbl_verdunning %>% collect(), by = c("MetingID" = "METI_ID", "WaarnemingID" = "METI_WRNG_ID")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +campagnes <- + tbl_campagnes %>% + collect() %>% + # left_join(tbl_locatie_gegevens %>% collect(), by = c("Gebiedcode" = "VIP_CDE")) %>% + left_join(volume %>% select(WRNG_ID, uren, volume), by = c("WaarnemingID" = "WRNG_ID")) %>% + left_join(tbl_abiotiek %>% collect(), by = c("WaarnemingID" = "ABME_WRNG_ID")) + +soorten <- + data %>% + distinct(Soort, WetenschappelijkeNaam, Exoot) + +data <- + data %>% + select(-WetenschappelijkeNaam) + +``` + + +```{r sluiten databank} + +dbDisconnect(VIS) +dbDisconnect(VIS2) + +``` + + +```{r hervariabel, ref.label=c('pad', 'variabelen')} + +rm(list = ls()[-which(ls() %in% c("data", "campagnes", "soorten", "params", "run_pad", "run_variabelen"))]) + +run_pad() +run_variabelen() + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r opslaan ruwe data ankerkuil} + +write_xlsx(list(campagnes = campagnes, + soorten = soorten, + data = data), + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +``` + + +```{r check campagnes, eval=FALSE} + +campagnes <- + read_xlsx(sheet = "campagnes", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +data <- + read_xlsx(sheet = "data", + path = str_c(pad_data, filename, "_ruw_VIS_", str_c(unique(range(jaren)), collapse = "_"), ".xlsx")) + +campagnes_dstnct <- + campagnes %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +campagnes_dstnct2 <- + data %>% + distinct(Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam) + +(df <- setdiff(campagnes_dstnct, campagnes_dstnct2)) + +campagnes_dstnct %>% + distinct(Gebiedcode, Gebiednaam) + +``` + diff --git a/moneos_2024/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd b/moneos_2024/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd new file mode 100644 index 0000000..4fb72ec --- /dev/null +++ b/moneos_2024/090_vissen/20_moneos_visdata_fuiken_integratie.Rmd @@ -0,0 +1,640 @@ +--- +params: + hoofdstuk: "090_vissen" +title: "visdata fuiken" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r variabelen} + +laatste_jaar <- as.numeric(jaar_moneos) - 1 +pad_data_historisch <- str_c(pad_prj_schelde, pad_moneos, as.numeric(jaar_moneos)-1, "/", params$hoofdstuk, "/data/") + +locaties_name <- "fuikvangsten_Zeeschelde_locaties" +metadata_name <- "fuikvangsten_Zeeschelde_metadata" +filename <- "fuikdata_Zeeschelde_VLIZ" + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) %>% + mutate(locatiecode = as.character(locatiecode)) + +``` + + +```{r inlezen historische data} + +campagnes_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "campagnes") + +# omzetten maand naar seizoen +# campagnes_historisch <- +# campagnes_historisch %>% +# mutate(seizoen = +# case_when( +# maand %in% 3:5 ~ "voorjaar", +# maand %in% 6:8 ~ "zomer", +# maand %in% 9:11 ~ "najaar", +# maand %in% 12:2 ~ "winter")) %>% +# select(ID_afvissing:jaar, seizoen, everything(), -maand) + +aantal_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "aantallen") + +gewicht_historisch <- + read_xlsx(str_c(pad_data_historisch, str_c("fuikdata_Zeeschelde_VLIZ_2009_", + laatste_jaar - 1 , + ".xlsx")), + sheet = "gewicht") + +``` + + +```{r inlezen recent data} + +# campagnes_recent <- +# read_xlsx(str_c(pad_data, "fuikdata_Zeeschelde_ruw_VIS_", +# laatste_jaar, +# ".xlsx"), +# sheet = "campagnes") + +data_recent <- + read_xlsx(str_c(pad_data, "fuikdata_Zeeschelde_ruw_VIS_", + laatste_jaar, + ".xlsx"), + sheet = "data") + +(old_names <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam) %>% + arrange(Gebiedcode) %>% + pull(Gebiednaam)) + +gebieden <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam, round(LambertX), round(LambertY)) %>% + arrange(Gebiedcode) + +locaties <- + locaties %>% + filter(locatiecode %in% gebieden$Gebiedcode) + +locatie_nrs <- locaties$locatiecode +locatie_namen <- locaties$locatie + +(gebieden <- + gebieden %>% + mutate(new_names = locatie_namen[order(locatie_nrs)])) + +level_key <- locatie_namen[order(locatie_nrs)] +names(level_key) <- old_names + +``` + + +```{r correcties soortnamen historische data, eval=FALSE} + +rename_vector <- + c("kleine koornaarvis" = "koornaarvis") + +aantal_historisch <- + aantal_historisch %>% + rename(!!!rename_vector) +gewicht_historisch <- + gewicht_historisch %>% + rename(!!!rename_vector) + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data_recent %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r controle uniek aantal of gewicht in ruwe data} + +aantal_NA_of_0_ruw <- + data_recent %>% + filter(is.na(TAXONAANTAL) | + near(TAXONAANTAL, 0)) %>% + select("MetingPivotKey", "WaarnemingKey", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "AantalDagen", "AantalFuiken", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN") + +gewicht_NA_of_0_ruw <- + data_recent %>% + filter(if_all(c(TAXONGEW, TAXONTOTGEW), ~is.na(.)) | + if_all(c(TAXONGEW, TAXONTOTGEW), ~near(., 0))) %>% + select("MetingPivotKey", "WaarnemingKey", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "AantalDagen", "AantalFuiken", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN") + + +soort_NA <- + gewicht_NA_of_0_ruw %>% + filter(TAXONAANTAL == 1) %>% + pull(Soort) %>% + unique() + +if (length(soort_NA) > 0) { + data_lengte <- + data_recent %>% + filter(Soort %in% soort_NA, + !is.na(TAXONLEN)) %>% + select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) + + p <- + data_lengte %>% + ggplot(aes(TAXONLEN, TAXONGEW)) + + geom_point() + + geom_smooth(method = "lm") + + scale_x_log10() + + scale_y_log10() + + facet_wrap(~Soort) + print(p) + + regressie_lengte <- + data_lengte %>% + group_by(Soort) %>% + summarise(int = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[1], + slope = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[2]) %>% + ungroup() + + datum_soort <- + data_recent %>% + mutate(gewicht = if_else(is.na(TAXONGEW), + TAXONTOTGEW, TAXONGEW)) %>% + select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% + filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% + drop_na() %>% + group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% + summarise(across(everything(), sum)) %>% + ungroup() + + + gewicht_NA <- + gewicht_NA_of_0_ruw %>% + select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, + TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN) %>% + left_join(datum_soort) %>% + left_join(regressie_lengte) %>% + replace_na(list(aantal = 0, gewicht = 0)) %>% + mutate(prop_aantal = TAXONAANTAL/aantal, + gewicht_imputed = + case_when( + TAXONAANTAL > 1 ~ gewicht*prop_aantal, + TRUE ~ exp(int + slope*log(TAXONLEN)) + )) + + + write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + # NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_fuiken.xlsx")) +} + +``` + + +```{r toevoegen imputation aan ruwe data} + +if (length(soort_NA) > 0) { + keys <- gewicht_NA$MetingPivotKey + + dat_before <- + data_recent %>% + filter(MetingPivotKey %in% keys) + + for(k in keys) { + data_recent$TAXONGEW[data_recent$MetingPivotKey == k] <- + gewicht_NA$gewicht_imputed[gewicht_NA$MetingPivotKey == k] + } + + dat_after <- + data_recent %>% + filter(MetingPivotKey %in% keys) +} + +``` + + +```{r data per datum} + +data_per_datum <- + data_recent %>% + select(locatiecode = Gebiedcode, locatie = Gebiednaam, datum = Begindatum, + aantal_dagen = AantalDagen, aantal_fuiken = AantalFuiken, soort = Soort, + aantal = TAXONAANTAL, gewicht_ind = TAXONGEW, gewicht_tot = TAXONTOTGEW, + temperatuur = ABME_TEMPERATUUR, zuurstof = ABME_ZUURSTOF, zuurstof_perc = ABME_ZUURSTOFPROCENT, + ph = ABME_PH, turbiditeit = ABME_TURBIDITEIT, conductiviteit = ABME_CONDUCTIVITEIT) %>% + mutate(locatie = recode(locatie, !!!level_key), + fuikdagen = aantal_dagen * aantal_fuiken, + datum = date(datum), + jaar = year(datum), + maand = month(datum), + seizoen = + case_when( + maand %in% 3:5 ~ "voorjaar", + maand %in% 6:8 ~ "zomer", + maand %in% 9:11 ~ "najaar", + maand %in% 12:2 ~ "winter"), + soort = str_to_lower(soort)) %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken, fuikdagen, soort) %>% + summarise(n = n(), + aantal = sum(aantal, na.rm = FALSE), + # gewicht = sum(if_else(is.na(gewicht_ind), + # if_else(is.na(gewicht_tot), NA_real_, gewicht_tot), + # if_else(is.na(gewicht_tot), gewicht_ind, gewicht_ind + gewicht_tot)), + gewicht = sum(if_else(is.na(gewicht_ind), + gewicht_tot, gewicht_ind), + na.rm = FALSE), + across(c(temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit), + ~mean(., na.rm = TRUE)), + .groups = "drop") + +``` + + +```{r controle NA in aantal of gewicht in geaggregeerde data} + +dat_NA <- + data_per_datum %>% + filter(is.na(aantal) | is.na(gewicht)) + +``` + + +```{r controle ontbrekende campagnes} + +campagnes <- + data_per_datum %>% + select(locatie, jaar, maand, seizoen) %>% + distinct() + +camp_tot <- + campagnes %>% + expand(locatie, jaar, seizoen) + +campagnes_ontbrekend <- + camp_tot %>% + anti_join(campagnes) + +campagnes_NA_or_0 <- + data_per_datum %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken) %>% + summarise(n = sum(n), aantal = sum(aantal, na.rm = TRUE), gewicht = sum(gewicht, na.rm = TRUE)) %>% + ungroup() %>% + arrange(datum, locatie, seizoen) %>% + filter(if_any(.cols = everything(), .fns = ~is.na(.)) | + if_any(.cols = c(aantal_dagen, aantal_fuiken), ~near(., 0))) + +``` + + +```{r controle uniek aantal of gewicht in geaggregeerde data} + +uniek_aantal_of_gewicht <- + data_per_datum %>% + select(locatiecode, locatie, datum, jaar, maand, seizoen, aantal_dagen, aantal_fuiken, fuikdagen, soort, n, aantal, gewicht) %>% + arrange(datum, locatie, seizoen) %>% + filter(if_any(c(aantal, gewicht), ~is.na(.)) | + (if_any(c(aantal, gewicht), ~near(., 0)) & !if_all(c(aantal, gewicht), ~near(., 0)))) + + +uniek_aantal_of_gewicht_vis <- + uniek_aantal_of_gewicht %>% + filter(!str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +uniek_aantal_of_gewicht_inv <- + uniek_aantal_of_gewicht %>% + filter(str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +``` + + +```{r vergelijking aanwezige soorten met historisch} + +(soorten_historisch_aanwezig <- + union( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names()) %>% + sort()) + +(soorten_historisch_afwezig <- + intersect( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names()) %>% + sort()) + +intersect(soorten_historisch_aanwezig, soorten_historisch_afwezig) +setdiff(aantal_historisch %>% + select(-ID_afvissing) %>% + names(), + union(soorten_historisch_aanwezig, soorten_historisch_afwezig)) + + +(soorten_recent_aanwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal > 0) %>% + pull(soort) %>% + sort()) + +(soorten_recent_afwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal == 0) %>% + pull(soort) %>% + sort()) + +intersect(soorten_recent_aanwezig, soorten_recent_afwezig) +setdiff(data_per_datum %>% + distinct(soort) %>% + pull(), + union(soorten_recent_aanwezig, soorten_recent_afwezig)) + + +(soorten_totaal_afwezig <- + setdiff(soorten_historisch_afwezig, soorten_recent_aanwezig) %>% + sort()) + +(soorten_totaal_aanwezig <- + union(soorten_historisch_aanwezig, soorten_recent_aanwezig) %>% + sort()) + +(soorten_totaal_aanwezig_invertebraten <- + soorten_totaal_aanwezig %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + sort()) + +(soorten_totaal_aanwezig_vis <- + setdiff(soorten_totaal_aanwezig, soorten_totaal_aanwezig_invertebraten) %>% + sort()) + +(soorten_totaal_aanwezig <- + c(soorten_totaal_aanwezig_vis, soorten_totaal_aanwezig_invertebraten)) + + +(soorten_totaal <- + union(soorten_totaal_aanwezig, soorten_totaal_afwezig) %>% + sort()) + +(unieke_soorten_historisch_aanwezig <- + setdiff(soorten_historisch_aanwezig, + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_historisch_totaal <- + setdiff(union(soorten_historisch_aanwezig, soorten_historisch_afwezig), + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_recent_aanwezig <- + setdiff(soorten_recent_aanwezig, + soorten_historisch_aanwezig) %>% + sort()) + +``` + + +```{r correcties soortnamen recente data, eval=FALSE} + +data_per_datum <- + data_per_datum %>% + mutate(soort = + case_match(soort, + "blauwband" ~ "blauwbandgrondel", + .default = soort)) + +``` + + +```{r sheets finale data recent} + +campagnes_recent <- + data_per_datum %>% + select(locatie, datum, jaar, seizoen, fuikdagen, + temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit) %>% + distinct() %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything()) %>% + arrange(ID_afvissing) + +aantallen_recent <- + data_per_datum %>% + select(locatie, datum, soort, aantal) %>% + pivot_wider(names_from = soort, + values_from = aantal, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum) %>% + arrange(ID_afvissing) + +gewicht_recent <- + data_per_datum %>% + select(locatie, datum, soort, gewicht) %>% + pivot_wider(names_from = soort, + values_from = gewicht, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum) %>% + arrange(ID_afvissing) + +``` + + +```{r samenvoegen recent met historisch} + +aantal_historisch_finaal <- + aantal_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(aantal_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + +gewicht_historisch_finaal <- + gewicht_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + + +start_ID <- max(campagnes_historisch$ID_afvissing) + +campagnes_recent_finaal <- + campagnes_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) + +aantal_recent_finaal <- + aantallen_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(aantallen_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + +gewicht_recent_finaal <- + gewicht_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + + +soorten_order <- + soorten_totaal_aanwezig + +campagnes <- + campagnes_historisch %>% + bind_rows(campagnes_recent_finaal) + +aantallen <- + aantal_historisch_finaal %>% + bind_rows(aantal_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +gewicht <- + gewicht_historisch_finaal %>% + bind_rows(gewicht_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + + +# NAs vervangen voor soorten die overal nul zijn, maar niet wanneer aantallen of gewicht wel aanwezig zijn + +# afwezige_soorten <- +# intersect( +# aantallen %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names(), +# gewicht %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names()) +# +# soorten_replace <- +# as.list(rep(0, length(afwezige_soorten))) +# names(soorten_replace) <- afwezige_soorten +# +# aantallen <- +# aantallen %>% +# replace_na(soorten_replace) +# gewicht <- +# gewicht %>% +# replace_na(soorten_replace) + +``` + + +```{r wegschrijven-data} + +# filename <- "fuikdata_Zeeschelde_VLIZ" + +jaar_range <- + campagnes %>% + distinct(jaar) %>% + pull(jaar) %>% + range() + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) + +metadata <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_metadata.xlsx")) + +write_xlsx(list(locaties = locaties, + campagnes = campagnes, + aantallen = aantallen, + gewicht = gewicht, + metadata = metadata), + path = str_c(pad_data, filename, "_", str_c(jaar_range, collapse = "_"), ".xlsx")) + +``` + diff --git a/moneos_2024/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd b/moneos_2024/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd new file mode 100644 index 0000000..ac1a9f7 --- /dev/null +++ b/moneos_2024/090_vissen/21_moneos_visdata_ankerkuil_integratie.Rmd @@ -0,0 +1,670 @@ +--- +params: + hoofdstuk: "090_vissen" +title: "visdata ankerkuil" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(writexl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r variabelen} + +laatste_jaar <- as.numeric(jaar_moneos) - 1 +pad_data_historisch <- str_c(pad_prj_schelde, pad_moneos, as.numeric(jaar_moneos) - 1, "/", params$hoofdstuk, "/data/") + +locaties_name <- "ankerkuil_Zeeschelde_locaties" +metadata_name <- "ankerkuil_Zeeschelde_metadata" +filename <- "ankerkuil_Zeeschelde" + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/", locaties_name, ".xlsx")) %>% + mutate(locatiecode = as.character(locatiecode)) + +``` + + +```{r inlezen historische data} + +filename_historisch <- + list.files(path = pad_data_historisch, + pattern = "ankerkuil_Zeeschelde_VLIZ") + +campagnes_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "campagnes") + +aantal_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "aantallen") + +gewicht_historisch <- + read_xlsx(str_c(pad_data_historisch, filename_historisch), + sheet = "gewicht") + +``` + + +```{r inlezen recente data} + +data_recent <- + read_xlsx(str_c(pad_data, "ankerkuil_Zeeschelde_ruw_VIS_", + laatste_jaar, + ".xlsx"), + sheet = "data") + +(old_names <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam) %>% + arrange(Gebiedcode) %>% + pull(Gebiednaam)) + +gebieden <- + data_recent %>% + distinct(Gebiedcode, Gebiednaam, round(LambertX), round(LambertY)) %>% + arrange(Gebiedcode) + +locaties <- + locaties %>% + filter(locatiecode %in% gebieden$Gebiedcode) + +locatie_nrs <- locaties$locatiecode +locatie_namen <- locaties$locatie + +(gebieden <- + gebieden %>% + mutate(new_names = locatie_namen[order(locatie_nrs)])) + +level_key <- locatie_namen[order(locatie_nrs)] +names(level_key) <- old_names + +``` + + +```{r correcties soortnamen} + +# rename_vector_historisch <- +# c("chinese wolhandkrab" = "wolhandkrab") +rename_vector_historisch <- + c("gewone zwemkrab" = "zwemkrab") + +aantal_historisch <- + aantal_historisch %>% + rename(!!!rename_vector_historisch) +gewicht_historisch <- + gewicht_historisch %>% + rename(!!!rename_vector_historisch) + + +data_recent <- + data_recent %>% + mutate(Soort = case_match(Soort, + "blauwband" ~ "blauwbandgrondel", + "zandspiering" ~ "kleine zandspiering", + "klein zeepaardje" ~ "langsnuitzeepaardje", + "gewone steurgarnaal" ~ "steurgarnalen", + "steurgarnaal" ~ "steurgarnalen", + "grijze garnaal" ~ "grijze garnalen", + .default = Soort)) + +``` + + +```{r correctie gewicht met verdunningsfactor} + +data_recent <- + data_recent %>% + mutate(TAXONGEW = TAXONGEW*METI_DILUTION_FACTOR, + TAXONTOTGEW = TAXONTOTGEW*METI_DILUTION_FACTOR) + +``` + + +```{r controle dubbel gewicht in ruwe data} + +dubbel_gewicht <- + data_recent %>% + filter(!is.na(TAXONGEW) & !is.na(TAXONTOTGEW)) + +``` + + +```{r controle uniek aantal of gewicht in ruwe data} + +aantal_NA_of_0_ruw <- + data_recent %>% + filter(is.na(TAXONAANTAL) | + near(TAXONAANTAL, 0)) %>% + select("MetingPivotKey", "WaarnemingKey", "MetingID", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "uren", "volume", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") + +gewicht_NA_of_0_ruw <- + data_recent %>% + filter(if_all(c(TAXONGEW, TAXONTOTGEW), ~is.na(.)) | + if_all(c(TAXONGEW, TAXONTOTGEW), ~near(., 0))) %>% + select("MetingPivotKey", "WaarnemingKey", "MetingID", "WaarnemingID", "GebiedKey", "Gebiedcode", + "LambertX", "LambertY", "Gebiednaam", + "Begindatum", "Month", "Year", "MethodeKey", "Methodenaam", "Methodegroepcode", + "uren", "volume", + "TaxonKey", "Soort", + "TAXONAANTAL", "TAXONGEW", "TAXONTOTGEW", "TAXONLEN", "METI_DILUTION_FACTOR") + +soort_NA <- + gewicht_NA_of_0_ruw %>% + filter(TAXONAANTAL == 1) %>% + pull(Soort) %>% + unique() + +if (length(soort_NA) > 0) { + data_lengte <- + data_recent %>% + filter(Soort %in% soort_NA, + !is.na(TAXONLEN)) %>% + select(Soort, TAXONAANTAL, TAXONGEW, TAXONLEN) + + data_lengte %>% + ggplot(aes(TAXONLEN, TAXONGEW)) + + geom_point() + + geom_smooth(method = "lm") + + scale_x_log10() + + scale_y_log10() + + facet_wrap(~Soort) + + regressie_lengte <- + data_lengte %>% + group_by(Soort) %>% + summarise(int = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[1], + slope = coef(lm(log(TAXONGEW)~log(TAXONLEN)))[2]) %>% + ungroup() + + datum_soort <- + data_recent %>% + mutate(gewicht = if_else(is.na(TAXONGEW), + TAXONTOTGEW, TAXONGEW)) %>% + select(Gebiedcode, Gebiednaam, Begindatum, Soort, aantal = TAXONAANTAL, gewicht) %>% + filter(str_c(Gebiedcode, Begindatum, Soort) %in% unique(str_c(gewicht_NA_of_0_ruw$Gebiedcode, gewicht_NA_of_0_ruw$Begindatum, gewicht_NA_of_0_ruw$Soort))) %>% + drop_na() %>% + group_by(Gebiedcode, Gebiednaam, Begindatum, Soort) %>% + summarise(across(everything(), sum)) %>% + ungroup() + + +gewicht_NA <- + gewicht_NA_of_0_ruw %>% + select(MetingPivotKey, Gebiedcode, Gebiednaam, Begindatum, Month, Year, Methodenaam, + TaxonKey, Soort, TAXONAANTAL, TAXONGEW, TAXONTOTGEW, TAXONLEN) %>% + left_join(datum_soort) %>% + left_join(regressie_lengte) %>% + replace_na(list(aantal = 0, gewicht = 0)) %>% + mutate(prop_aantal = TAXONAANTAL/aantal, + gewicht_imputed = + case_when( + TAXONAANTAL > 1 ~ gewicht*prop_aantal, + TRUE ~ exp(int + slope*log(TAXONLEN)) + )) + +write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + # NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) +} + +``` + + +```{r toevoegen imputation aan ruwe data} + +if (length(soort_NA) > 0) { + keys <- gewicht_NA$MetingPivotKey + + dat_before <- + data_recent %>% + filter(MetingPivotKey %in% keys) + + for (k in keys) { + data_recent$TAXONGEW[data_recent$MetingPivotKey == k] <- + gewicht_NA$gewicht_imputed[gewicht_NA$MetingPivotKey == k] + } + + dat_after <- + data_recent %>% + filter(MetingPivotKey %in% keys) +} + +``` + + +```{r data per datum} + +data_per_datum <- + data_recent %>% + select(locatiecode = Gebiedcode, locatie = Gebiednaam, datum = Begindatum, + getijde = Methodenaam, uren, volume, + soort = Soort, aantal = TAXONAANTAL, gewicht_ind = TAXONGEW, gewicht_tot = TAXONTOTGEW, + temperatuur = ABME_TEMPERATUUR, zuurstof = ABME_ZUURSTOF, zuurstof_perc = ABME_ZUURSTOFPROCENT, + ph = ABME_PH, turbiditeit = ABME_TURBIDITEIT, conductiviteit = ABME_CONDUCTIVITEIT) %>% + mutate(locatie = recode(locatie, !!!level_key), + datum = date(datum), + jaar = year(datum), + maand = month(datum), + seizoen = + case_when( + maand %in% 3:5 ~ "voorjaar", + maand %in% 6:7 ~ "zomer", + maand %in% 8:10 ~ "najaar", + maand %in% 12:2 ~ "winter"), + getijde = str_remove(getijde, "Ankerkuil-"), + soort = str_to_lower(soort)) %>% + group_by(locatiecode, locatie, datum, jaar, maand, seizoen, getijde, uren, volume, soort) %>% + summarise(n = n(), + gewicht = sum(if_else(is.na(gewicht_ind), + gewicht_tot, gewicht_ind), + na.rm = FALSE), + aantal = sum(aantal, na.rm = FALSE), + across(c(temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit), + ~mean(., na.rm = TRUE)), + .groups = "drop") + +``` + + +```{r controle NA in aantal of gewicht in geaggregeerde data} + +dat_NA <- + data_per_datum %>% + filter(is.na(aantal) | is.na(gewicht)) + +``` + + +```{r controle ontbrekende campagnes} + +campagnes <- + data_per_datum %>% + select(locatie, jaar, maand, seizoen, getijde) %>% + distinct() +camp_tot <- + campagnes %>% + expand(locatie, jaar, seizoen, getijde) + +campagnes_ontbrekend <- + camp_tot %>% + anti_join(campagnes) + +campagnes_NA_or_0 <- + data_per_datum %>% + group_by(locatiecode, locatie, datum, jaar, seizoen, getijde, uren, volume) %>% + summarise(n = sum(n), aantal = sum(aantal, na.rm = TRUE), gewicht = sum(gewicht, na.rm = TRUE)) %>% + ungroup() %>% + arrange(datum, locatie, getijde) %>% + filter(if_any(.cols = everything(), .fns = ~is.na(.)) | + if_any(.cols = c(uren, volume), ~near(., 0))) + +``` + + +```{r controle uniek aantal of gewicht} + +uniek_aantal_of_gewicht <- + data_per_datum %>% + select(locatiecode, locatie, datum, jaar, maand, seizoen, getijde, uren, volume, soort, n, aantal, gewicht) %>% + arrange(datum, locatie, getijde) %>% + filter(if_any(c(aantal, gewicht), ~is.na(.)) | + (if_any(c(aantal, gewicht), ~near(., 0)) & !if_all(c(aantal, gewicht), ~near(., 0)))) + + +uniek_aantal_of_gewicht_vis <- + uniek_aantal_of_gewicht %>% + filter(!str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +uniek_aantal_of_gewicht_inv <- + uniek_aantal_of_gewicht %>% + filter(str_detect(str_to_lower(soort), "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + + +write_xlsx(list(#NA_aantal_of_gewicht = uniek_aantal_of_gewicht, + NA_aantal = aantal_NA_of_0_ruw, + NA_gewicht = gewicht_NA_of_0_ruw), + path = str_c(pad_data, "controle/controle_NA_aantal_of_gewicht_ankerkuil.xlsx")) + + +(uniek_aantal_of_gewicht_historisch <- + symdiff( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[is.na(.) | . > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[is.na(.) | . > 0] %>% + names())) + +``` + + +```{r vergelijking aanwezige soorten met historisch} + +(soorten_historisch_aanwezig <- + union( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. > 0] %>% + names()) %>% + sort()) + +(soorten_historisch_afwezig <- + intersect( + aantal_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names(), + gewicht_historisch %>% + select(-ID_afvissing) %>% + colSums(na.rm = TRUE) %>% + .[. == 0] %>% + names()) %>% + sort()) + +intersect(soorten_historisch_aanwezig, soorten_historisch_afwezig) +setdiff(aantal_historisch %>% + select(-ID_afvissing) %>% + names(), + union(soorten_historisch_aanwezig, soorten_historisch_afwezig)) + + +(soorten_recent_aanwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal > 0) %>% + pull(soort) %>% + sort()) + +(soorten_recent_afwezig <- + data_per_datum %>% + group_by(soort) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + filter(aantal == 0) %>% + pull(soort) %>% + sort()) + +intersect(soorten_recent_aanwezig, soorten_recent_afwezig) +setdiff(data_per_datum %>% + distinct(soort) %>% + pull(), + union(soorten_recent_aanwezig, soorten_recent_afwezig)) + + +(soorten_totaal_afwezig <- + setdiff(soorten_historisch_afwezig, soorten_recent_aanwezig) %>% + sort()) + +soorten_totaal_aanwezig <- + union(soorten_historisch_aanwezig, soorten_recent_aanwezig) %>% + sort() + +(soorten_totaal_aanwezig_invertebraten <- + soorten_totaal_aanwezig %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + sort()) + +(soorten_totaal_aanwezig_vis <- + setdiff(soorten_totaal_aanwezig, soorten_totaal_aanwezig_invertebraten) %>% + sort()) + +(soorten_totaal_aanwezig <- + c(soorten_totaal_aanwezig_vis, soorten_totaal_aanwezig_invertebraten)) + + +(soorten_totaal <- + union(soorten_totaal_aanwezig, soorten_totaal_afwezig) %>% + sort()) + +(unieke_soorten_historisch_aanwezig <- + setdiff(soorten_historisch_aanwezig, + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_historisch_totaal <- + setdiff(union(soorten_historisch_aanwezig, soorten_historisch_afwezig), + soorten_recent_aanwezig) %>% + sort()) + +(unieke_soorten_recent_aanwezig <- + setdiff(soorten_recent_aanwezig, + soorten_historisch_aanwezig) %>% + sort()) + +# haringachtigen <- +# data_per_datum %>% +# filter(soort %in% c("haring", "sprot", "haringachtigen")) +# +# grondel_sp <- +# data_per_datum %>% +# filter(soort == "grondel sp") +# +# zwemkrab <- +# data_per_datum %>% +# filter(str_detect(soort, "zwemkrab")) + +``` + + + + + + + + + + + + + + +```{r sheets finale data recent} + +campagnes_recent <- + data_per_datum %>% + select(locatie, datum, jaar, seizoen, getijde, uren, volume, + temperatuur, zuurstof, zuurstof_perc, ph, turbiditeit, conductiviteit) %>% + distinct() %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything()) %>% + arrange(ID_afvissing) + +aantallen_recent <- + data_per_datum %>% + select(locatie, datum, getijde, soort, aantal) %>% + pivot_wider(names_from = soort, + values_from = aantal, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum, -getijde) %>% + arrange(ID_afvissing) + +gewicht_recent <- + data_per_datum %>% + select(locatie, datum, getijde, soort, gewicht) %>% + pivot_wider(names_from = soort, + values_from = gewicht, + names_sort = TRUE, + values_fill = 0) %>% + arrange(datum, locatie) %>% + mutate(ID_afvissing = 1:n()) %>% + select(ID_afvissing, everything(), -locatie, -datum, -getijde) %>% + arrange(ID_afvissing) + +``` + + +```{r samenvoegen recent met historisch} + +aantal_historisch_finaal <- + aantal_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(aantal_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + +gewicht_historisch_finaal <- + gewicht_historisch %>% + .[,names(aantal_historisch) %in% c("ID_afvissing", soorten_historisch_aanwezig)] %>% + arrange(ID_afvissing) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_historisch), ncol = length(unieke_soorten_recent_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_recent_aanwezig)) + + +start_ID <- max(campagnes_historisch$ID_afvissing) + +campagnes_recent_finaal <- + campagnes_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) + +aantal_recent_finaal <- + aantallen_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(aantallen_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + +gewicht_recent_finaal <- + gewicht_recent %>% + mutate(ID_afvissing = ID_afvissing + start_ID) %>% + add_column(matrix(data = 0, nrow = nrow(gewicht_recent), ncol = length(unieke_soorten_historisch_aanwezig)) %>% + as_tibble() %>% + rename_at(., vars(names(.)), ~ unieke_soorten_historisch_aanwezig)) + + +soorten_order <- + soorten_totaal_aanwezig + +campagnes <- + campagnes_historisch %>% + bind_rows(campagnes_recent_finaal) %>% + mutate(datum = ymd(datum)) + + +aantallen <- + aantal_historisch_finaal %>% + bind_rows(aantal_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +gewicht <- + gewicht_historisch_finaal %>% + bind_rows(gewicht_recent_finaal) %>% + relocate(all_of(soorten_order), .after = ID_afvissing) + +# NAs vervangen voor soorten die overal nul zijn, maar niet wanneer aantallen of gewicht wel aanwezig zijn + +# afwezige_soorten <- +# intersect( +# aantallen %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names(), +# gewicht %>% +# select(-ID_afvissing) %>% +# colSums(na.rm = TRUE) %>% +# .[. == 0] %>% +# names()) +# +# soorten_replace <- +# as.list(rep(0, length(afwezige_soorten))) +# names(soorten_replace) <- afwezige_soorten +# +# aantallen <- +# aantallen %>% +# replace_na(soorten_replace) +# gewicht <- +# gewicht %>% +# replace_na(soorten_replace) + +``` + + +```{r wegschrijven data} + +filename <- "ankerkuil_Zeeschelde_VLIZ" + +jaar_range <- + campagnes %>% + distinct(jaar) %>% + pull(jaar) %>% + range() + +locaties <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) + +metadata <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_metadata.xlsx")) + +write_xlsx(list(locaties = locaties, + campagnes = campagnes, + aantallen = aantallen, + gewicht = gewicht, + metadata = metadata), + path = str_c(pad_data, filename, "_", str_c(jaar_range, collapse = "_"), ".xlsx")) + +``` + diff --git a/moneos_2024/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd b/moneos_2024/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd new file mode 100644 index 0000000..c8246c8 --- /dev/null +++ b/moneos_2024/090_vissen/30_visdata_fuiken_controle_EMSE.Rmd @@ -0,0 +1,190 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "visdata fuiken controle EMSE" +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(forcats) +library(readxl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) +# %>% +# select(-datum, -jaar, -maand) %>% +# group_by(locatie, OMES, EMSE_niveau3) %>% +# summarise(across(everything(), ~sum(., na.rm = TRUE))) %>% +# ungroup() + + +soorten <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + +fuiken_aantal_long <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + filter(!str_detect(soort, "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + left_join(soorten) + +``` + + +#### controle EMSE + +```{r EMSE} + +nieuwe_soorten <- + fuiken_aantal_long %>% + filter(is.na(fuiken)) %>% + distinct(soort, fuiken, ankerkuil) + +voorkomen <- + fuiken_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) + +soorten <- + soorten %>% + left_join(voorkomen %>% + select(soort, `N>0`)) + +# soorten %>% +# writexl::write_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + + +fuiken_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) %>% + ggplot(aes(fct_inorder(soort), `N>0`+0.1, fill = inEMSE)) + + geom_col() + + scale_y_log10() + + labs(x = "soort", + y = "aantal afvissingen waarbij N>0") + + theme_bw() + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# # filter(N_crit) %>% +# group_by(soort, inEMSE) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# filter(aantal > 0) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) +# +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# filter(N_crit) %>% +# group_by(soort, inEMSE) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# # filter(aantal >= 0.1) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) +# +# fuiken_aantal_long %>% +# group_by(soort, inEMSE) %>% +# # group_by(soort, inEMSE, jaar, seizoen, locatie) %>% +# mutate(N_crit = any(aantal > 1)) %>% +# ungroup() %>% +# filter(N_crit) %>% +# group_by(soort, inEMSE, jaar) %>% +# summarise(aantal = mean(aantal/fuikdagen, na.rm = TRUE)) %>% +# ungroup() %>% +# # filter(aantal >= 0.1) %>% +# arrange(aantal, soort) %>% +# ggplot(aes(fct_inorder(soort), aantal, fill = inEMSE)) + +# geom_col() + +# scale_y_log10() + +# facet_wrap("jaar", ncol = 1) + +# theme_bw() + +# theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +``` + diff --git a/moneos_2024/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd b/moneos_2024/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd new file mode 100644 index 0000000..cba4f24 --- /dev/null +++ b/moneos_2024/090_vissen/31_visdata_ankerkuil_controle_EMSE.Rmd @@ -0,0 +1,135 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "visdata ankerkuil controle EMSE" +output: word_document +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error = FALSE, warning = FALSE, message = FALSE, cache = FALSE) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(forcats) +library(readxl) + +library(inbodb) + +library(rprojroot) ## workaround pad + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} + +filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ") + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, uren, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +soorten <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx")) + +ankerkuil_aantal_long <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + filter(!str_detect(soort, "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + left_join(soorten) + +``` + + +#### controle EMSE + +```{r EMSE} + +nieuwe_soorten <- + ankerkuil_aantal_long %>% + filter(is.na(ankerkuil)) %>% + distinct(soort, fuiken, ankerkuil) + +voorkomen <- + ankerkuil_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) + +soorten <- + soorten %>% + left_join(voorkomen %>% + select(soort, `N>0`)) + +``` + + +```{r figuren vergelijking EMSE} + +ankerkuil_aantal_long %>% + group_by(jaar, seizoen, locatie, soort, inEMSE) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(soort, inEMSE) %>% + summarise(`N>0` = sum(aantal > 0, na.rm = TRUE)) %>% + ungroup() %>% + filter(`N>0` > 0) %>% + arrange(`N>0`, soort) %>% + ggplot(aes(fct_inorder(soort), `N>0`+0.1, fill = inEMSE)) + + geom_col() + + scale_y_log10() + + labs(x = "soort", + y = "aantal afvissingen waarbij N>0") + + theme_bw() + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1)) + +``` + diff --git a/moneos_2024/090_vissen/35_moneos_soorten_kleurcode.Rmd b/moneos_2024/090_vissen/35_moneos_soorten_kleurcode.Rmd new file mode 100644 index 0000000..5d7c3e7 --- /dev/null +++ b/moneos_2024/090_vissen/35_moneos_soorten_kleurcode.Rmd @@ -0,0 +1,956 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata fuiken" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +# pad_figuren <- maak_pad(params$hoofdstuk, "figuren/fuiken") +# pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/fuiken") + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone_fuiken <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie_fuiken <- levels(locatie_scheldezone_fuiken$locatie) + +locatie_scheldezone_ankerkuil <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie_ankerkuil <- levels(locatie_scheldezone_ankerkuil$locatie) + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + + +``` + +##### datasets voor aantal en gewicht: + +```{r data fuiken} + +(filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") %>% + .[str_detect(., "~\\$", negate = TRUE)]) + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +fuiken_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +data_fuiken <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + left_join(fuiken_gewicht %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r data ankerkuil} + +(filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ")) %>% + .[str_detect(., "~\\$", negate = TRUE)] + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +ankerkuil_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + + +data_ankerkuil <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + left_join(ankerkuil_gewicht %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie_ankerkuil)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r samenvoegen Zandvliet en Paardenschor} + +data_fuiken <- + data_fuiken %>% + mutate(locatie = + if_else(locatie == "Zandvliet", + "Paardenschor", + locatie)) + +``` + + +```{r optellen eb vloed per locatie & campagne} + +(groupvars <- + names(data_ankerkuil) %>% + setdiff(c("datum", "getijde", "volume", "aantal", "gewicht"))) + +# setdiff(names(data_ankerkuil), groupvars) + +data_ankerkuil <- + data_ankerkuil %>% + select(-datum, -getijde) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_ankerkuil %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r optellen datums per locatie & campagne} + +dupes_voor <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +groupvars <- + names(data_fuiken) %>% + setdiff(c("datum", "fuikdagen", "aantal", "gewicht")) + +data_fuiken <- + data_fuiken %>% + select(-datum) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +prop_lim <- 0.1 + +``` + + +```{r selectie data} + +data_fuiken <- + data_fuiken %>% + filter(!str_detect(soort, "hybride"), + seizoen != "winter") + +data_ankerkuil <- + data_ankerkuil %>% + filter(seizoen != "winter") + +``` + + +```{r enkel-vissen fuiken} + +soorten <- + data_fuiken %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis_fuiken <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_fuiken <- + data_fuiken %>% + filter(soort %in% soorten_vis_fuiken) + +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(fuiken)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis_fuiken) +# setdiff(soorten_vis_fuiken, soorten_fuiken_sheet) + +``` + + +```{r enkel-vissen ankerkuil} + +soorten <- + data_ankerkuil %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis_ankerkuil <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_ankerkuil <- + data_ankerkuil %>% + filter(soort %in% soorten_vis_ankerkuil) + + +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(ankerkuil)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis) +# setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r verschil soorten fuiken - ankerkuil} + +setdiff(soorten_vis_fuiken, soorten_vis_ankerkuil) +setdiff(soorten_vis_ankerkuil, soorten_vis_fuiken) + +``` + + +```{r aantal-en-gewicht-per-fuikdag} + +data_fuiken <- + data_fuiken %>% + mutate(aantal_per_fuikdag = aantal/fuikdagen, + gewicht_per_fuikdag = gewicht/fuikdagen) + +``` + + +```{r salgroep en dieet haringachtigen} + +soortenlijst %>% + filter(soort %in% c("haring", "sprot")) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep = if_else(soort == "haringachtigen", "mariene migranten", salgroep), + dieet = if_else(soort == "haringachtigen", "planktivoren", dieet)) + +``` + + +```{r aantal-en-gewicht-per-kub} + +data_ankerkuil <- + data_ankerkuil %>% + mutate(aantal_per_kub = aantal/volume, + gewicht_per_kub = gewicht/volume) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_fuiken %>% + distinct(salgroep) + +data_fuiken %>% + distinct(dieet) + +data_fuiken <- + data_fuiken %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_fuiken %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_fuiken %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_fuiken$indeling) +# levels(indeling_EMSE$indeling) + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_ankerkuil %>% + distinct(salgroep) + +data_ankerkuil %>% + distinct(dieet) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_ankerkuil %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_ankerkuil %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +``` + + +```{r soorten kleur} + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) + +(soorten_fuiken_1 <- + relatief_aantal_fuiken %>% + distinct(soort) %>% + filter(str_detect(soort, "rest", negate = TRUE)) %>% + pull()) + + +relatieve_aantallen_EMSE_fuiken <- + data_fuiken %>% + left_join(locatie_scheldezone_fuiken) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag), + relatief_gewicht = gewicht_per_fuikdag/sum(gewicht_per_fuikdag)) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() + +(soorten_fuiken_2 <- + relatieve_aantallen_EMSE_fuiken %>% + distinct(soort) %>% + filter(str_detect(soort, "rest", negate = TRUE)) %>% + pull()) + + +relatief_aantal_ankerkuil <- + data_ankerkuil %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim | relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +(soorten_ankerkuil_1 <- + relatief_aantal_ankerkuil %>% + distinct(soort) %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE)) %>% + pull()) + +relatieve_aantallen_EMSE_ankerkuil <- + data_ankerkuil %>% + left_join(locatie_scheldezone_ankerkuil) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub), + relatief_gewicht = gewicht_per_kub/sum(gewicht_per_kub)) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() + +(soorten_ankerkuil_2 <- + relatieve_aantallen_EMSE_ankerkuil %>% + distinct(soort) %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE)) %>% + pull()) + + +(soorten_kleur <- + soorten_fuiken_1 %>% + union(soorten_fuiken_2) %>% + union(soorten_ankerkuil_1) %>% + union(soorten_ankerkuil_2)) + + + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_fuiken_1 <- + relatief_aantal_fuiken %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatieve_aantallen_EMSE_fuiken <- + data_fuiken %>% + left_join(locatie_scheldezone_fuiken) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag), + relatief_gewicht = gewicht_per_fuikdag/sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_fuiken_2 <- + relatieve_aantallen_EMSE_fuiken %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatief_aantal_ankerkuil <- + data_ankerkuil %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_ankerkuil_1 <- + relatief_aantal_ankerkuil %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + +relatieve_aantallen_EMSE_ankerkuil <- + data_ankerkuil %>% + left_join(locatie_scheldezone_ankerkuil) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub), + relatief_gewicht = gewicht_per_kub/sum(gewicht_per_kub)) %>% + ungroup() %>% + group_by(soort) %>% + filter(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim)) %>% + summarise(aant = max(relatief_aantal), + gew = max(relatief_gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + summarise(max_rel = max(aant, gew)) %>% + ungroup() %>% + arrange(desc(max_rel)) + +(soorten_ankerkuil_2 <- + relatieve_aantallen_EMSE_ankerkuil %>% + filter(str_detect(soort, "haringachtigen|rest", negate = TRUE))) + + + +(soorten_vis <- + soorten_vis_fuiken %>% + union(soorten_vis_ankerkuil)) + + +(soorten_kleur <- + soorten_fuiken_1 %>% + union(soorten_fuiken_2) %>% + union(soorten_ankerkuil_1) %>% + union(soorten_ankerkuil_2) %>% + group_by(soort) %>% + summarise(across(everything(), max)) %>% + ungroup() %>% + arrange(desc(max_rel), soort)) + + +soorten_indeling_kleur <- + soorten_kleur %>% + left_join(soortenlijst %>% + filter(soort %in% soorten_kleur$soort) %>% + select(soort, salgroep, dieet)) %>% + mutate(pos = NA_integer_, + kleur = NA_character_) + +soorten_indeling_n <- + soorten_indeling_kleur %>% + count(salgroep, dieet) %>% + arrange(desc(n)) + +n_kleur <- nrow(soorten_kleur) + +save(soorten_indeling_kleur, file = str_c(pad_data, "soorten_kleur.RData")) + +``` + + +```{r test kleurcode, eval=FALSE} + +relatief_aantal_fuiken <- + data_fuiken %>% + filter(jaar == 2023) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie_fuiken)) + + +library(Polychrome) +swatch(kelly.colors(50)) +swatch(glasbey.colors(50)) +swatch(green.armytage.colors(50)) +swatch(palette36.colors(50)) +swatch(alphabet.colors(50)) +swatch(light.colors(50)) +swatch(dark.colors(50)) +swatch(sky.colors(50)) + +seed <- c("#ff0000", "#00ff00", "#0000ff") +mycolors <- createPalette(50, seed, prefix="mine") +swatch(mycolors) + +# n <- 3 +# seq(1,by=n,length.out=n_kleur)%%n_kleur+1 +# s <- 3 +for(s in 14:25) { + + # set.seed(s) + # set.seed(45) + + # n_rest <- n_kleur + # n_indeling <- nrow(soorten_indeling_n) + # serie <- 1:n_rest + # for (i in 1:n_indeling) { + # if (i < n_indeling) { + # # strt <- min(serie) + # lng <- soorten_indeling_n[i,]$n + # sq <- seq(1, by = n_rest%/%lng, length.out = lng) + # sel <- serie[sq] + # if (lng > 1) + # sel <- sample(sel) + # serie <- + # setdiff(serie, sel) + # n_rest <- length(serie) + # } else { + # sel <- serie + # } + # soorten_indeling_kleur[soorten_indeling_kleur$salgroep == soorten_indeling_n[i, ]$salgroep & + # soorten_indeling_kleur$dieet == soorten_indeling_n[i,]$dieet, "pos"] <- sel + # print(sel) + # } + + # s <- 14 + + + sq <- seq(1,by=s,length.out=n_kleur)%%(n_kleur+1) + lm <- n_kleur-((s-1)%%(s)) + sq[sq<=lm] <- sq[sq<=lm] + 1 + # sort(sq) + + soorten_indeling_kleur$pos <- sq + + + seed <- c("#ff6000", "#0a6f00", "#000fff") + soorten_indeling_kleur$kleur <- + # wes_palette("Darjeeling1", + # type = "continuous", + # n = n_kleur) %>% + # scales::pal_hue()(n_kleur) %>% + createPalette(n_kleur, seed) + # %>% + # unname() + # %>% + # .[soorten_indeling_kleur$pos] + + # swatch(createPalette(n_kleur, seed)) + + # my_pal_wes <- + # c(wes_palette("Darjeeling1", + # type = "continuous", + # n = length(soorten_kleur)) %>% + # unname() %>% + # sample(), + # "azure", + # "darkslategrey") + # names(my_pal_wes) <- + # c(soorten_kleur, "haringachtigen", "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + + the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_fuiken$soort)] + + pl <- + relatief_aantal_fuiken %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(title = str_c("seed = ", s), + x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + print(pl) + +} + + +for(s in 76) { + + set.seed(s) + + my_pal_wes <- + c(wes_palette("Darjeeling1", + type = "continuous", + n = length(soorten_kleur)) %>% + unname() %>% + sample(), + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_kleur, "haringachtigen", "rest") + + the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_ankerkuil$soort)] + + pl <- + relatief_aantal_fuiken %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(title = str_c("seed = ", s), + x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + print(pl) + +} + +``` + diff --git a/moneos_2024/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd b/moneos_2024/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd new file mode 100644 index 0000000..2017d2e --- /dev/null +++ b/moneos_2024/090_vissen/40_moneos_analyse_fuiken_EMSE.Rmd @@ -0,0 +1,2128 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata fuiken" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren/fuiken") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/fuiken") + +``` + + +```{r excel sheets} + +sheets <- NULL +sheets_figuren <- NULL + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone <- + read_xlsx(str_c(pad_data, "metadata VLIZ/fuikvangsten_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie <- levels(locatie_scheldezone$locatie) + +levels_seizoen_locatie <- + sapply(c("voorjaar", "zomer", "najaar"), + function(x) paste(x, levels_locatie, sep = "_")) %>% + c() + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +# levels_scheldezone_refactor <- c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +``` + +##### datasets voor aantal en gewicht: + +```{r inlezen-data} + +filename <- + list.files(path = pad_data, + pattern = "fuikdata_Zeeschelde_VLIZ") %>% + .[str_detect(., "~\\$", negate = TRUE)] + +fuiken_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +fuiken_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, fuikdagen) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + +data_fuiken <- + fuiken_aantal %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "aantal") %>% + left_join(fuiken_gewicht %>% + pivot_longer(cols = -(locatie:fuikdagen), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-opmerking)) + +``` + + +```{r check meerdere datums per locatie en seizoen} + +campagne_dupes <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + # select(-datum) %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r samenvoegen Zandvliet en Paardenschor} + +data_fuiken <- + data_fuiken %>% + mutate(locatie = + if_else(locatie == "Zandvliet", + "Paardenschor", + locatie)) + +``` + + +```{r optellen datums per locatie & campagne} + +dupes_voor <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +groupvars <- + names(data_fuiken) %>% + setdiff(c("datum", "fuikdagen", "aantal", "gewicht")) + +data_fuiken <- + data_fuiken %>% + select(-datum) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_fuiken %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +vroegste_jaar <- + data_fuiken %>% + pull(jaar) %>% + min() + +laatste_jaar <- + data_fuiken %>% + pull(jaar) %>% + max() + +prop_lim <- 0.1 +mult_fuik <- 1 + + +get_lab_aantal <- + function() { + if (mult_fuik > 1) + lab <- expr(paste("gem. aantal ind. / ", !!mult_fuik, "fuikdagen")) + else + lab <- expr(paste("gem. aantal ind. / fuikdag")) + lab + } + +get_lab_gewicht <- + function() { + if (mult_fuik > 1) + lab <- expr(paste("gem. biomassa [g/", !!mult_fuik, "fuikdagen]")) + else + lab <- expr(paste("gem. biomassa [g/fuikdag]")) + lab + } + +``` + + +```{r selectie data} + +data_fuiken <- + data_fuiken %>% + filter(!str_detect(soort, "hybride"), + seizoen != "winter") + +``` + + +```{r kleurcodes soorten} + +load(file = str_c(pad_data, "soorten_kleur.RData")) + +# set.seed(58) +# set.seed(61) +# set.seed(73) +# set.seed(76) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(soorten_kleur)) %>% +# unname() %>% +# sample(), +# "darkslategrey") +# names(my_pal_wes) <- +# c(soorten_kleur, "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + +``` + + +```{r enkel-vissen} + +soorten <- + data_fuiken %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_fuiken <- + data_fuiken %>% + filter(soort %in% soorten_vis) + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) + +soorten_fuiken_sheet <- + soortenlijst %>% + filter(!is.na(fuiken)) %>% + pull(soort) + +setdiff(soorten_fuiken_sheet, soorten_vis) +setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r aantal-en-gewicht-per-fuikdag} + +data_fuiken <- + data_fuiken %>% + mutate(aantal_per_fuikdag = aantal/fuikdagen, + gewicht_per_fuikdag = gewicht/fuikdagen) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_fuiken %>% + distinct(salgroep) + +data_fuiken %>% + distinct(dieet) + +data_fuiken <- + data_fuiken %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_fuiken %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_fuiken %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_fuiken$indeling) +# levels(indeling_EMSE$indeling) + +``` + +#### relatie aantal - gewicht + +```{r relatie-aantal-gewicht, eval = FALSE} + +# data_fuiken %>% +# ggplot(aes(aantal, gewicht)) + +# geom_point() + +# geom_smooth(span = 10, se = FALSE) + +# facet_wrap(~soort, +# scales = "free", +# ncol = 5) + +data_fuiken %>% + ggplot(aes(aantal + 1, gewicht + 1)) + + geom_point() + + geom_smooth(span = 10, se = FALSE) + + scale_x_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + scale_y_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + labs(x = "aantal", + y = "gewicht") + + facet_wrap(~soort, + scales = "free", + ncol = 8) + +# # ggsave(paste0(pad_figuren, "relatie_aantal_gewicht.jpg")) + +``` + + +#### aantal soorten + +```{r aantal-soorten} + +aantal_soorten_seizoen_locatie <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_seizoen_locatie %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 3, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + # guides(fill="none", + # color = "none") + + facet_grid(seizoen ~ locatie) + + theme(strip.text = element_text(size = 12)) + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8) + + +aantal_soorten_seizoen <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, seizoen) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + mutate(seizoen = "totaal over seizoenen")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen"))) + +aantal_soorten_seizoen %>% + ggplot(aes(seizoen, soorten, fill = ordered(jaar), color = ordered(jaar))) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + alpha = 0.8) + + geom_text(aes(y = soorten + 1, label = soorten), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5) + + +aantal_soorten_locatie <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, locatie) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + left_join(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten_tot")) %>% + bind_rows(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + mutate(locatie = "totaal over locaties") %>% + left_join(data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten_tot") %>% + mutate(locatie = "totaal over locaties"))) %>% + mutate(locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_locatie %>% + ggplot(aes(locatie, soorten_gem, group = jaar)) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1) + + geom_col(aes(y = soorten_tot, fill = ordered(jaar), color = ordered(jaar)), + position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1, + alpha = 0.75) + + geom_text(aes(y = soorten_tot + 1, label = soorten_tot), + position = position_dodge(width = 0.8), + size = 1.5, color = "steelblue4", fontface = "bold") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5) + + +aantal_soorten_totaal <- + data_fuiken %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") + +aantal_soorten_totaal %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 2, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + guides(fill="none", + color = "none") + +ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4) + + +sheets_figuren[["aantal_soorten_seizoen_locatie"]] <- + aantal_soorten_seizoen_locatie %>% + pivot_wider(id_cols = c(jaar, seizoen), + names_from = locatie, + values_from = soorten) + +sheets_figuren[["aantal_soorten_seizoen"]] <- + aantal_soorten_seizoen %>% + pivot_wider(id_cols = c(jaar), + names_from = seizoen, + values_from = soorten) + +sheets_figuren[["aantal_soorten_locatie"]] <- + aantal_soorten_locatie +# %>% +# pivot_wider(id_cols = c(jaar), +# names_from = locatie, +# values_from = soorten) + +sheets_figuren[["aantal_soorten_totaal"]] <- + aantal_soorten_totaal + +``` + + +```{r overzicht-aantal-soorten} + +tabel_aantal_soorten <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, locatie, soort) %>% + count(seizoen, locatie, name = "soorten") %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(locatie, soort) %>% + count(locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, soort) %>% + count(seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + count(name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) %>% + pivot_wider(id_cols = locatie, names_from = seizoen, values_from = soorten) %>% + arrange(locatie) + +knitr::kable(tabel_aantal_soorten) + +sheets[["aantal_soorten"]] <- tabel_aantal_soorten + +``` + + +#### overzicht gevangen soorten + +```{r overzicht-gevangen-soorten} + +tabel_gevangen_soorten <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + mutate(seizoen_locatie = factor(paste(seizoen, locatie, sep = "_"), + levels = levels_seizoen_locatie)) %>% + select(seizoen_locatie, soort) %>% + mutate(aanwezig = "x") %>% + pivot_wider(id_cols = soort, + names_from = seizoen_locatie, + values_from = aanwezig, + values_fill = "") %>% + select(soort, all_of(levels_seizoen_locatie[str_detect(levels_seizoen_locatie, "Zandvliet", negate = TRUE)])) + +knitr::kable(tabel_gevangen_soorten) + +sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten + +``` + +#### nieuwe soorten + +```{r nieuwe soorten} + +(soorten_historisch <- + data_fuiken %>% + filter(jaar != laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_recent <- + data_fuiken %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_nieuw <- + setdiff(soorten_recent, soorten_historisch)) + +data_soorten_nieuw <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(jaar == laatste_jaar, + aantal > 0, + soort %in% soorten_nieuw) + +if (nrow(data_soorten_nieuw) > 0) { + data_soorten_nieuw %>% + ggplot(aes(seizoen, aantal)) + + geom_col(aes(fill = soort)) + + facet_wrap(~locatie) +} + +sheets[["nieuwe_soorten"]] <- + data_soorten_nieuw %>% + select(locatie, OMES, EMSE_niveau3, jaar, seizoen, soort, wetensch_naam, salgroep, dieet, + fuikdagen, aantal, gewicht, aantal_per_fuikdag, gewicht_per_fuikdag) + +``` + +#### relatief aantal gevangen individuen + +```{r relatief aantal gevangen individuen laatste jaar, fig.height=6, fig.width=6} + +relatief_aantal_laatste_jaar <- + data_fuiken %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + mutate(soort2 = + case_when( + any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + TRUE ~ "rest" + )) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie)) + + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_aantal_laatste_jaar %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + color = "white", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start = 0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(str_c(pad_figuren, "relatief_aantal_gevangen_individuen.jpg"), width = 6, height = 8) + +``` + + +#### relatieve biomassa gevangen individuen + +```{r relatieve-biomassa-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_gewicht_laatste_jaar <- + data_fuiken %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal = aantal/sum(aantal), + relatief_gewicht = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + # mutate(soort2 = ifelse(any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim), soort, "rest")) %>% + mutate(soort2 = + case_when( + any(relatief_aantal >= prop_lim | relatief_gewicht >= prop_lim) ~ soort, + TRUE ~ "rest" + )) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(gewicht = sum(gewicht)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + gewicht = round(gewicht/sum(gewicht)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + locatie = factor(locatie, levels = levels_locatie)) + + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_gewicht_laatste_jaar %>% + mutate(gewicht = if_else(gewicht == 0, NA_real_, gewicht)) %>% + ggplot(aes(x ="", y = gewicht, fill = soort)) + + geom_col(position = "fill", color = "grey60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = gewicht, size = gewicht), + color = "white", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg"), width = 6, height = 8) + +``` + + +```{r tabellen relatief aantal en gewicht laatste jaar} + +sheets_figuren[["relatief_aantal_laatste_jaar"]] <- + relatief_aantal_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = aantal) + +sheets_figuren[["relatief_gewicht_laatste_jaar"]] <- + relatief_gewicht_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = gewicht) + +``` + + +#### diversiteit EMSE + +```{r diversiteit EMSE} + +gemiddeld_diversiteit_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + # add_row(tibble(N = NA, H_sh = NA, H_gs = NA, D_sh = NA, D_gs = NA, + # salgroep = "diadrome soorten", + # indeling = "Diadr -- Benth", + # jaar = vroegste_jaar:laatste_jaar) %>% + # expand_grid(scheldezone = c("SG", "OH", "ZL", "ZK"))) %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "estuariene soorten en mariene migranten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "diadrome soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6) + + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "zoetwater soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6) + +``` + + +#### aantallen en biomassa EMSE per soort + +```{r relatie soortaantallen vs totale aantallen} + +relatieve_aantallen_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r alternatief 2} + +prop_lim_alt <- 0.2 + +relatieve_aantallen_EMSE_alt <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim_alt, + max_gewicht = relatief_gewicht >= prop_lim_alt) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# relatieve_aantallen_EMSE %>% +# filter(scheldezone == "saliniteitsgradient") %>% +# ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + +# geom_col(width = 0.7, +# alpha = 0.9, +# size = 0.1) + +# scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + +# scale_fill_manual(values = my_pal_wes, na.translate = F) + +# scale_color_manual(values = my_pal_wes, na.translate = F) + +# labs(title = "saliniteitsgradient", +# y = get_lab_aantal()) + +# guides(color = guide_legend(ncol=2), +# fill = guide_legend(ncol=2)) + +# facet_grid(dieet ~ salgroep, scales = "free_y") + +# theme(#legend.position = "none", +# axis.text = element_text(size = 8)) + + +data_split <- + relatieve_aantallen_EMSE_alt %>% + mutate(soort = str_replace(soort, "grondel", "gr.")) %>% + mutate(soort = str_replace(soort, "kleine", "kl.")) %>% + mutate(soort = str_replace(soort, "grote", "gr.")) %>% + mutate(soort = str_replace(soort, "driedoornige", "dried.")) %>% + mutate(soort = str_replace(soort, "tiendoornige", "tiend.")) %>% + mutate(soort = str_replace(soort, "steur", "st.")) %>% + mutate(soort = str_replace(soort, "europese meerval", "meerval")) %>% + group_by(indeling) %>% + nest() + + + +my_pal_wes_kort <- my_pal_wes +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grondel", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "kleine", "kl.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "grote", "gr.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "driedoornige", "dried.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "tiendoornige", "tiend.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "steur", "st.") +names(my_pal_wes_kort) <- str_replace(names(my_pal_wes_kort), "europese meerval", "meerval") + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes_kort[names(my_pal_wes_kort) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(breaks = names(pal_split), values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=6)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.text = element_text(size = 8), + legend.title = element_text(size = 9), + legend.key.size = unit(0.8, "lines")) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE_alt %>% + filter(scheldezone == "saliniteitsgradient") %>% + mutate(salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes, na.translate = F) + + scale_color_manual(values = my_pal_wes, na.translate = F) + + labs(title = "saliniteitsgradient", + y = get_lab_aantal()) + + # guides(color = guide_legend(ncol=2), + # fill = guide_legend(ncol=2)) + + facet_grid(dieet ~ salgroep, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + byrow = FALSE + # , + # align = "v" + , nrow = 4 + ), + NULL, + ncol = 1, rel_heights = c(0.11,1,0.07)), + ncol = 3, rel_widths = c(1.2,0.02,0.9)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_saliniteitsgradient.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r relatie soortbiomassa vs totale biomassa} + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "zoetwater soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r tabellen aantallen gewicht en diversiteit EMSE} + +sheets_figuren[["aantallen_en_gewichten_EMSE"]] <- + relatieve_aantallen_EMSE %>% + select(jaar, scheldezone, soort, salgroep, dieet, indeling, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["diversiteit_EMSE"]] <- + gemiddeld_diversiteit_EMSE %>% + select(jaar, scheldezone, salgroep, dieet, indeling, + N, D_sh) + +``` + + +#### sleutelsoorten EMSE + +```{r data sleutelsoorten} + +data_sleutelsoorten_EMSE <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(soort %in% sleutelsoorten_EMSE$soort) %>% + left_join(sleutelsoorten_EMSE %>% select(soort, scheldezone_rap = scheldezone)) %>% + # filter(map2_lgl(scheldezone_rap, scheldezone, ~str_detect(.x, .y))) %>% + group_by(jaar, soort, salgroep, scheldezone) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +sheets_figuren[["sleutelsoorten_EMSE"]] <- + data_sleutelsoorten_EMSE + +``` + + +```{r sleutelsoorten aantal} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + +```{r sleutelsoorten biomassa} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_gewicht()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "biomassa_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + + + +#### aantallen en biomassa per saliniteit en dieet + +```{r aantallen en biomassa per salgroep} + +relatieve_aantallen_salgroep <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +data_split <- + relatieve_aantallen_salgroep %>% + group_by(salgroep) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(salgroep, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=6)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 15, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 15, height = 8, bg = "white") + +``` + + +```{r aantallen en biomassa per dieet} + +relatieve_aantallen_dieet <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag), + gewicht_per_fuikdag = mean(gewicht_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(aantal_per_fuikdag_tot = sum(aantal_per_fuikdag), + gewicht_per_fuikdag_tot = sum(gewicht_per_fuikdag)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag_tot = mean(aantal_per_fuikdag_tot), + gewicht_per_fuikdag_tot = mean(gewicht_per_fuikdag_tot), + aantal_per_fuikdag = sum(aantal_per_fuikdag), + gewicht_per_fuikdag = sum(gewicht_per_fuikdag), + relatief_aantal = aantal_per_fuikdag/aantal_per_fuikdag_tot, + relatief_gewicht = gewicht_per_fuikdag/gewicht_per_fuikdag_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +data_split <- + relatieve_aantallen_dieet %>% + group_by(dieet) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(dieet, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=5)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, aantal_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, gewicht_per_fuikdag*mult_fuik, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") + +``` + + +#### diversiteit per saliniteit en dieet + +```{r diversiteit per salgroep} + +gemiddeld_diversiteit_salgroep <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +gemiddeld_diversiteit_salgroep %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) + +``` + + +```{r diversiteit per dieet} + +gemiddeld_diversiteit_dieet <- + data_fuiken %>% + left_join(locatie_scheldezone) %>% + filter(aantal > 0, + !is.na(dieet)) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_fuikdag = mean(aantal_per_fuikdag)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(relatief_aantal = aantal_per_fuikdag/sum(aantal_per_fuikdag)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +gemiddeld_diversiteit_dieet %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) + +``` + + +```{r tabellen per saliniteit en dieet} + +sheets_figuren[["aantallen_en_gewichten_salgroep"]] <- + relatieve_aantallen_salgroep %>% + select(jaar, scheldezone, soort, salgroep, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["aantallen_en_gewichten_dieet"]] <- + relatieve_aantallen_dieet %>% + select(jaar, scheldezone, soort, dieet, + relatief_aantal, aantal_per_fuikdag, relatief_gewicht, gewicht_per_fuikdag) + +sheets_figuren[["diversieit_salgroep"]] <- + gemiddeld_diversiteit_salgroep %>% + select(jaar, scheldezone, salgroep, + N, D_sh) + +sheets_figuren[["diversieit_dieet"]] <- + gemiddeld_diversiteit_dieet %>% + select(jaar, scheldezone, dieet, + N, D_sh) + +``` + + +#### wegschrijven tabellen en metadata + +```{r wegschrijven tabellen} + +write_xlsx(sheets, + paste0(pad_tabellen, "tabellen_vissen.xlsx")) + +write_xlsx(sheets_figuren, + paste0(pad_tabellen, "tabellen_figuren.xlsx")) + +``` + + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_jaar = vroegste_jaar, + laatste_jaar = laatste_jaar, + aantal_soorten = + data_fuiken %>% + filter(!is.na(aantal), + aantal > 0) %>% + distinct(soort) %>% + nrow(), + aantal_soorten_laatste_jaar = + data_fuiken %>% + filter(!is.na(aantal), + aantal > 0, + jaar == laatste_jaar) %>% + distinct(soort) %>% + nrow()), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "fuiken_meta_data.csv"), + delim = ";") + +``` diff --git a/moneos_2024/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd b/moneos_2024/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd new file mode 100644 index 0000000..d02d30d --- /dev/null +++ b/moneos_2024/090_vissen/41_moneos_analyse_ankerkuil_EMSE.Rmd @@ -0,0 +1,1943 @@ +--- +params: + hoofdstuk: "090_vissen" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "analyse visdata ankerkuil" +output: word_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(lubridate) +library(janitor) +library(readxl) +library(writexl) +# library(yarrr) +library(wesanderson) +library(gridExtra) +library(cowplot) + +library(INBOtheme) +library(inbodb) + +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren/ankerkuil") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen/ankerkuil") + +``` + + +```{r excel sheets} + +sheets <- NULL +sheets_figuren <- NULL + +``` + + +```{r EMSE tabellen} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), sheet = "EMSE") + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +# func_groepen_EMSE <- +# read_xlsx(str_c(pad_data, "functionele groepen.xlsx")) %>% +# mutate(Soort = str_to_lower(Soort)) + +levels_indeling <- + c("Mar/Est -- Benth", "Mar/Est -- Omn", "Mar/Est -- Pisc", "Mar/Est -- Plankt", + "Diadr -- Benth", "Diadr -- Omn", "Diadr -- Pisc", "Diadr -- Plankt", + "Zoetw -- Benth", "Zoetw -- Omn", "Zoetw -- Pisc", "Zoetw -- Plankt") + +locatie_scheldezone <- + read_xlsx(str_c(pad_data, "metadata VLIZ/ankerkuil_Zeeschelde_locaties.xlsx")) %>% + mutate(locatie = factor(locatie, levels = locatie[order(Y, decreasing = TRUE)])) %>% + select(locatie, scheldezone_full = EMSE_niveau3) %>% + mutate(scheldezone_full = str_remove(scheldezone_full, " verblijf"), + scheldezone = + case_when( + scheldezone_full == "saliniteitsgradient" ~ "SG", + scheldezone_full == "oligohalien" ~ "OH", + scheldezone_full == "zoet lang" ~ "ZL", + scheldezone_full == "zoet kort" ~ "ZK")) + +levels_locatie <- levels(locatie_scheldezone$locatie) + +levels_seizoen_locatie <- + sapply(c("voorjaar", "zomer", "najaar"), + function(x) paste(x, levels_locatie, sep = "_")) %>% + c() + +levels_scheldezone <- + c("SG", "OH", "ZL", "ZK") + +levels_scheldezone_full <- + c(SG = "saliniteitsgradient", OH = "oligohalien", ZL = "zoet lang", ZK = "zoet kort") + +``` + +##### datasets voor aantal en gewicht: + +```{r inlezen-data} + +(filename <- + list.files(path = pad_data, + pattern = "ankerkuil_Zeeschelde_VLIZ")) %>% + .[str_detect(., "~\\$", negate = TRUE)] + +ankerkuil_aantal <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "aantallen")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + +ankerkuil_gewicht <- + read_xlsx(str_c(pad_data, filename), + sheet = "campagnes") %>% + select(ID_afvissing, locatie, datum, jaar, seizoen, getijde, volume) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "locaties") %>% + select(locatie, OMES, EMSE_niveau3)) %>% + left_join(read_xlsx(str_c(pad_data, filename), + sheet = "gewicht")) %>% + select(-ID_afvissing) %>% + select(locatie, OMES, EMSE_niveau3, datum, jaar, seizoen, everything()) + + + +data_ankerkuil <- + ankerkuil_aantal %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "aantal") %>% + left_join(ankerkuil_gewicht %>% + pivot_longer(cols = -(locatie:volume), + names_to = "soort", + values_to = "gewicht")) %>% + mutate(gewicht = if_else(aantal == 0, 0, gewicht), + seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter")), + locatie = factor(locatie, levels = levels_locatie)) %>% + group_by(soort) %>% + mutate(anyN = any(aantal > 0)) %>% + ungroup() %>% + filter(anyN) %>% + select(-anyN) %>% + left_join(soortenlijst %>% + select(-inEMSE, -fuiken, -ankerkuil, -opmerking)) + +``` + + +```{r check eb vloed per locatie en seizoen} + +campagne_dupes <- + data_ankerkuil %>% + select(locatie:getijde) %>% + distinct() %>% + # select(-datum) %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r optellen eb vloed per locatie & campagne} + +(groupvars <- + names(data_ankerkuil) %>% + setdiff(c("datum", "getijde", "volume", "aantal", "gewicht"))) + +# setdiff(names(data_ankerkuil), groupvars) + +data_ankerkuil <- + data_ankerkuil %>% + select(-datum, -getijde) %>% + group_by(across(all_of(groupvars))) %>% + summarise(across(everything(), sum)) %>% + ungroup() + +dupes_na <- + data_ankerkuil %>% + select(locatie:seizoen) %>% + distinct() %>% + get_dupes(locatie, jaar, seizoen) + +``` + + +```{r variabelen & functies} + +vroegste_jaar <- + data_ankerkuil %>% + pull(jaar) %>% + min() + +laatste_jaar <- + data_ankerkuil %>% + pull(jaar) %>% + max() + +mult_kub <- 1000 +prop_lim <- 0.1 + + +get_lab_aantal <- + function() { + if (mult_kub > 1) + lab <- expr(paste("gem. aantal ind. / ", !!mult_kub, m^3)) + else + lab <- expr(paste("gem. aantal ind. / ", m^3)) + lab + } + +get_lab_gewicht <- + function() { + if (mult_kub > 1) + lab <- expr(paste("gem. biomassa [g/", !!mult_kub, m^3, "]")) + else + lab <- expr(paste("gem. biomassa [g/", m^3, "]")) + lab + } + +# get_lab_aantal() +# get_lab_gewicht() + +``` + + +```{r selectie data} + +data_ankerkuil <- + data_ankerkuil %>% + filter(seizoen != "winter") + +``` + + +```{r kleurcodes soorten} + +load(file = str_c(pad_data, "soorten_kleur.RData")) +# load(file = str_c("G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dUVZJLVE1U2RobWs/INBODATA/PROJECTEN/PRJ_SCHELDE/VNSC/Rapportage_INBO/2023/090_vissen/data/", "soorten_kleur.RData")) + +# set.seed(58) +# set.seed(61) +# set.seed(73) +# set.seed(76) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(soorten_kleur)) %>% +# unname() %>% +# sample(), +# "darkslategrey") +# names(my_pal_wes) <- +# c(soorten_kleur, "rest") + + + my_pal_wes <- + c(soorten_indeling_kleur$kleur, + "azure", + "darkslategrey") + names(my_pal_wes) <- + c(soorten_indeling_kleur$soort, "haringachtigen", "rest") + +``` + + +```{r enkel-vissen} + +soorten <- + data_ankerkuil %>% + distinct(soort) %>% + pull(soort) + +# soorten_invertebraten <- +# c("wolhandkrab", "grijze garnalen", "steurgarnalen", "gammarus", "noordzeekrab", "japanse steurgarnaal", "penseelkrab") + +soorten_invertebraten <- + soorten %>% + keep(~ str_detect(., "garnaal|garnalen|gammarus|krab|kreeft|inktvis|octopus|zeekat")) + +soorten_vis <- + setdiff(soorten, soorten_invertebraten) %>% + {.[order(.)]} + +data_ankerkuil <- + data_ankerkuil %>% + filter(soort %in% soorten_vis) + + +# soortenlijst <- +# read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), +# sheet = "EMSE") %>% +# select(-inEMSE, -exoot, -opmerking) +# +# soorten_fuiken_sheet <- +# soortenlijst %>% +# filter(!is.na(ankerkuil)) %>% +# pull(soort) +# +# setdiff(soorten_fuiken_sheet, soorten_vis) +# setdiff(soorten_vis, soorten_fuiken_sheet) + +``` + + +```{r salgroep en dieet haringachtigen} + +soortenlijst %>% + filter(soort %in% c("haring", "sprot")) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep = if_else(soort == "haringachtigen", "mariene migranten", salgroep), + dieet = if_else(soort == "haringachtigen", "planktivoren", dieet)) + +``` + + +```{r aantal-en-gewicht-per-kub} + +data_ankerkuil <- + data_ankerkuil %>% + mutate(aantal_per_kub = aantal/volume, + gewicht_per_kub = gewicht/volume) + +``` + + +```{r indeling EMSE rapportage} + +indeling_EMSE_full <- + expand_grid(nesting(salgroep = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"), + sal_kort = c("Mar/Est", "Diadr", "Zoetw")), + nesting(dieet = c("benthivoren", "omnivoren", "planktivoren", "piscivoren"), + dieet_kort = c("Benth", "Omn", "Plankt", "Pisc"))) %>% + mutate(indeling = str_c(sal_kort, dieet_kort, sep = " -- ")) + +data_ankerkuil %>% + distinct(salgroep) + +data_ankerkuil %>% + distinct(dieet) + +data_ankerkuil <- + data_ankerkuil %>% + mutate(salgroep_detail = salgroep, + salgroep = case_when( + salgroep_detail %in% c("mariene migranten", "mariene dwaalgasten", "estuarien residenten") ~ "mariene en estuariene soorten", + salgroep_detail %in% c("diadromen") ~ "diadrome soorten", + salgroep_detail %in% c("zoetwatersoorten") ~ "zoetwatersoorten" + )) %>% + left_join(indeling_EMSE_full) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + in_indeling = !is.na(indeling)) %>% + left_join(sleutelsoorten_EMSE %>% select(-scheldezone) %>% rename(indeling_SL = indeling)) + +indeling_EMSE_soort <- + data_ankerkuil %>% + distinct(soort, salgroep, dieet, in_indeling, indeling, indeling_SL) + +indeling_EMSE_groep <- + data_ankerkuil %>% + distinct(salgroep, dieet, indeling) + +indeling_EMSE_missing <- + indeling_EMSE_full %>% + select(salgroep, dieet, indeling) %>% + anti_join(indeling_EMSE_groep) + +# levels(data_ankerkuil$indeling) +# levels(indeling_EMSE$indeling) + +``` + + +```{r exclusie soorten} + +soorten_niet_in_aantal <- + c("grondel sp", "haringachtigen") + +soorten_niet_in_funcgroep <- + c("grondel sp") + +``` + + +#### relatie aantal - gewicht + +```{r relatie-aantal-gewicht, eval = FALSE} + +data_ankerkuil %>% + ggplot(aes(aantal + 1, gewicht + 1)) + + geom_point() + + geom_smooth(span = 10, se = FALSE) + + scale_x_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + scale_y_log10(breaks = c(0,1,10,100,1000,10000,100000,1000000,10000000) + 1, labels = function(x) x-1) + + labs(x = "aantal", + y = "gewicht") + + facet_wrap(~soort, + scales = "free", + ncol = 8) + +# # ggsave(paste0(pad_figuren, "relatie_aantal_gewicht.jpg")) + +``` + + +#### aantal soorten + +```{r aantal-soorten} + +aantal_soorten_seizoen_locatie <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "winter", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_seizoen_locatie %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 3, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + # guides(fill="none", + # color = "none") + + facet_grid(seizoen ~ locatie) + + theme(strip.text = element_text(size = 12)) + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen_locatie.jpg"), width = 10, height = 8) + + +aantal_soorten_seizoen <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, seizoen) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten = round(mean(soorten))) %>% + ungroup() %>% + mutate(seizoen = "totaal over seizoenen")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen"))) + +aantal_soorten_seizoen %>% + ggplot(aes(seizoen, soorten, fill = ordered(jaar), color = ordered(jaar))) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + alpha = 0.8) + + geom_text(aes(y = soorten + 1, label = soorten), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_seizoen.jpg"), width = 10, height = 5) + + +aantal_soorten_locatie <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, locatie, soort) %>% + count(jaar, seizoen, locatie, name = "soorten") %>% + group_by(jaar, locatie) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + left_join(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, locatie, soort) %>% + count(jaar, locatie, name = "soorten_tot")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, seizoen, soort) %>% + count(jaar, seizoen, name = "soorten") %>% + group_by(jaar) %>% + summarise(soorten_gem = round(mean(soorten))) %>% + ungroup() %>% + mutate(locatie = "totaal over locaties") %>% + left_join(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten_tot") %>% + mutate(locatie = "totaal over locaties"))) %>% + mutate(locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) + +aantal_soorten_locatie %>% + ggplot(aes(locatie, soorten_gem, group = jaar)) + + geom_col(position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1) + + geom_col(aes(y = soorten_tot, fill = ordered(jaar), color = ordered(jaar)), + position = position_dodge(width = 0.8), + width = 0.6, + linewidth = 1, + alpha = 0.75) + + geom_text(aes(y = soorten_tot + 1, label = soorten_tot), + position = position_dodge(width = 0.8), + size = 2, color = "steelblue4", fontface = "bold") + + labs(y = "aantal soorten", + fill = "jaar", + color = "jaar") + +ggsave(paste0(pad_figuren, "aantal_soorten_locatie.jpg"), width = 12, height = 5) + + +aantal_soorten_totaal <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + distinct(jaar, soort) %>% + count(jaar, name = "soorten") + +aantal_soorten_totaal %>% + ggplot(aes(jaar, soorten)) + + geom_col(position = position_dodge(width = 0.8), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + geom_text(aes(y = soorten + 2, label = soorten), + position = position_dodge(width = 0.8), + size = 3, color = "steelblue4") + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(y = "aantal soorten") + + guides(fill="none", + color = "none") + +ggsave(paste0(pad_figuren, "aantal_soorten_totaal.jpg"), width = 6, height = 4) + + +sheets_figuren[["aantal_soorten_seizoen_locatie"]] <- + aantal_soorten_seizoen_locatie %>% + pivot_wider(id_cols = c(jaar, seizoen), + names_from = locatie, + values_from = soorten) + +sheets_figuren[["aantal_soorten_seizoen"]] <- + aantal_soorten_seizoen %>% + pivot_wider(id_cols = c(jaar), + names_from = seizoen, + values_from = soorten) + +sheets_figuren[["aantal_soorten_locatie"]] <- + aantal_soorten_locatie +# %>% +# pivot_wider(id_cols = c(jaar), +# names_from = locatie, +# values_from = soorten) + +sheets_figuren[["aantal_soorten_totaal"]] <- + aantal_soorten_totaal + +``` + + +```{r overzicht-aantal-soorten} + +tabel_aantal_soorten <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, locatie, soort) %>% + count(seizoen, locatie, name = "soorten") %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(locatie, soort) %>% + count(locatie, name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(seizoen, soort) %>% + count(seizoen, name = "soorten") %>% + mutate(locatie = "totaal over locaties")) %>% + bind_rows(data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + count(name = "soorten") %>% + mutate(seizoen = "totaal over seizoenen", + locatie = "totaal over locaties")) %>% + mutate(seizoen = factor(seizoen, levels = c("voorjaar", "zomer", "najaar", "totaal over seizoenen")), + locatie = factor(locatie, levels = c(levels_locatie, "totaal over locaties"))) %>% + pivot_wider(id_cols = locatie, names_from = seizoen, values_from = soorten) %>% + arrange(locatie) + +knitr::kable(tabel_aantal_soorten) + +sheets[["aantal_soorten"]] <- tabel_aantal_soorten + +``` + + +#### overzicht gevangen soorten + +```{r overzicht-gevangen-soorten} + +tabel_gevangen_soorten <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + mutate(seizoen_locatie = factor(paste(seizoen, locatie, sep = "_"), + levels = levels_seizoen_locatie)) %>% + select(seizoen_locatie, soort) %>% + mutate(aanwezig = "x") %>% + pivot_wider(id_cols = soort, + names_from = seizoen_locatie, + values_from = aanwezig, + values_fill = "") %>% + select(soort, all_of(levels_seizoen_locatie)) + +knitr::kable(tabel_gevangen_soorten) + +sheets[["gevangen_soorten"]] <- tabel_gevangen_soorten + +``` + + +#### nieuwe soorten + +```{r nieuwe soorten} + +(soorten_historisch <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar != laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_recent <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(jaar == laatste_jaar, + aantal > 0) %>% + distinct(soort) %>% + pull() %>% + sort()) + +(soorten_nieuw <- + setdiff(soorten_recent, soorten_historisch)) + +data_soorten_nieuw <- + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + left_join(locatie_scheldezone) %>% + filter(jaar == laatste_jaar, + aantal > 0, + soort %in% soorten_nieuw) + +if (nrow(data_soorten_nieuw) > 0) { + data_soorten_nieuw %>% + ggplot(aes(seizoen, aantal)) + + geom_col(aes(fill = soort)) + + facet_wrap(~locatie) +} + +sheets[["nieuwe_soorten"]] <- + data_soorten_nieuw %>% + select(locatie, OMES, EMSE_niveau3, jaar, seizoen, soort, wetensch_naam, salgroep, dieet, + volume, aantal, gewicht, aantal_per_kub, gewicht_per_kub) + +``` + + +#### relatief aantal gevangen individuen + +```{r relatief-aantal-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_aantal_laatste_jaar <- + data_ankerkuil %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + aantal = round(aantal/sum(aantal)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(levels(relatief_aantal_laatste_jaar$soort)) - 1) %>% +# unname(), +# "darkslategrey") +# names(my_pal_wes) <- +# levels(relatief_aantal_laatste_jaar$soort) + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_aantal_laatste_jaar %>% + mutate(aantal = if_else(aantal == 0, NA_real_, aantal)) %>% + ggplot(aes(x ="", y = aantal, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = aantal, size = aantal), + color = "grey60", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + + +#### relatieve biomassa gevangen individuen + +```{r relatieve-biomassa-gevangen-individuen, fig.height=6, fig.width=6} + +relatief_gewicht_laatste_jaar <- + data_ankerkuil %>% + filter(jaar == laatste_jaar) %>% + group_by(seizoen, locatie) %>% + mutate(relatief_aantal_laatste_jaar = aantal/sum(aantal), + relatief_gewicht_laatste_jaar = gewicht/sum(gewicht)) %>% + ungroup() %>% + group_by(soort) %>% + mutate(soort2 = ifelse(any(relatief_aantal_laatste_jaar >= prop_lim) | any(relatief_gewicht_laatste_jaar >= prop_lim), soort, "rest")) %>% + ungroup() %>% + group_by(seizoen, locatie, soort2) %>% + summarise(gewicht = sum(gewicht)) %>% + ungroup() %>% + group_by(seizoen, locatie) %>% + mutate(soort2 = soort2, + gewicht = round(gewicht/sum(gewicht)*100)) %>% + ungroup() %>% + rename(soort = soort2) %>% + mutate(soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + +# my_pal_wes <- +# c(wes_palette("Darjeeling1", +# type = "continuous", +# n = length(levels(relatief_gewicht_laatste_jaar$soort)) - 1) %>% +# unname(), +# "darkslategrey") +# names(my_pal_wes) <- +# levels(relatief_gewicht_laatste_jaar$soort) + +the_pal <- + my_pal_wes[names(my_pal_wes) %in% unique(relatief_aantal_laatste_jaar$soort)] + +relatief_gewicht_laatste_jaar %>% + mutate(gewicht = if_else(gewicht == 0, NA_real_, gewicht)) %>% + ggplot(aes(x ="", y = gewicht, fill = soort)) + + geom_col(position = "fill", color = "gray60") + + # geom_text(aes(label = soort), + # size = 3) + + geom_text(aes(label = gewicht, size = gewicht), + color = "grey60", + position = position_fill(vjust = 0.5), + show.legend = FALSE) + + coord_polar("y", start=0) + + facet_grid(locatie ~ seizoen) + + labs(x = NULL, + y = NULL) + + scale_x_discrete(breaks = NULL) + + scale_y_continuous(breaks = NULL) + + scale_fill_manual(values = the_pal) + + theme( + # legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + + +```{r tabellen relatief aantal en gewicht laatste jaar} + +sheets_figuren[["relatief_aantal_laatste_jaar"]] <- + relatief_aantal_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = aantal) + +sheets_figuren[["relatief_gewicht_laatste_jaar"]] <- + relatief_gewicht_laatste_jaar %>% + pivot_wider(id_cols = c(seizoen, soort), + names_from = locatie, + values_from = gewicht) + +``` + + +#### diversiteit EMSE + +```{r diversiteit EMSE} + +gemiddeld_diversiteit_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "estuariene soorten en mariene migranten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg"), width = 10, height = 6) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "diadrome soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg"), width = 10, height = 6) + +gemiddeld_diversiteit_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + size = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + size = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(# title = "zoetwater soorten", + y = "S -- D") + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8)) + +ggsave(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg"), width = 10, height = 6) + +``` + + +#### aantallen en biomassa EMSE per soort + +```{r relatie soortaantallen vs totale aantallen} + +relatieve_aantallen_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep, dieet, indeling) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep, dieet, indeling) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + add_row(indeling_EMSE_missing %>% + expand_grid(jaar = vroegste_jaar:laatste_jaar, + scheldezone = unique(locatie_scheldezone$scheldezone))) %>% + mutate(indeling = factor(indeling, levels = levels_indeling), + scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest"))) + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(y = get_lab_aantal()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r relatie soortbiomassa vs totale biomassa} + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "diadrome soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.1,1,0.05)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg"), width = 14, height = 7, bg = "white") + + +data_split <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + group_by(indeling) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(indeling, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_gewicht(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(legend.justification = c(0,1), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + size = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "zoetwater soorten", + y = get_lab_gewicht()) + + facet_grid(indeling ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 8)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$indeling)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg"), width = 14, height = 7, bg = "white") + +``` + + +```{r tabellen aantallen gewicht en diversiteit EMSE} + +sheets_figuren[["aantallen_en_gewichten_EMSE"]] <- + relatieve_aantallen_EMSE %>% + select(jaar, scheldezone, soort, salgroep, dieet, indeling, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["diversiteit_EMSE"]] <- + gemiddeld_diversiteit_EMSE %>% + select(jaar, scheldezone, salgroep, dieet, indeling, + N, D_sh) + +``` + + +#### sleutelsoorten EMSE + +```{r data sleutelsoorten} + +data_sleutelsoorten_EMSE <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(soort %in% sleutelsoorten_EMSE$soort) %>% + left_join(sleutelsoorten_EMSE %>% select(soort, scheldezone_rap = scheldezone)) %>% + # filter(map2_lgl(scheldezone_rap, scheldezone, ~str_detect(.x, .y))) %>% + group_by(jaar, soort, salgroep, scheldezone) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full)) + +sheets_figuren[["sleutelsoorten_EMSE"]] <- + data_sleutelsoorten_EMSE + +``` + + +```{r sleutelsoorten aantal} + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "mari")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg"), width = 6, height = 8) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "diadr")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + labs(# title = "diadrome soorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg"), width = 7, height = 7) + + +data_sleutelsoorten_EMSE %>% + filter(str_detect(salgroep, "zoet")) %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, color = scheldezone, fill = scheldezone)) + + geom_col(position = position_dodge(width = 0.9), + linewidth = 0.5, + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_x_continuous(breaks = vroegste_jaar:laatste_jaar) + + labs(# title = "zoetwatersoorten", + y = get_lab_aantal()) + + facet_wrap(~soort, + scales = "free_y", + ncol = 2) + + theme(axis.text.x = element_text(angle = 90, vjust = 0.25, hjust = 1), + legend.position = "top") + +ggsave(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg"), width = 6, height = 8) + +``` + + +#### aantallen en biomassa per saliniteit en dieet + +```{r aantallen en biomassa per salgroep} + +relatieve_aantallen_salgroep <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + salgroep = factor(salgroep, + levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +data_split <- + relatieve_aantallen_salgroep %>% + group_by(salgroep) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(salgroep, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=5)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 11)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_salgroep %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$salgroep)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg"), width = 14, height = 8, bg = "white") + +``` + + +```{r aantallen en biomassa per dieet} + +relatieve_aantallen_dieet <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(in_indeling) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub = mean(aantal_per_kub), + gewicht_per_kub = mean(gewicht_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(aantal_per_kub_tot = sum(aantal_per_kub), + gewicht_per_kub_tot = sum(gewicht_per_kub)) %>% + ungroup() %>% + mutate(relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + mutate(max_aantal = relatief_aantal >= prop_lim, + max_gewicht = relatief_gewicht >= prop_lim) %>% + group_by(soort) %>% + mutate(soort = ifelse(any(max_aantal) | any(max_gewicht), soort, "rest")) %>% + ungroup() %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub_tot = mean(aantal_per_kub_tot), + gewicht_per_kub_tot = mean(gewicht_per_kub_tot), + aantal_per_kub = sum(aantal_per_kub), + gewicht_per_kub = sum(gewicht_per_kub), + relatief_aantal = aantal_per_kub/aantal_per_kub_tot, + relatief_gewicht = gewicht_per_kub/gewicht_per_kub_tot) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + soort = factor(soort, + levels = unique(soort) %>% + sort() %>% + setdiff("rest") %>% + c(., "rest")), + dieet = factor(dieet, + levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +data_split <- + relatieve_aantallen_dieet %>% + group_by(dieet) %>% + nest() + +data_split <- + data_split %>% + mutate(legend = + map2(dieet, data, + function(ind, dat) { + pal_split <- + my_pal_wes[names(my_pal_wes) %in% unique(dat$soort)] + plt <- + dat %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort)) + + geom_col(position = position_stack(), + width = 0.7, + alpha = 0.9) + + scale_x_continuous(breaks = + seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + scale_fill_manual(values = pal_split, na.translate = F) + + labs(y = get_lab_aantal(), + fill = ind) + + guides(fill=guide_legend(nrow=4)) + + theme(#rect = element_blank(), + # rect = element_rect(fill = 'transparent', colour = NA_character_), + legend.justification = c(0,1), + # legend.title = element_text(size = 8), + # legend.text = element_text(size = 8), + # legend.background = element_rect(fill = 'transparent', colour = NA_character_), + legend.box.background = element_rect(fill = 'transparent', colour = NA_character_)) + plt %>% + get_legend() + })) + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, aantal_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_aantal()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg"), width = 14, height = 8, bg = "white") + + +ggp_all <- + relatieve_aantallen_dieet %>% + ggplot(aes(jaar, gewicht_per_kub*mult_kub, fill = soort, color = soort)) + + geom_col(width = 0.7, + alpha = 0.9, + linewidth = 0.1) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar %% 2 == 0, vroegste_jaar, vroegste_jaar + 1), laatste_jaar, 2)) + + # scale_y_log10() + + # scale_fill_brewer(palette = "Paired") + + scale_fill_manual(values = my_pal_wes) + + scale_color_manual(values = my_pal_wes) + + labs(# title = "estuariene soorten en mariene migranten", + y = get_lab_gewicht()) + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(legend.position = "none", + axis.text = element_text(size = 10), + axis.text.x = element_text(angle = 90, vjust = 0.5), + strip.text = element_text(size = 12)) + + +plot_grid(ggp_all, + NULL, + plot_grid(NULL, + plot_grid(plotlist = data_split$legend[sort.list(data_split$dieet)], + align = "h", ncol = 1), + NULL, + ncol = 1, rel_heights = c(0.07,1,0.1)), + ncol = 3, rel_widths = c(1.4,0.05,0.6)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg"), width = 14, height = 8, bg = "white") + +``` + + +#### diversiteit per saliniteit en dieet + +```{r diversiteit per salgroep} + +gemiddeld_diversiteit_salgroep <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0) %>% + group_by(jaar, scheldezone, soort, salgroep) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, salgroep) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + salgroep = factor(salgroep, levels = c("mariene en estuariene soorten", "diadrome soorten", "zoetwatersoorten"))) + + +gemiddeld_diversiteit_salgroep %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(salgroep ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg"), width = 10, height = 7) + +``` + + +```{r diversiteit per dieet} + +gemiddeld_diversiteit_dieet <- + data_ankerkuil %>% + left_join(locatie_scheldezone) %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(aantal > 0, + !is.na(dieet)) %>% + group_by(jaar, scheldezone, soort, dieet) %>% + summarise(aantal_per_kub = mean(aantal_per_kub)) %>% + ungroup() %>% + group_by(jaar, scheldezone, dieet) %>% + mutate(relatief_aantal = aantal_per_kub/sum(aantal_per_kub)) %>% + summarise(N = n(), + H_sh = -sum(relatief_aantal*log(relatief_aantal)), + H_gs = 1-sum(relatief_aantal^2), + D_sh = exp(H_sh), + D_gs = 1/(1-H_gs), + E_sh = H_sh/log(N)) %>% + ungroup() %>% + mutate(scheldezone = factor(scheldezone, levels = levels_scheldezone), + scheldezone = recode_factor(scheldezone, !!!levels_scheldezone_full), + dieet = factor(dieet, levels = c("benthivoren", "omnivoren", "piscivoren", "planktivoren"))) + + +gemiddeld_diversiteit_dieet %>% + ggplot(aes(jaar, N)) + + geom_col(position = position_dodge(), + color = "steelblue4", + linewidth = 0.5, + width = 0.7, + alpha = 0.25) + + geom_col(aes(y = D_sh), + color = "steelblue4", + linewidth = 0.5, + position = position_dodge(), + width = 0.7, + alpha = 0.8) + + scale_x_continuous(breaks = seq(ifelse(vroegste_jaar%%2 == 0, vroegste_jaar, vroegste_jaar+1), laatste_jaar, 2)) + + # scale_y_log10() + + labs(y = "S -- D") + + facet_grid(dieet ~ scheldezone, scales = "free_y") + + theme(axis.text = element_text(size = 8), + axis.text.x = element_text(angle = 90, vjust = 0.5)) + +ggsave(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg"), width = 7, height = 6) + +``` + + +```{r tabellen per saliniteit en dieet} + +sheets_figuren[["aantallen_en_gewichten_salgroep"]] <- + relatieve_aantallen_salgroep %>% + select(jaar, scheldezone, soort, salgroep, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["aantallen_en_gewichten_dieet"]] <- + relatieve_aantallen_dieet %>% + select(jaar, scheldezone, soort, dieet, + relatief_aantal, aantal_per_kub, relatief_gewicht, gewicht_per_kub) + +sheets_figuren[["diversieit_salgroep"]] <- + gemiddeld_diversiteit_salgroep %>% + select(jaar, scheldezone, salgroep, + N, D_sh) + +sheets_figuren[["diversieit_dieet"]] <- + gemiddeld_diversiteit_dieet %>% + select(jaar, scheldezone, dieet, + N, D_sh) + +``` + + +#### wegschrijven tabellen en metadata + +```{r wegschrijven tabellen} + +write_xlsx(sheets, + paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx")) + +write_xlsx(sheets_figuren, + paste0(pad_tabellen, "ankerkuil_tabellen_figuren.xlsx")) + +``` + + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_jaar = vroegste_jaar, + laatste_jaar = laatste_jaar, + aantal_soorten = + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(!is.na(aantal), + aantal > 0) %>% + distinct(soort) %>% + nrow(), + aantal_soorten_laatste_jaar = + data_ankerkuil %>% + filter(!(soort %in% soorten_niet_in_aantal)) %>% + filter(!is.na(aantal), + aantal > 0, + jaar == laatste_jaar) %>% + distinct(soort) %>% + nrow()), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "ankerkuil_meta_data.csv"), + delim = ";") + +``` diff --git a/moneos_2024/100_watervogels/10_moneos_watervogels_data.Rmd b/moneos_2024/100_watervogels/10_moneos_watervogels_data.Rmd new file mode 100644 index 0000000..1f95645 --- /dev/null +++ b/moneos_2024/100_watervogels/10_moneos_watervogels_data.Rmd @@ -0,0 +1,1551 @@ +--- +params: + hoofdstuk: "100_watervogels" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0( + rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, + "/output") + )}) +title: "watervogeldata" +output: + bookdown::word_document2 +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +#library(inborutils) ## moet dat nu inbodb worden?? +library(inbodb) +library(DBI) +library(rprojroot) ## workaround pad +library(openxlsx) +library(waldo) + +``` + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r benodigde-seizoenen} + +vroegste_seizoen <- "1991/1992" +laatste_seizoen <- "2023/2024" + +seizoenen <- + (vroegste_seizoen %>% str_sub(0, 4) %>% as.numeric):(laatste_seizoen %>% str_sub(0, 4) %>% as.numeric) %>% + paste(., {.+1} %>% as.character() %>% str_sub(3, 5), sep = "/") + +seizoenen_query <- + paste0("'", seizoenen, "'", collapse = ",") %>% + paste0("(", ., ")") + +``` + + +```{r gebiedsgroepen en gebiedsindeling T2021} +gebiedsgroepenall <- + read_delim(paste0(pad_data, "Zeeschelde_gebiedsgroepen_corrWM.csv"), + delim = ";") %>% + mutate(gebiedscode = as.character(gebiedscode)) + +gebiedsindeling_T2021 <- + read_delim(paste0(pad_data, "Gebiedsindeling_T2021.csv"), + delim = ";") + +gebiedsindeling_T2021 <- + gebiedsindeling_T2021 %>% + mutate(rivier = case_when( + niveau4 == "Rupel" ~ "Rupel", + niveau4 == "GetijdeDurme" ~ "Durme", + niveau4 == "GetijdeDijle" ~ "Dijle", + niveau4 == "GetijdeZenne" ~ "Zenne", + niveau4 == "GetijdeNete" ~ "Nete", + niveau4 == "Monding" ~ "Monding", + niveau2 == "Westerschelde" ~"Westerschelde", + TRUE ~ "Zeeschelde" + )) + +gebiedsindeling_T2021 <- gebiedsindeling_T2021 %>% + rename(gebiedsgroep = krw) %>% + select("niveau1", "niveau2","niveau3","gebiedsgroep", "rivier") %>% + distinct() + + +knitr::kable(gebiedsindeling_T2021) + +gebiedsindeling <- + gebiedsgroepenall %>% + dplyr::left_join(gebiedsindeling_T2021) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier"))) + # filter(gebiedsgroeptype_code != "SALZS") %>% + # filter(gebiedsgroeptype_code != "OMES") %>% + # filter(gebiedsgroeptype_code != "STRJ") + +gebiedsindeling %>% + distinct(niveau3) +gebiedsindeling %>% + write_delim(paste0(pad_data, "gebiedsindeling_watervogels_T2021join.csv"), + delim = ";") + + +gebiedsgroepen <- + read_delim(paste0(pad_data, "Zeeschelde_gebiedsgroepen_corrWM.csv"), + delim = ";") %>% + dplyr::filter(gebiedsgroeptype_code == "KRWZS") %>% + mutate(gebiedscode = as.character(gebiedscode)) + +``` + + +```{r gebiedsgroepen imputatiedataset - check} +# # gebiedsgroepenall <- +# # read_delim(paste0(pad_data, "Zeeschelde_gebiedsgroepen_corrWM.csv"), +# # delim = ";") %>% +# # mutate(gebiedscode = as.character(gebiedscode)) +# +# ## vergelijk imputatielijst met MONEOSlijst +# +# gebiedsgroepenall_old <- +# read_delim(paste0(pad_data, "Zeeschelde_gebiedsgroepen_corrWM.csv"), +# delim = ";") %>% +# mutate(gebiedscode = as.character(gebiedscode)) +# gebiedsgroepen_old <- +# read_delim(paste0(pad_data, "Zeeschelde_gebiedsgroepen_corrWM.csv"), +# delim = ";") %>% +# dplyr::filter(gebiedsgroeptype_code == "KRWZS") %>% +# mutate(gebiedscode = as.character(gebiedscode)) +# +# gebiedsgroepenall <- read.xlsx(paste0(pad_data, "FctLocationGroup_info.xlsx")) +# +# gebiedsgroepenall$StartDate <- as.Date(convertToDateTime(gebiedsgroepenall$StartDate, origin = "1899-12-31"), format = "%d-%m-%Y") +# gebiedsgroepenall$EndDate <- as.Date(convertToDateTime(gebiedsgroepenall$EndDate, origin = "1899-12-31"), format = "%d-%m-%Y") +# +# ########################################## +# ## vergelijking old dataset tijdelijke code +# ########################################## +# +# gebiedsgroepen_ZS <- gebiedsgroepenall %>% +# select(LocationWVCode, LocationWVNaam, LocationGroupNaam) %>% +# filter(LocationGroupNaam == "Zeeschelde" | LocationGroupNaam == "Zijrivieren Zeeschelde") %>% +# select(-LocationGroupNaam) +# +# gebiedsgroepen_old_ZS <- gebiedsgroepen_old %>% +# select(gebiedscode, gebiedsnaam) %>% +# rename(LocationWVCode = gebiedscode) %>% +# rename(LocationWVNaam = gebiedsnaam) +# +# differences <- waldo::compare(gebiedsgroepen_ZS, gebiedsgroepen_old_ZS) +# print(differences) +# +# differences_rows <- gebiedsgroepen_ZS %>% +# full_join(gebiedsgroepen_old_ZS, by = "LocationWVCode", suffix = c("_new", "_old")) %>% +# dplyr::filter(LocationWVNaam_new != LocationWVNaam_old) +# +# print(differences_rows) +# +# ### conclusie - exact dezelfde gebieden bevraagd dus we houden oude gebiedscodelijst aan voor MONEOS 2024 + + +``` + +```{r sigmagebieden enkel langsheen de Zeeschelde} + +##Gebiedskenmerken + +## lijst met telgebieden aangemaakt met een aantal kenmerken - file Wim +# Gebied2 <- read_delim(paste0(pad_data, "Gebieden2.csv"), +# delim = ";") +## Gebied: naam van telgebied zoals in databank +## Estuarien: 1: getijderivier, 0: geen getijderivier (estuariene Sigmaprojectgebieden: 0) +## Vallei: 1: valleigebied; 0: geen valleigebied +## Sigma: 1 Sigmaprojectgebied, 0: geen Sigmaprojectgebied +## NOHaven: 1: Natuurontwikkelingsgebieden van de haven, 0: geen NOgebied van haven +## Voor de Sigmaprojectgebieden is er bijkomende info. + +# Sigma2 <- Gebied2 %>% +# filter(Sigma == 1) %>% +# rename(gebiedsnaam = Gebied) + +gebiedsgroepenSigma <- gebiedsgroepenall %>% + dplyr::filter(gebiedsgroeptype == "Sigma-gebieden") %>% + mutate(gebiedscode = as.character(gebiedscode)) + +knitr::kable(gebiedsgroepenSigma) + +gebiedsgroepenSigma_zeeschelde <- gebiedsgroepenall %>% + dplyr::filter(gebiedsgroeptype == "Sigma-gebieden") %>% + dplyr::filter(rivier == "Zeeschelde") %>% + mutate(gebiedscode = as.character(gebiedscode)) %>% + mutate(niveau3 = case_when( + gebiedsgroep_code == "MH" ~ "Saliniteitsgradient", + gebiedsgroep_code == "OH" ~ "Oligohalien", + gebiedsgroep_code == "ZLVT"~ "Zoet lang verblijf", + gebiedsgroep_code == "ZKVT"~ "Zoet kort verblijf", + gebiedsgroep_code == "Durme"~ "Durme", + gebiedsgroep_code == "Rupel"~ "Rupel", + TRUE ~ "nvt" + )) + +knitr::kable(gebiedsgroepenSigma_zeeschelde) + +gebiedsgroepenSigma_zeeschelde %>% + write_delim(paste0(pad_tabellen, "gebiedsgroepenSigma_zeeschelde.csv"), + delim = ";") + +##vergelijking tussen de files van Wim en Gunther +# check <- Sigma2 %>% +# left_join(gebiedsgroepenSigma) +## de file van gebiedsgroepen verschilt een beetje voor de sigmagebieden in Gebied2 (basis natuurindicator) maar niet veel en je kan erover ##discussieren of je sommige gebieden kan tellen als sigmagebied ## +##Burchtse weel zoet water buffer is geen deel van Sigma (zit wel in vallei) +##NOHaveis is onbekend in watervogeltelgebieden layer +##Lillo fort - LocationWVNaam is in watervogeldatabank FORT Lillo (selectie zal niet gebeuren met Gebied2 set) + +``` + +```{r valleigebieden Zeeschelde} + +gebiedsgroepenVallei <- gebiedsgroepenall %>% + dplyr::filter(gebiedsgroeptype != "Sigma-gebieden") %>% + dplyr::filter(gebiedsgroep == "Vallei") %>% + mutate(gebiedscode = as.character(gebiedscode)) + +knitr::kable(gebiedsgroepenVallei) + +gebiedsgroepenVallei_zeeschelde <- gebiedsgroepenall %>% + dplyr::filter(gebiedsgroeptype != "Sigma-gebieden") %>% + dplyr::filter(gebiedsgroep == "Vallei") %>% + dplyr::filter(rivier == "Zeeschelde") %>% + mutate(gebiedscode = as.character(gebiedscode)) +``` + + +```{r query-tellingen} + +query_tellingen <- +"SELECT + su.SurveyCode AS ProjectCode +, su.SurveyNaam AS Project +, a.AnalyseSetKey AS AnalyseSetCode +, a.AnalyseSetNaam AS AnalyseSet +, l.RegioWVNaam AS Regio +, l.LocationWVCode AS GebiedsCode +, l.LocationWVNaam AS Gebied +, ss.Seasonname AS Telseizoen +, e.EventLabel AS Telling +, e.SortOrder AS TellingSortOrder +, f.SampleDate AS Teldatum +, s.CoverageCode AS TelvolledigheidCode +, s.CoverageDescription AS Telvolledigheid +, s.IsNulTelling AS Nultelling +FROM FactAnalyseSetOccurrence f + INNER JOIN DimSurvey su ON su.surveykey = f.surveykey + INNER JOIN DimAnalyseSet a ON a.AnalyseSetKey = f.AnalyseSetKey + INNER JOIN DimLocationWV l ON l.locationwvkey = f.locationwvkey + INNER JOIN DimSeason ss ON ss.Seasonkey = f.seasonkey + INNER JOIN DimEvent e ON e.eventkey = f.eventkey + INNER JOIN DimSample s ON s.SampleKey = f.SampleKey +WHERE 1=1 + AND s.samplestatus = 'CHECKED' /**alleen gevalideerde records**/ + AND s.coveragecode not in ('-', 'N') /**niet getelde tellingen zijn irrelevant**/ +;" + +query_grouping <- +"GROUP BY + su.SurveyCode +, su.SurveyNaam +, a.AnalyseSetKey +, a.AnalyseSetNaam +, l.RegioWVCode +, l.RegioWVNaam +, l.LocationWVCode +, l.LocationWVNaam +, ss.Seasonname +, e.EventCode +, e.EventLabel +, e.SortOrder +, f.SampleDate +, s.CoverageCode +, s.CoverageDescription +, s.IsNulTelling;" + + + + +``` + + +```{r bevragen-warehouse-zeeschelde-tellingen} + +query <- + paste0(str_sub(query_tellingen, end=-2), + " AND f.AnalyseSetKey = 1 /**alleen Zeescheldetellingen**/", + " AND ss.seasonname in ", + seizoenen_query, + str_sub(query_grouping, end=-2), + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +overzicht_tellingen <- + dbGetQuery(con, + query) +# dbDisconnect(con) + +# selectie van de telgebieden gespecifieerd in de Zeeschelde_gebiedsgroepen - KRWZS +overzicht_tellingen <- + overzicht_tellingen %>% + dplyr::filter(GebiedsCode %in% gebiedsgroepen$gebiedscode) + +overzicht_tellingen %>% + distinct(Nultelling) + +``` + +#### teldata uit watervogeldatabank halen + +```{r basis-query bevraging Watervogeldatabank} + +basis_query <- + paste0( +"SELECT + SU.SurveyCode as ProjectCode +, SU.SurveyNaam as Project +, L.RegioWVCode as RegioCode +, L.RegioWVNaam as Regio +, L.LocationWVCode as GebiedsCode +, L.LocationWVNaam as Gebied +, SS.Seasonname as Telseizoen +, E.EventCode as TellingCode +, E.EventLabel as Telling +, E.SortOrder as TellingSortOrder +, S.sampleDate as Teldatum +, S.CoverageCode as Telvolledigheid +, T.Commonname as NedNaam +, T.scientificname as WetNaam +, T.TaxonGroupCode +, F.Taxoncount as Aantal + +FROM FactAnalyseSetOccurrence F +inner join DimSurvey SU on SU.surveykey = F.surveykey +inner join DimLocationWV L on L.locationwvkey = F.locationwvkey +inner join DimSeason SS on SS.Seasonkey = F.seasonkey +inner join DimEvent E on E.eventkey = F.eventkey +inner join DimSample S on F.samplekey = S.samplekey +inner join DimTaxonWV T on T.taxonwvkey = F.taxonwvkey +WHERE 1=1 + AND S.samplestatus = 'CHECKED' /**alleen gevalideerde records**/ + AND S.coveragecode not in ('-', 'N') /**niet getelde tellingen zijn irrelevant**/ + AND F.taxoncount > 0;" + ) + +``` + + +```{r checken details in databank} + +con <- connect_inbo_dbase("W0004_00_Waterbirds") + +q_WVgebiedenHamme <- "SELECT * + FROM DimLocationWV + WHERE LocationWVNaam LIKE '%HAMME%'" + +q_WVgebiedenBriel <- "SELECT * + FROM DimLocationWV + WHERE LocationWVNaam LIKE '%Briel%'" + +# q_WVgebiedenNete <- "SELECT * +# FROM DimLocationWV +# WHERE LocationWVNaam LIKE '%Nete%'" + + +# Selectie gebieden +GebiedenHamme <- + tbl(src = con, sql(q_WVgebiedenHamme)) %>% + select(LocationWVCode, LocationWVNaam, IsStandardizedLocationWV) %>% + collect() + +GebiedenBriel <- + tbl(src = con, sql(q_WVgebiedenBriel)) %>% + select(LocationWVCode, LocationWVNaam, IsStandardizedLocationWV) %>% + collect() + +# GebiedenNete <- +# tbl(src = con, sql(q_WVgebiedenNete)) %>% +# select(LocationWVCode, LocationWVNaam, IsStandardizedLocationWV) %>% +# collect() + +# query midmaandelijkse tellingen +q_midmaandtellingen <- + "SELECT SU.SurveyCode as ProjectCode +, SU.SurveyNaam as Project +, L.RegioWVCode as RegioCode +, L.RegioWVNaam as Regio +, L.LocationWVCode as GebiedsCode +, L.LocationWVNaam as Gebied +, SS.Seasonname as Telseizoen +, E.EventCode as TellingCode +, E.EventLabel as Telling +, E.SortOrder as TellingSortOrder +, S.sampleDate as Teldatum +--, S.IceCoverCode as Ijsbedekking +--, S.SnowCoverCode as Sneeuwbedekking +, S.CoverageCode as Telvolledigheid +, T.Commonname as NedNaam +, T.scientificname as WetNaam +, T.TaxonGroupCode +, F.Taxoncount as Aantal +FROM FactAnalyseSetOccurrence F +inner join DimSurvey SU on SU.surveykey = F.surveykey +inner join DimLocationWV L on L.locationwvkey = F.locationwvkey +inner join DimSeason SS on SS.Seasonkey = F.seasonkey +inner join DimEvent E on E.eventkey = F.eventkey +inner join DimSample S on F.samplekey = S.samplekey +inner join DimTaxonWV T on T.taxonwvkey = F.taxonwvkey +WHERE 1=1 + " +# Selectie midmaandelijkse tellingen in gebieden + +WaterbirdsHamme <- + tbl(src = con, + sql(q_midmaandtellingen)) %>% + dplyr::filter(GebiedsCode %in% !!GebiedenHamme$LocationWVCode) %>% + collect() + +WaterbirdsBriel <- + tbl(src = con, + sql(q_midmaandtellingen)) %>% + dplyr::filter(GebiedsCode %in% !!GebiedenBriel$LocationWVCode) %>% + collect() + +# WaterbirdsNete <- +# tbl(src = con, +# sql(q_midmaandtellingen)) %>% +# filter(GebiedsCode %in% !!GebiedenNete$LocationWVCode) %>% +# collect() + +dbDisconnect(con) + +# Totalen per gebied per seizoen +Totaal_n_Watervogels_Gebied_seizoen_Hamme <- + WaterbirdsHamme %>% + group_by(Gebied, Telseizoen) %>% + summarise(Totaal = sum(Aantal, na.rm = TRUE)) %>% + spread(key = Gebied, value = Totaal) + +Totaal_n_Watervogels_Gebied_seizoen_Briel <- + WaterbirdsBriel %>% + group_by(Gebied, Telseizoen) %>% + summarise(Totaal = sum(Aantal, na.rm = TRUE)) %>% + spread(key = Gebied, value = Totaal) + +# Totaal_n_Watervogels_Gebied_seizoen_Nete <- +# WaterbirdsNete %>% +# group_by(Gebied, Telseizoen) %>% +# summarise(Totaal = sum(Aantal, na.rm = TRUE)) %>% +# spread(key = Gebied, value = Totaal) + +#trends in Grote Wal, Groot Schoor en bootteltraject Schelde St Amands - Oude Briel LO code 4143122 + + +datathvGrootschoor1 <- WaterbirdsHamme %>% + dplyr::filter(Gebied == "Grote Wal HAMME" | Gebied == "Groot Schoor HAMME") %>% + mutate(Analyseset = "SIGMA_MIDMA") + +datathvGrootschoor2 <- WaterbirdsBriel %>% + dplyr::filter(Gebied == "Schelde St. Amands - Oude Briel (LO)")%>% + mutate(Analyseset = "boottelling") + +datathvGrootschoor <- rbind(datathvGrootschoor1, datathvGrootschoor2) +# datathvGrootschoor %>% +# write_delim(paste0(pad_data, "datathvGrootSchoorHamme.csv"), +# delim = ";") + +# +# # sla op als spreadsheet +# Totaal_n_Watervogels_Gebied_seizoen_Lier %>% +# write_delim(paste0(pad_data, "Totalen_gebiedenLier.csv"), +# delim = ";") +# +# Totaal_n_Watervogels_Gebied_seizoen_Nete %>% +# write_delim(paste0(pad_data, "Totalen_gebiedenNete.csv"), +# delim = ";") +# + + + +``` + + +```{r bevragen-warehouse-zeeschelde-analyseset} + +query <- + paste0(str_sub(basis_query, end=-2), + " AND F.Analysesetkey in (1) /**alleen boottellingen, i.e. uit ZSCH-analyseset**/", + " AND SS.seasonname in ", + seizoenen_query, + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +WaterbirdsBT <- + dbGetQuery(con, + query) +dbDisconnect(con) + +# selectie van de telgebieden gespecifieerd in de Zeeschelde_gebiedsgroepen - KRWZS + +out <-WaterbirdsBT %>% + dplyr::filter(!GebiedsCode %in% gebiedsgroepen$gebiedscode) + +# verwijder uit dataset boottelling +WaterbirdsBT <- + WaterbirdsBT %>% + dplyr::filter(GebiedsCode %in% gebiedsgroepen$gebiedscode) %>% + mutate(Analyseset = "boottelling") + +``` + + +```{r toevoegen-warehouse-MIDMA-zijrivieren-analyseset} + +telzones_zijrivieren <- + gebiedsgroepen$gebiedscode %>% + unique() %>% + setdiff(WaterbirdsBT$GebiedsCode %>% + unique()) + +telzones_query <- + paste0("'", telzones_zijrivieren, "'", collapse = ",") %>% + paste0("(", ., ")") + +query <- + paste0(str_sub(basis_query, end=-2), + " AND F.Analysesetkey in (2, 3, 4) /**alleen midmaandelijkse tellingen, i.e. uit MIDMA-analysesets**/", + " AND SS.seasonname in ", + seizoenen_query, + " AND L.LocationWVCode in ", + telzones_query, + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +waterbirds_zijrivieren <- + dbGetQuery(con, + query) +dbDisconnect(con) + +waterbirds_zijrivieren <- waterbirds_zijrivieren %>% +mutate(Analyseset = "zijrivier_MIDMA") + +WaterbirdsBT_ZR <- + WaterbirdsBT %>% + bind_rows(waterbirds_zijrivieren) + +Waterbirds <- + WaterbirdsBT %>% + bind_rows(waterbirds_zijrivieren) + +``` + +```{r bevragen-warehouse-MIDMA-Sigma-analyseset} + +## alle sigmagebieden +telzones_sigma <- + gebiedsgroepenSigma %>% + pull(gebiedsnaam) + + +telzones_query <- + paste0("'", telzones_sigma, "'", collapse = ",") %>% + paste0("(", ., ")") + +query <- + paste0(str_sub(basis_query, end=-2), + " AND F.Analysesetkey in (2, 3, 4) /**alleen midmaandelijkse tellingen, i.e. uit MIDMA-analysesets**/", + " AND SS.seasonname in ", + seizoenen_query, + " AND L.LocationWVNaam in ", + telzones_query, + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +waterbirds_sigma <- + dbGetQuery(con, + query) +dbDisconnect(con) + +waterbirds_sigma <- waterbirds_sigma %>% + mutate(Analyseset = "SIGMA_MIDMA") + +Waterbirds_bt_zr_sigma <- + WaterbirdsBT_ZR %>% + bind_rows(waterbirds_sigma) + + + + + +``` + +```{r bevragen-warehouse-MIDMA-vallei-analyseset} + +telzones_vallei <- + gebiedsgroepenVallei %>% + pull(gebiedsnaam) + +telzones_query <- + paste0("'", telzones_vallei, "'", collapse = ",") %>% + paste0("(", ., ")") + +query <- + paste0(str_sub(basis_query, end=-2), + " AND F.Analysesetkey in (2, 3, 4) /**alleen midmaandelijkse tellingen, i.e. uit MIDMA-analysesets**/", + " AND SS.seasonname in ", + seizoenen_query, + " AND L.LocationWVNaam in ", + telzones_query, + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +waterbirds_vallei <- + dbGetQuery(con, + query) +dbDisconnect(con) + +waterbirds_vallei <- waterbirds_vallei %>% + mutate(Analyseset = "VALLEI_MIDMA") + +Waterbirds_bt_zr_sigma_vallei <- + Waterbirds_bt_zr_sigma %>% + bind_rows(waterbirds_vallei) + +#### + +# telzones_vallei_zeeschelde <- +# gebiedsgroepenVallei_zeeschelde %>% +# pull(gebiedsnaam) +# +# telzones_query <- +# paste0("'", telzones_vallei_zeeschelde, "'", collapse = ",") %>% +# paste0("(", ., ")") +# +# query <- +# paste0(str_sub(basis_query, end=-2), +# " AND F.Analysesetkey in (2, 3, 4) /**alleen midmaandelijkse tellingen, i.e. uit MIDMA-analysesets**/", +# " AND SS.seasonname in ", +# seizoenen_query, +# " AND L.LocationWVNaam in ", +# telzones_query, +# ";" +# ) +# +# con <- connect_inbo_dbase("W0004_00_Waterbirds") +# waterbirds_vallei_zeeschelde <- +# dbGetQuery(con, +# query) +# dbDisconnect(con) +# +# waterbirds_vallei_zeeschelde <- waterbirds_vallei_zeeschelde %>% +# mutate(Analyseset = "VALLEI_ZSCH_MIDMA") +# +# Waterbirds_bt_zr_sigma_sigmazs_vallei_valleizs <- +# Waterbirds_bt_zr_sigma_sigmazs_vallei %>% +# bind_rows(waterbirds_vallei_zeeschelde) +# +Waterbirds <- Waterbirds_bt_zr_sigma_vallei + +``` + +#### volledigheid van de tellingen controleren + +```{r basis-query-tellingen} + +basis_query_tellingen <- +"WITH NulTelling AS + ( + SELECT SampleKey + FROM + ( + SELECT sampleKey, sum(taxoncount) as AantalIndividu + FROM FactAnalyseSetOccurrence + WHERE AnalyseSetKey = 1 + GROUP BY sampleKey + )tmp + WHERE tmp.AantalIndividu = 0 + ) +SELECT + su.SurveyCode AS ProjectCode +, su.SurveyNaam AS Project +, a.AnalyseSetKey AS AnalyseSetCode +, a.AnalyseSetNaam AS AnalyseSet +, l.RegioWVNaam AS Regio +, l.LocationWVCode AS GebiedsCode +, l.LocationWVNaam AS Gebied +, ss.Seasonname AS Telseizoen +, e.EventLabel AS Telling +, e.SortOrder AS TellingSortOrder +, f.SampleDate AS Teldatum +, s.CoverageCode AS TelvolledigheidCode +, s.CoverageDescription AS Telvolledigheid +, CASE WHEN NulTelling.SampleKey IS NOT NULL THEN 1 ELSE 0 END AS IsNulTelling +FROM FactAnalyseSetOccurrence f + INNER JOIN DimSurvey su ON su.surveykey = f.surveykey + INNER JOIN DimAnalyseSet a ON a.AnalyseSetKey = f.AnalyseSetKey + INNER JOIN DimLocationWV l ON l.locationwvkey = f.locationwvkey + INNER JOIN DimSeason ss ON ss.Seasonkey = f.seasonkey + INNER JOIN DimEvent e ON e.eventkey = f.eventkey + INNER JOIN DimSample s ON s.SampleKey = f.SampleKey + LEFT OUTER JOIN NulTelling ON NulTelling.SampleKey = f.SampleKey +WHERE 1=1 + AND s.samplestatus = 'CHECKED' /**alleen gevalideerde records**/ + AND s.coveragecode not in ('-', 'N') /**niet getelde tellingen zijn irrelevant**/ +;" + +grouping_tellingen <- +"GROUP BY + su.SurveyCode +, su.SurveyNaam +, a.AnalyseSetKey +, a.AnalyseSetNaam +, l.RegioWVCode +, l.RegioWVNaam +, l.LocationWVCode +, l.LocationWVNaam +, ss.Seasonname +, e.EventCode +, e.EventLabel +, e.SortOrder +, f.SampleDate +, s.CoverageCode +, s.CoverageDescription +, s.IsNulTelling +, NulTelling.SampleKey;" +``` + + +```{r bevragen-warehouse-zeeschelde-tellingen} + +query <- + paste0(str_sub(basis_query_tellingen, end=-2), + " AND f.AnalyseSetKey = 1 /**alleen Zeescheldetellingen**/", + " AND ss.seasonname in ", + seizoenen_query, + str_sub(grouping_tellingen, end=-2), + ";" + ) + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +overzicht_tellingen <- + dbGetQuery(con, + query) +dbDisconnect(con) + +# selectie van de telgebieden gespecifieerd in de Zeeschelde_gebiedsgroepen - KRWZS +overzicht_tellingen <- + overzicht_tellingen %>% + dplyr::filter(GebiedsCode %in% gebiedsgroepen$gebiedscode) + +``` + +```{r toevoegen-warehouse-tellingen-MIDMA-zijrivieren} + +telzones_zijrivieren <- + gebiedsgroepen$gebiedscode %>% + unique() %>% + setdiff(overzicht_tellingen$GebiedsCode %>% + unique()) + +telzones_query <- + paste0("'", telzones_zijrivieren, "'", collapse = ",") %>% + paste0("(", ., ")") + +query <- + paste0(str_sub(basis_query_tellingen, end=-2), + " AND f.Analysesetkey = 2 /**alleen midmaandelijkse tellingen, i.e. uit MIDMA-analysesets - voldoende om enkel analyseset 2 te nemen**/", + " AND ss.seasonname in ", + seizoenen_query, + " AND l.LocationWVCode in ", + telzones_query, + str_sub(grouping_tellingen, end=-2), + ";" + ) + + +con <- connect_inbo_dbase("W0004_00_Waterbirds") +tellingen_zijrivieren <- + dbGetQuery(con, + query) +dbDisconnect(con) + +overzicht_tellingen <- + overzicht_tellingen %>% + bind_rows(tellingen_zijrivieren) + + +``` + + +```{r correcties-overzicht_tellingen} + +# checken voor dubbels in de dataset +overzicht_tellingen %>% + arrange(Gebied, Telseizoen, Telling, Teldatum, ProjectCode) %>% + distinct(Gebied, Telseizoen, Telling, Teldatum, ProjectCode) + + + +``` + + +```{r toevoegentellinging-informatie-gebiedsgroepen} + +overzicht_tellingen <- + overzicht_tellingen %>% + rename_all(tolower) %>% + left_join(gebiedsgroepen) %>% + select(-telling, -tellingsortorder) + +``` + +```{r overzicht-aantal-tellingen} + +overzicht_tellingen <- + overzicht_tellingen %>% + mutate(IsNulTelling = if_else(isnultelling == 1, "ja", "nee")) + + +# overzicht aantal tellingen +aantaltellingen <- overzicht_tellingen %>% + count(analyseset, telvolledigheidcode, telvolledigheid, isnultelling) + +knitr::kable(aantaltellingen) + +# volledigheid wintertelseizoen +overzicht_tellingen %>% + dplyr::filter (telseizoen == "2023/24") %>% + dplyr::filter(month(teldatum) %in% c(10, 11, 12, 1, 2, 3)) %>% + group_by(projectcode, gebiedscode, gebied, gebiedsgroep_code) %>% + count(telseizoen, sort= TRUE) %>% + dplyr::filter (n < 6) # gebieden met minder dan 6 tellingen vertonen ontbrekende wintertellingen + +# overzicht_tellingen %>% +# filter (telseizoen == "2021/22") %>% +# filter(month(teldatum) %in% c(10, 11, 12, 1, 2, 3)) %>% +# group_by(gebiedscode, gebied, gebiedsgroep_code) %>% +# count(telseizoen, sort= TRUE) %>% +# filter (n < 6) # gebieden met minder dan 6 tellingen vertonen ontbrekende wintertellingen +# # pull(gebiedscode) + + +# test <-overzicht_tellingen %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) %>% +# filter (telseizoen == "2021/22") %>% +# filter (gebiedscode == ontbrekendetellingen) %>% +# # select(gebied, teldatum) %>% #kijk alleen naar teldatum want telling en tellingsortorder kloppen niet in databank +# arrange(teldatum) + +overzicht_tellingen %>% + dplyr::filter (telseizoen == "2023/24") %>% + dplyr::filter (gebiedscode == "3121003") %>% + select(projectcode, gebiedscode, gebied, teldatum) %>% #kijk alleen naar teldatum want telling en tellingsortorder kloppen niet in databank + arrange(teldatum) + + +``` + +#### correcties op de opgehaalde data uit de watervogeldatabank + +```{r correcties-Waterbirds} + +# checken voor dubbels in de dataset +Waterbirds %>% + group_by_at(vars(-Aantal)) %>% + mutate(n = n()) %>% + ungroup() %>% + dplyr::filter(n>1) %>% + arrange(Gebied, Telseizoen, Telling, Teldatum, NedNaam, ProjectCode) + +# Correctie hiervoor +Waterbirds <- + Waterbirds %>% + group_by_at(vars(-Aantal)) %>% + summarise(Aantal = max(Aantal)) %>% # maximum van de dubbele tellingen + ungroup() + +# Twee gebieden in dataset die er niet thuishoren: +Waterbirds %>% + dplyr::filter(str_detect(Gebied, "aapskooi|Oude Dijle")) %>% + group_by(Gebied) %>% + summarise() %>% + ungroup() + +# Correctie +Waterbirds <- + Waterbirds %>% + dplyr::filter(!str_detect(Gebied, "aapskooi|Oude Dijle")) + +# Telzones op nederlands grondgebied worden niet meegeteld (strik gesproken geen Zeeschelde). Dit gaat over de teltrajecten (9999999 en 9999998) gelegen op Nederlands grondgebied. Deze teltrajecten zitten niet in de gebiedsgroepen file + +# # Enkel wintertellingen +# WaterbirdsBTw <- WaterbirdsBT %>% filter(month(Teldatum) %in% c(10, 11, 12, 1, 2, 3)) + +# Correctie Groot Schoor Hamme +## boottelling Schelde St. Amands - Oude Briel (LO) bevat infeite de vogels die foerageren in ontpoldering Groot Schoor Hamme +## voor 2022,2023,2024 houden we dezelfde aantallen als 2021 in teltraject +## Sigmagebied wordt niet goed geteld; we rekenen de vogelaantallen voor de ontpoldering als deze geteld op Zeeschelde vermindert met baseline aantallen van 2021 in teltraject + +StAmandstotOudeBriel2020 <- + Waterbirds %>% + dplyr::filter(GebiedsCode == 4143122) %>% + dplyr::filter(Telseizoen == "2020/21") + +years <- years(1) +StAmandstotOudeBriel2021false <- + StAmandstotOudeBriel2020 %>% + mutate(Telseizoen = str_replace_all(Telseizoen, "2020/21", "2021/22")) %>% + mutate(Teldatum = Teldatum +years) + +StAmandstotOudeBriel2022false <- + StAmandstotOudeBriel2021false %>% + mutate(Telseizoen = str_replace_all(Telseizoen, "2021/22", "2022/23")) %>% + mutate(Teldatum = Teldatum +years) + +StAmandstotOudeBriel2023false <- + StAmandstotOudeBriel2022false %>% + mutate(Telseizoen = str_replace_all(Telseizoen, "2022/23", "2023/24")) %>% + mutate(Teldatum = Teldatum +years) + +#GrootSchorberekend te gebruiken voor Sigma-estuarien ontpoldering Groot Schoor Hamme ipv landtelling +#bergeenden zijn nu wel onderschatting + +#pas dit ook aan in Sigma dataset! + +GrootSchorberekend2021 <- + Waterbirds %>% + dplyr::filter(GebiedsCode == 4143122) %>% + dplyr::filter(Telseizoen == "2021/22") %>% + left_join(StAmandstotOudeBriel2020, by = c("NedNaam","Telling"), suffix = c("_winter2021", "_Baseline2020"),keep = TRUE) %>% + mutate(across(c(Aantal_Baseline2020), ~replace_na(., 0))) %>% + mutate(Aantal_diff = Aantal_winter2021 - Aantal_Baseline2020) %>% + dplyr::filter(Aantal_diff >= 0) %>% + select(ends_with("winter2021"), Aantal_diff) %>% + select(-Aantal_winter2021) %>% + rename_with(~ str_remove(.x, "_winter2021")) %>% + rename(Aantal = Aantal_diff) %>% + mutate(GebiedsCode = if_else(GebiedsCode == "4143122", "2091308", GebiedsCode)) %>% + mutate(Gebied = if_else(Gebied == "Schelde St. Amands - Oude Briel (LO)", "Groot Schoor HAMME", Gebied)) %>% + mutate(Analyseset = if_else(Analyseset == "boottelling", "SIGMA_MIDMA", Analyseset)) + +GrootSchorberekend2022 <- + Waterbirds %>% + dplyr::filter(GebiedsCode == 4143122) %>% + dplyr::filter(Telseizoen == "2022/23") %>% + left_join(StAmandstotOudeBriel2020, by = c("NedNaam","Telling"), suffix = c("_winter2021", "_Baseline2020"),keep = TRUE) %>% + mutate(across(c(Aantal_Baseline2020), ~replace_na(., 0))) %>% + mutate(Aantal_diff = Aantal_winter2021 - Aantal_Baseline2020) %>% + dplyr::filter(Aantal_diff >= 0) %>% + select(ends_with("winter2021"), Aantal_diff) %>% + select(-Aantal_winter2021) %>% + rename_with(~ str_remove(.x, "_winter2021")) %>% + rename(Aantal = Aantal_diff)%>% + mutate(GebiedsCode = if_else(GebiedsCode == "4143122", "2091308", GebiedsCode)) %>% + mutate(Gebied = if_else(Gebied == "Schelde St. Amands - Oude Briel (LO)", "Groot Schoor HAMME", Gebied)) %>% + mutate(Analyseset = if_else(Analyseset == "boottelling", "SIGMA_MIDMA", Analyseset)) + +GrootSchorberekend2023 <- + Waterbirds %>% + dplyr::filter(GebiedsCode == 4143122) %>% + dplyr::filter(Telseizoen == "2023/24") %>% + left_join(StAmandstotOudeBriel2020, by = c("NedNaam","Telling"), suffix = c("_winter2021", "_Baseline2020"),keep = TRUE) %>% + mutate(across(c(Aantal_Baseline2020), ~replace_na(., 0))) %>% + mutate(Aantal_diff = Aantal_winter2021 - Aantal_Baseline2020) %>% + dplyr::filter(Aantal_diff >= 0) %>% + select(ends_with("winter2021"), Aantal_diff) %>% + select(-Aantal_winter2021) %>% + rename_with(~ str_remove(.x, "_winter2021")) %>% + rename(Aantal = Aantal_diff)%>% + mutate(GebiedsCode = if_else(GebiedsCode == "4143122", "2091308", GebiedsCode)) %>% + mutate(Gebied = if_else(Gebied == "Schelde St. Amands - Oude Briel (LO)", "Groot Schoor HAMME", Gebied)) %>% + mutate(Analyseset = if_else(Analyseset == "boottelling", "SIGMA_MIDMA", Analyseset)) + + +datathvGrootschoor %>% + dplyr::filter(!(GebiedsCode == 2091308 & (Telseizoen == "2021/22" | Telseizoen == "2022/23" | Telseizoen == "2023/24"))) %>% + dplyr::filter(!(GebiedsCode == 4143122 & (Telseizoen == "2021/22" | Telseizoen == "2022/23" | Telseizoen == "2023/24"))) %>% + bind_rows(GrootSchorberekend2021, GrootSchorberekend2022,GrootSchorberekend2023) %>% + bind_rows(StAmandstotOudeBriel2021false, StAmandstotOudeBriel2022false,StAmandstotOudeBriel2023false) %>% + write_delim(paste0(pad_data, "datathvGrootSchoorHamme.csv"), + delim = ";") + +GrootSchoorHamme <- bind_rows(GrootSchorberekend2021, GrootSchorberekend2022,GrootSchorberekend2023) + +Waterbirds <- + Waterbirds %>% + dplyr::filter(!(GebiedsCode == 4143122 & (Telseizoen == "2021/22" | Telseizoen == "2022/23" | Telseizoen == "2023/24"))) %>% + bind_rows(StAmandstotOudeBriel2021false, StAmandstotOudeBriel2022false,StAmandstotOudeBriel2023false) + +#### ook nog aanpassen in Sigmadataset voor rapportage! + +Waterbirds <- + Waterbirds %>% + dplyr::filter(!(GebiedsCode == 2091308 & (Telseizoen == "2021/22" | Telseizoen == "2022/23" | Telseizoen == "2023/24"))) %>% +bind_rows(GrootSchoorHamme) + +``` + +```{r telseizoen metadata} + + +laatste_telseizoen <- + WaterbirdsBT %>% + pull(Telseizoen) %>% + unique() %>% + sort() %>% + last() + + + +``` + +```{r toevoegen-informatie-gebiedsgroepen} + +Waterbirds_all <- + Waterbirds %>% + rename_all(tolower) %>% + left_join(gebiedsgroepenall) %>% + select(gebiedsgroeptype_code, + gebiedsgroep_code, + gebiedsgroep, + rivier, + gebiedscode, + gebied = gebiedsnaam, + telseizoen, + teldatum, + nednaam, + wetnaam, + taxongroepcode = taxongroupcode, + aantal, + analyseset) + +Waterbirds_all %>% + write_delim(paste0(pad_data, "Watervogels_all_ruwedata.csv"), + delim = ";") + +####dataset inlezen zonder databank bevraging +# Waterbirds <- +# read_delim(paste0(pad_data, "Watervogels_all_ruwedata.csv"), +# delim = ";") + + +#MONEOStelgebieden gebiedsgroepinfo (niet voor sigma, vallei) +Waterbirds <- + Waterbirds %>% + rename_all(tolower) %>% + mutate(gebiedscode = as.character(gebiedscode)) %>% + left_join(gebiedsgroepen) %>% + select(gebiedsgroeptype_code, + gebiedsgroep_code, + gebiedsgroep, + rivier, + gebiedscode, + gebied = gebiedsnaam, + telseizoen, + teldatum, + nednaam, + wetnaam, + taxongroepcode = taxongroupcode, + aantal, + analyseset) + + + + +``` + +```{r controle volledigheid} +Aantaltellingenpergebied0 <- WaterbirdsBT %>% + rename_all(tolower) %>% + dplyr::filter (telseizoen == "2023/24") %>% + distinct(gebiedscode, telseizoen, teldatum) %>% + count(gebiedscode, telseizoen, teldatum) + +# aantal tellingen per telseizoen ingevoerd +Aantaltellingenpergebied <- WaterbirdsBT %>% + rename_all(tolower) %>% + dplyr::filter(analyseset =="boottelling") %>% + dplyr::filter (telseizoen == "2020/21") %>% + distinct(gebiedscode, teldatum, telseizoen) %>% + count(gebiedscode, telseizoen) + + +knitr::kable(Aantaltellingenpergebied) + +Aantaltellingenpergebied <- WaterbirdsBT %>% + rename_all(tolower) %>% + dplyr::filter(analyseset =="zijrivier_MIDMA") %>% + dplyr::filter (telseizoen == "2021/22") %>% + distinct(gebiedscode, teldatum, telseizoen) %>% + count(gebiedscode, telseizoen) + + +knitr::kable(Aantaltellingenpergebied) + +Aantaltellingenpergebied <- WaterbirdsBT %>% + rename_all(tolower) %>% + dplyr::filter(analyseset =="SIGMA_MIDMA") %>% + dplyr::filter(telseizoen == "2023/24") %>% + distinct(gebiedscode, teldatum, telseizoen) %>% + count(gebiedscode, telseizoen) + + +knitr::kable(Aantaltellingenpergebied) + +``` + +```{r optellen-per-gebiedsgroep-rivier MONEOS dataset} + +Waterbirds_Moneos <- + Waterbirds %>% + dplyr::filter(analyseset == "boottelling" | analyseset == "zijrivier_MIDMA") %>% + group_by(gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + wetnaam, + taxongroepcode) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() %>% + mutate(analyseset = "Zeeschelde en Zijrivieren") + + + +Waterbirds_sets <- + Waterbirds %>% + group_by(gebiedsgroeptype_code, + gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + wetnaam, + taxongroepcode, + analyseset) %>% + summarise(aantal = sum(aantal)) %>% + ungroup() + + +# #enkel de data van de Zeeschelde +# WaterbirdsBT_ZSCH <- +# WaterbirdsBTall %>% +# filter(analyseset == "boottelling") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "boottelling") +# +# #enkel de data van de sigmagebieden +# WaterbirdsBT_sigma <- +# WaterbirdsBTall %>% +# filter(analyseset == "SIGMA_MIDMA") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma") +# +# +# #enkel de data van de sigmagebieden langsheen de Zeeschelde +# WaterbirdsBT_sigma_zeeschelde <- +# WaterbirdsBTall %>% +# filter(analyseset == "SIGMA_ZSCH_MIDMA") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma Zeeschelde") +# +# WaterbirdsBT_vallei <- +# WaterbirdsBTall %>% +# filter(analyseset == "VALLEI_MIDMA") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Vallei") +# +# WaterbirdsBT_vallei_zeeschelde <- +# WaterbirdsBTall %>% +# filter(analyseset == "VALLEI_ZSCH_MIDMA") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Vallei Zeeschelde") +# +# +# ####data ontpolderingen en GGG's Sigma +# +# WaterbirdsBT_sigma_estuarien <- +# WaterbirdsBTallcheck %>% +# filter(analyseset == "SIGMA_MIDMA") %>% +# filter(gebiedsgroep == "GGG" | gebiedsgroep == "Ontpoldering") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma_estuarien") + + + +# Waterbirds_sigma_estuarien <- +# WaterbirdsBTallcheck %>% +# filter(analyseset == "SIGMA_MIDMA") %>% +# filter(gebiedsgroep == "Estuarien") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma estuarien") +# +# Waterbirds_sigma_estuarien %>% +# group_by(telseizoen) %>% +# summarise(totaal = sum(aantal)) + +# WaterbirdsBT_sigma_wetland <- +# WaterbirdsBTallcheck %>% +# filter(gebiedsgroep == "Wetland") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma_wetland") + + +``` + + +```{r toevoegen-nultellingen, eval=FALSE} + +Waterbirds_Moneos <- + Waterbirds_Moneos %>% + complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), + nesting(nednaam, wetnaam, taxongroepcode), + fill = list(0)) +Waterbirds_sets <- + Waterbirds_sets %>% + complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), + nesting(nednaam, wetnaam, taxongroepcode), + fill = list(0)) +Waterbirds_all <- + Waterbirds_all %>% + complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), + nesting(nednaam, wetnaam, taxongroepcode), + fill = list(0)) +# WaterbirdsBT_ZSCH <- +# WaterbirdsBT_ZSCH %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) +# +# WaterbirdsBT_sigma <- +# WaterbirdsBT_sigma %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) +# +# WaterbirdsBT_sigma_zeeschelde <- +# WaterbirdsBT_sigma_zeeschelde %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) +# +# WaterbirdsBT_sigma_wetland <- +# WaterbirdsBT_sigma_wetland %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) +# +# WaterbirdsBT_vallei <- +# WaterbirdsBT_vallei %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) +# +# WaterbirdsBT_vallei_zeeschelde <- +# WaterbirdsBT_vallei_zeeschelde %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(0)) + +``` + + + +```{r data-trofische-groep} + +data_trofische_groep <- + read_delim(paste0(pad_data, "Voedselgilde_exoten_Moneosrapport.csv"), + delim = ";") + +data_trofische_groep <- data_trofische_groep %>% + rename_all(tolower) %>% + rename(nednaam = species) + +# testen voor dubbels in trofische groep +# data_trofische_groep %>% +# group_by(Species, Indicator) %>% +# summarise(n = n()) %>% +# ungroup() %>% +# filter(n > 1) +# +# data_trofische_groep %>% +# group_by(Species) %>% +# summarise(n = n()) %>% +# ungroup() %>% +# filter(n > 1) + + +# toevoegen trofisch groep aan dataset +Waterbirds_Moneos <- + Waterbirds_Moneos %>% + left_join(data_trofische_groep) + +``` + + + +##### gebiedsindeling T2021 + +```{r gebiedsindeling T2021} + +data_gebiedsindeling_T2021 <- + read_delim(paste0(pad_data, "Gebiedsindeling_T2021.csv"), + delim = ";") + +data_gebiedsindeling_T2021 <- + data_gebiedsindeling_T2021 %>% + mutate(rivier = case_when( + niveau4 == "Rupel" ~ "Rupel", + niveau4 == "GetijdeDurme" ~ "Durme", + niveau4 == "GetijdeDijle" ~ "Dijle", + niveau4 == "GetijdeZenne" ~ "Zenne", + niveau4 == "Monding" ~ "Monding", + niveau2 == "Westerschelde" ~"Westerschelde", + TRUE ~ "Zeeschelde" + )) + +data_gebiedsindeling_T2021 <- data_gebiedsindeling_T2021 %>% + rename(gebiedsgroep = krw) %>% + select("niveau1", "niveau2","niveau3", "gebiedsgroep", "rivier") %>% + distinct() %>% + dplyr::filter(gebiedsgroep != "Getijdenetes") + +knitr::kable(data_gebiedsindeling_T2021) + + +#### toevoegen gebiedsindeling EMSE + Waterbirds_Moneos <- + Waterbirds_Moneos %>% + dplyr::left_join(data_gebiedsindeling_T2021) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier"))) + +Waterbirds_Moneos %>% + distinct(niveau3) + +Waterbirds_sets <- + Waterbirds_sets %>% + dplyr::left_join(data_gebiedsindeling_T2021) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier"))) + +Waterbirds_sets %>% + distinct(niveau3) + +# Waterbirds_all <- +# Waterbirds_all %>% +# left_join(data_gebiedsindeling_T2021, na.rm = TRUE) %>% +# mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier"))) +# +# Waterbirds_all %>% +# distinct(niveau3) + +# data_watervogels$niveau3 <- factor(data_watervogels1$niveau3, levels = c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier")) %>% + +``` + + +```{r wegschrijven-data} + +Waterbirds_Moneos %>% + write_delim(paste0(pad_data, "Watervogels_Zeeschelde_moneos.csv"), + delim = ";") + +Waterbirds_sets %>% + write_delim(paste0(pad_data, "Watervogels_analysesets.csv"), + delim = ";") + +table(Waterbirds_Moneos$gebiedsgroep_code) + +Waterbirds_Moneos %>% + mutate(maand = month(teldatum)) %>% + dplyr::select(-c(taxongroepcode,gebiedsgroep_code, wetnaam, teldatum, analyseset)) %>% + dplyr::rename(KRW_zone = gebiedsgroep) %>% + write_delim(paste0(pad_data, "Watervogels_ZeescheldeVLIZ.csv"), + delim = ";") + + +WaterbirdsBT_sigma_estuarien <- + Waterbirds_all %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Ontpoldering" | gebiedsgroep == "GGG") %>% + complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), + nesting(nednaam, wetnaam, taxongroepcode), + fill = list(0)) + +WaterbirdsBT_sigma_estuarien %>% + mutate(maand = month(teldatum)) %>% + dplyr::rename(Sigmagebiedstype = gebiedsgroep) %>% + mutate(niveau3 = case_when( + gebiedsgroep_code == "MH" ~ "Saliniteitsgradient", + gebiedsgroep_code == "OH" ~ "Oligohalien", + gebiedsgroep_code == "ZLVT"~ "Zoet lang verblijf", + gebiedsgroep_code == "ZKVT"~ "Zoet kort verblijf", + gebiedsgroep_code == "Durme"~ "Durme", + gebiedsgroep_code == "Rupel"~ "Rupel", + TRUE ~ "Zoet zijrivier" + )) %>% + dplyr::select(-c(gebiedsgroep_code, taxongroepcode, wetnaam, teldatum, analyseset, gebiedscode, gebied)) %>% + write_delim(paste0(pad_data, "Watervogels_Sigma_estuarienVLIZ.csv"), + delim = ";") + + + +# WaterbirdsBT_sigma_wetland <- +# Waterbirds_all %>% +# dplyr::filter(gebiedsgroep == "Wetland") %>% +# group_by(gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# wetnaam, +# taxongroepcode) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# mutate(analyseset = "Sigma_wetland") + +# WaterbirdsBT_ZSCH %>% +# write_delim(paste0(pad_data, "Watervogels_Zeeschelde_SS.csv"), +# delim = ";") + +# WaterbirdsBT_sigma %>% +# write_delim(paste0(pad_data, "Watervogels_Sigma.csv"), +# delim = ";") +# +# WaterbirdsBT_sigma_zeeschelde %>% +# write_delim(paste0(pad_data, "Watervogels_Sigma_zeeschelde.csv"), +# delim = ";") +# +# +# WaterbirdsBT_vallei %>% +# write_delim(paste0(pad_data, "Watervogels_Vallei.csv"), +# delim = ";") +# WaterbirdsBT_vallei_zeeschelde %>% +# write_delim(paste0(pad_data, "Watervogels_Vallei_zeeschelde.csv"), +# delim = ";") +# +# WaterbirdsBT_sigma_estuarien %>% +# write_delim(paste0(pad_data, "Watervogels_Sigma_estuarien.csv"), +# delim = ";") +# +# WaterbirdsBT_sigma_wetland %>% +# write_delim(paste0(pad_data, "Watervogels_Sigma_wetland.csv"), +# delim = ";") + +``` + + + + diff --git a/moneos_2024/100_watervogels/20_moneos_watervogels_analyse.Rmd b/moneos_2024/100_watervogels/20_moneos_watervogels_analyse.Rmd new file mode 100644 index 0000000..33e6905 --- /dev/null +++ b/moneos_2024/100_watervogels/20_moneos_watervogels_analyse.Rmd @@ -0,0 +1,3133 @@ +--- +params: + hoofdstuk: "100_watervogels" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0("../", + "/output") + )}) + rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, +title: "analyse watervogels" +output: + bookdown::word_document2 +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.showtext = TRUE, dpi = 300) + +``` + +```{r libraries} + +library(tidyverse) +library(lubridate) +# library(readxl) +library(INBOtheme) +library(writexl) +library(rprojroot) ## workaround pad +library(RcppRoll) +``` + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + +```{r data-watervogels inlezen} + +data_watervogels <- + read_delim(paste0(pad_data, "Watervogels_Zeeschelde_Moneos.csv"), + delim = ";") +data_watervogels <- data_watervogels %>% +mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) + + +data_analysesets <- + read_delim(paste0(pad_data, "Watervogels_analysesets.csv"), + delim = ";") +data_analysesets <- data_analysesets %>% +mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) + +Waterbirds <- + read_delim(paste0(pad_data, "Watervogels_all_ruwedata.csv"), + delim = ";")%>% +mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) + +Waterbirds_sigma_estuarien <- + Waterbirds %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Ontpoldering" | gebiedsgroep == "GGG") %>% + complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, gebied, telseizoen, teldatum), + nesting(nednaam, wetnaam, taxongroepcode), + fill = list(0)) + +Waterbirds_sigma_estuarien <- Waterbirds_sigma_estuarien %>% + mutate(maand = month(teldatum)) %>% + dplyr::rename(Sigmagebiedstype = gebiedsgroep) %>% + mutate(niveau3 = case_when( + gebiedsgroep_code == "MH" ~ "Saliniteitsgradient", + gebiedsgroep_code == "OH" ~ "Oligohalien", + gebiedsgroep_code == "ZLVT"~ "Zoet lang verblijf", + gebiedsgroep_code == "ZKVT"~ "Zoet kort verblijf", + gebiedsgroep_code == "Durme"~ "Durme", + gebiedsgroep_code == "Rupel"~ "Rupel", + TRUE ~ "Zoet zijrivier")) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Zoet zijrivier"))) + +# data_watervogels_ZSCHss <- +# read_delim(paste0(pad_data, "Watervogels_Zeeschelde_SS.csv"), +# delim = ";") +# +# data_watervogels_sigma <- +# read_delim(paste0(pad_data, "Watervogels_Sigma.csv"), +# delim = ";") +# +# data_watervogels_sigma_zeeschelde <- +# read_delim(paste0(pad_data, "Watervogels_Sigma_zeeschelde.csv"), +# delim = ";") +# +# data_watervogels_sigma_estuarien <- +# read_delim(paste0(pad_data, "Watervogels_Sigma_estuarien.csv"), +# delim = ";") +# +# data_watervogels_sigma_wetland <- +# read_delim(paste0(pad_data, "Watervogels_Sigma_wetland.csv"), +# delim = ";") +# +# data_watervogels_vallei <- +# read_delim(paste0(pad_data, "Watervogels_Vallei.csv"), +# delim = ";") +# data_watervogels_vallei_zeeschelde <- +# read_delim(paste0(pad_data, "Watervogels_Vallei_zeeschelde.csv"), +# delim = ";") +# +# data_watervogels_Zeeschelde_ZR_Sigma <- +# data_watervogels %>% +# bind_rows(data_watervogels_sigma) +# +# data_watervogels_Zeeschelde_Sigma_estuarien <- +# data_watervogels %>% +# dplyr::filter(rivier == "Zeeschelde") %>% +# bind_rows(data_watervogels_sigma_estuarien) +# +# data_watervogels_Zeeschelde_ZR_Sigma_estwet_vallei <- +# data_watervogels %>% +# bind_rows(data_watervogels_sigma_estuarien) %>% +# bind_rows(data_watervogels_sigma_wetland) %>% +# bind_rows(data_watervogels_vallei) +# +# data_watervogels_Zeeschelde_ZR_Sigma_Vallei <- +# data_watervogels_Zeeschelde_ZR_Sigma %>% +# bind_rows(data_watervogels_vallei) +# +# data_watervogels_ZSCH_Sigmass <- +# data_watervogels_ZSCHss %>% +# bind_rows(data_watervogels_sigma_zeeschelde) +# +# data_watervogels_ZSCH_Sigma_valleiss <- +# data_watervogels_ZSCH_Sigmass %>% +# bind_rows(data_watervogels_vallei_zeeschelde) + + +## toevoegen nultellingen (reeds in data script toegevoegd) +# data_watervogels <- +# data_watervogels %>% +# complete(nesting(gebiedsgroep_code, gebiedsgroep, rivier, telseizoen, teldatum), +# nesting(nednaam, wetnaam, taxongroepcode), +# fill = list(aantal = 0)) + +# toevoegen jaar en maand +data_watervogels <- + data_watervogels %>% + mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + +data_analysesets <- + data_analysesets %>% + mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + +Waterbirds <- + Waterbirds %>% + mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + +Waterbirds_sigma_estuarien <- + Waterbirds_sigma_estuarien %>% + mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + +# data_watervogels_Zeeschelde_Sigma_estuarien <- +# data_watervogels_Zeeschelde_Sigma_estuarien %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_sigma_estuarien <- +# data_watervogels_sigma_estuarien %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_sigma_wetland <- +# data_watervogels_sigma_wetland %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_ZSCH_Sigmass <- +# data_watervogels_ZSCH_Sigmass %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_ZSCHss <- +# data_watervogels_ZSCHss %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_ZSCH_Sigma_valleiss <- +# data_watervogels_ZSCH_Sigma_valleiss %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_Zeeschelde_ZR_Sigma <- +# data_watervogels_Zeeschelde_ZR_Sigma %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_Zeeschelde_ZR_Sigma_Vallei <- +# data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) +# +# data_watervogels_Zeeschelde_ZR_Sigma_estwet_vallei <- +# data_watervogels_Zeeschelde_ZR_Sigma_estwet_vallei %>% +# mutate(jaar = teldatum %>% +# ymd() %>% +# year(), +# maand = teldatum %>% +# ymd() %>% +# month()) + + +# vroegste en meest recente telseizoen +vroegste_telseizoen <- + data_watervogels %>% + pull(telseizoen) %>% + unique() %>% + sort() %>% + first() + +laatste_telseizoen <- + data_watervogels %>% + pull(telseizoen) %>% + unique() %>% + sort() %>% + last() + + +# vroegste en meest recente jaar +vroegste_jaar <- + data_watervogels %>% + pull(jaar) %>% + unique() %>% + sort() %>% + first() + +laatste_jaar <- + data_watervogels %>% + pull(jaar) %>% + unique() %>% + sort() %>% + last() + +``` + + +##### testen voor dubbels + +```{r data-controle} + +# testen voor dubbels in tellingen +dubbele_tellingen <- + data_watervogels %>% + group_by_at(vars(-aantal)) %>% + mutate(n = n()) %>% + ungroup() %>% + dplyr::filter(n>1) %>% + arrange() + +``` + +- Er zijn `r nrow(dubbele_tellingen)` dubbele tellingen in de dataset + +##### rivieren in de dataset + +```{r rivieren} + +rivieren <- + data_watervogels %>% + distinct(gebiedsgroep_code, gebiedsgroep, rivier) + +knitr::kable(rivieren) + +``` + +##### gebiedsindeling T2021 + +```{r gebiedsindeling T2021} + +data_gebiedsindeling_T2021 <- + read_delim(paste0(pad_data, "Gebiedsindeling_T2021.csv"), + delim = ";") + +data_gebiedsindeling_T2021 <- + data_gebiedsindeling_T2021 %>% + mutate(rivier = case_when( + niveau4 == "Rupel" ~ "Rupel", + niveau4 == "GetijdeDurme" ~ "Durme", + niveau4 == "GetijdeDijle" ~ "Dijle", + niveau4 == "GetijdeZenne" ~ "Zenne", + niveau4 == "GetijdeNete" ~ "Nete", + niveau4 == "Monding" ~ "Monding", + niveau2 == "Westerschelde" ~"Westerschelde", + TRUE ~ "Zeeschelde" + )) + +data_gebiedsindeling_T2021 <- data_gebiedsindeling_T2021 %>% + rename(gebiedsgroep = krw) %>% + select("niveau1", "niveau2","niveau3", "gebiedsgroep", "rivier") %>% + distinct() %>% + dplyr::filter(gebiedsgroep != "Getijdenete") + +knitr::kable(data_gebiedsindeling_T2021) + +# +# #### toevoegen gebiedsindeling EMSE +# data_watervogels <- +# data_watervogels %>% +# left_join(data_gebiedsindeling_T2021, na.rm = TRUE) %>% +# mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier"))) +# +# data_watervogels %>% +# distinct(niveau3) +# + + +data_watervogels$niveau3 <- factor(data_watervogels$niveau3, levels = c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme", "Zoet zijrivier")) +data_watervogels$niveau2 <- factor(data_watervogels$niveau2) + +``` + +##### oppervlakte beschikbaar habitat + +```{r data-oppervlakte-slikken} + +# data_oppecotoop <- +# read_delim(paste0(pad_data, "OppEcotoop2001_19_2022copy2019.csv"), +# delim = ";") #remark aug 2024: file - values corrupt (komma separation??) + +##new file - same as benthosfile + +data_oppecotoop <- + read_csv2(paste0(pad_data, "SpatialEcotopenOpp_INBO_2021.csv")) + +print(head(data_oppecotoop)) + +data_oppecotoop <-data_oppecotoop %>% + dplyr::filter(waterloop != "Tijarm") %>% + mutate(niveau3 = case_when( + waterloop == "Zeeschelde IV" ~ "Saliniteitsgradient", + waterloop == "Zeeschelde III" ~"Oligohalien", + waterloop == "Zeeschelde II" ~ "Zoet lang verblijf", + waterloop == "Zeeschelde I" ~ "Zoet kort verblijf", + waterloop == "Rupel"~ "Rupel", + waterloop == "Durme" ~ "Durme", + TRUE ~ "rest" + )) + +data_oppecotoop <- data_oppecotoop %>% + dplyr::filter(niveau3 != "rest") %>% + left_join(data_gebiedsindeling_T2021) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf", "Rupel","Durme"))) + +## we selecteren de jaren met volledige kaart BEZ BOZ Rupel Durme + +data_oppecotoop <-data_oppecotoop %>% + mutate(telseizoen = case_when( + jaar == "2001" ~ "2001/02", + jaar == "2010" ~ "2010/11", + jaar == "2013" ~ "2013/14", + jaar == "2016" ~ "2016/17", + jaar == "2019" ~ "2019/20", + jaar == "2022" ~ "2022/23", + TRUE ~ "incomplete" + )) %>% + dplyr::filter(telseizoen != "incomplete") + + +data_oppzachtslikKRWZS <- data_oppecotoop %>% + dplyr::filter(str_detect(ecotoopruw, "zacht")) %>% + # dplyr::filter(Uitbreiding == 0) %>% ##uitbreidingen worden niet of niet goed geteld vanop de boot bij laagwater + # dplyr::filter(str_detect(Ecotoop, "zacht")) %>% + group_by(niveau3,jaar,telseizoen) %>% + summarise(somha = sum(SomVanShape_Area)) %>% + ungroup() + +##correctie op Durme slikoppervlakte : stroomopwaartse oppervlakte 4.8ha (ongeveer) er vanaf getrokken +data_oppzachtslikKRWZS <- data_oppzachtslikKRWZS %>% + mutate(somha = case_when(niveau3 == "Durme" ~ somha - 4.8, + TRUE ~ somha)) +##correctie op uitbreidingen in Zoet kort vanaf telseizoen 2016: zacht slik - 12ha (niet te tellen vanaf boot) + +data_oppzachtslikKRWZS <- data_oppzachtslikKRWZS %>% + mutate(somha = case_when(niveau3 == "Zoet kort verblijf" & jaar > 2013 ~ somha - 12, + TRUE ~ somha)) + + +# data_oppzachtslikKRWZS %>% +# write_delim(paste0(pad_data, "data_oppzachtslikKRWZS.csv"), +# delim = ";") +#we koppelen de data aan volledige jaren (jaar x = juni x tot juli x+1) of aan winterjaar of wintertelseizoen (okt jaar x - mrt jaar x+1) + +###dataset nog niet goed de jaargangen met Zeeschelde III vr 2012,2014,2015,2017,2018 moeten eruit - slechts gedeeltelijke data + # dplyr::filter(KRWzone != "Zeeschelde III + Rupel" + # if Jaar == 2012,) +###dataset ook nog beperkt aantal jaren - meerdere jaren zouden geintepoleerd kunnen worden - nog uit te zoeken hoe je dat in R doet + +# library(zoo) + + +# df %>% +# group_by(variable) %>% +# arrange(variable, event.date) %>% +# mutate(ip.value = na.approx(value, maxgap = 4, rule = 2)) + + +``` + +##### soorten in de dataset + +```{r soorten} + +###opgelet voor de natuurindicator werken we met alle soorten, dus render script zonder selectie op soorten die meer dan 30 keer voorkomen + +# soortnamen +soortnamen <- + data_watervogels %>% + distinct(nednaam, wetnaam) + +#lijst ZS soorten die minstens 30 keer werden waargenomen - EMSE + +overzichtsoorten_analyse <- + data_watervogels %>% + group_by(nednaam) %>% + dplyr::filter(nednaam != "Morinelplevier") %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + dplyr::filter(aantal > 30) %>% + select(nednaam) %>% + ungroup() + +#ontbreken er soorten waarvan we geen dieet opnamen in data trofische groep? + +# trofische_groep_aanvullen <- +# left_join(overzichtsoorten_analyse, data_trofische_groep) %>% +# dplyr::filter(is.na(trofische_groep)) +# +# # trofische_groep_aanvullen %>% +# # write_delim(paste0(pad_data, "trofischegroepaanvullen.csv"), +# # delim = ";") +# +# Soorten_analyse_trofisch <- +# left_join(overzichtsoorten_analyse, data_trofische_groep) +# +# Soorten_analyse_trofisch %>% +# rename(Soort = nednaam) %>% +# rename(Trofie = trofische_groep) %>% +# rename(Exoot = exoot) %>% +# write_delim(paste0(pad_tabellen, "Soorten_EMSE_analyse.csv"), +# delim = ";") + +###verwijder alle soorten die niet voldoen aan het criterium van minimaal 30 wrn EMSE + +data_watervogels <- data_watervogels %>% + dplyr::filter(nednaam %in% overzichtsoorten_analyse$nednaam) + +geen_trofische_groep <- + data_watervogels %>% + dplyr::filter(is.na(trofische_groep)) %>% + pull(nednaam) %>% + unique() %>% + sort() + +tabel_trofische_groep <- + data_watervogels %>% + dplyr::filter(!is.na(trofische_groep)) %>% + distinct(trofische_groep, nednaam) %>% + group_by(trofische_groep) %>% + summarise(aantal_soorten = n()) %>% + ungroup() + + +``` + +- Er zijn `r nrow(soortnamen)` soorten in de dataset +- `r length(geen_trofische_groep)` soorten hebben geen indicatie van trofische groep + - `r geen_trofische_groep` +- de overige soorten behoren tot volgende trofische groepen + - `r knitr::kable(tabel_trofische_groep)` + +#### shannon diversity + +```{r Shannon index} + +## inclusief exoten, inclusief meeuwen en sternen + +data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 %in% c(2001:2023)) %>% + # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% + # dplyr::filter(gebiedsgroep != "Getijdedijle en Getijdezenne") %>% #EMSE rapporteert niet over Dijle en Zenne + dplyr::filter(gebiedsgroep != "Getijdedijle en Getijdezenne" | telseizoen1 != 2006) %>% + group_by(telseizoen1, niveau3) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau3, nednaam,totaal) %>% + summarise(aantalsp = sum(aantal, na.rm = TRUE)) %>% + dplyr::filter(aantalsp > 0) %>% + mutate(pi = aantalsp/totaal) %>% + mutate(lnpi = log(pi)) %>% + mutate(pilnpi = pi * lnpi) %>% + ungroup() %>% + group_by(telseizoen1, niveau3) %>% + summarise(H_shannon = sum(pilnpi *-1, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), H_shannon, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line(size = 1) + + labs(x = "telseizoen", + y = "Shannon diversiteit H") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank())+ + scale_y_continuous() + +# ggsave(paste0(pad_figuren, "100_figuur_ShannonDiversity_wintervogels.jpg")) +ggsave(paste0(pad_figuren, "100_figuur_ShannonDiversity_wintervogels_metmeeuwen.jpg")) + +levels(data_watervogels$niveau3) + +###facet_wrap figuur +data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 %in% c(2009:2023)) %>% + # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% + # dplyr::filter(gebiedsgroep != "Getijdedijle en Getijdezenne") %>% #EMSE rapporteert niet over Dijle en Zenne + dplyr::filter(gebiedsgroep != "Getijdedijle en Getijdezenne" | telseizoen1 != 2006) %>% + group_by(telseizoen1, niveau3) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau3, nednaam,totaal) %>% + summarise(aantalsp = sum(aantal, na.rm = TRUE)) %>% + dplyr::filter(aantalsp > 0) %>% + mutate(pi = aantalsp/totaal) %>% + mutate(lnpi = log(pi)) %>% + mutate(pilnpi = pi * lnpi) %>% + ungroup() %>% + group_by(telseizoen1, niveau3) %>% + summarise(H_shannon = sum(pilnpi *-1, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), H_shannon, group = niveau3)) + + geom_line(size = 1) + + labs(x = "telseizoen", + y = "Shannon diversiteit H") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank())+ + scale_y_continuous()+ + facet_wrap(~niveau3) + + + +##grafiek niveau2 +data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 %in% c(2001:2023)) %>% + # dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% + # dplyr::filter(gebiedsgroep != "Getijdedijle en Getijdezenne") %>% #EMSE rapporteert niet over Dijle en Zenne + group_by(telseizoen1, niveau2) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau2, nednaam,totaal) %>% + summarise(aantalsp = sum(aantal, na.rm = TRUE)) %>% + dplyr::filter(aantalsp > 0) %>% + mutate(pi = aantalsp/totaal) %>% + mutate(lnpi = log(pi)) %>% + mutate(pilnpi = pi * lnpi) %>% + ungroup() %>% + group_by(telseizoen1, niveau2) %>% + summarise(H_shannon = sum(pilnpi *-1, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), H_shannon, group = niveau2, color = niveau2)) + + geom_point(aes(shape = niveau2)) + + geom_line(size = 1) + + labs(x = "telseizoen", + y = "Shannon diversiteit H") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank())+ + scale_y_continuous()+ + ylim(0.75, 2.5) + +ggsave(paste0(pad_figuren, "100_figuur_ShannonDiversity_wintervogels_metmeeuwen_niveau2.jpg")) + +``` + +##### figuur maandelijkse totalen wintervogels Zeeschelde + +```{r 100-figuur-maandelijkse-totalen-winter-Zeeschelde, fig.height=5, fig.width=8} + +# data_watervogels %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% ##♦dit rekent inclusief rupel +# mutate(datum = paste(jaar, maand, "15", sep = "-") %>% +# ymd()) %>% +# group_by(telseizoen, datum) %>% +# summarise(aantal = sum(aantal)) %>% +# ungroup() %>% +# ggplot(aes(datum, aantal)) + +# geom_col() + +# scale_x_date(date_breaks = "1 year", date_labels = "%Y") + +# labs(x = "datum", y = "aantal") + +# theme(axis.text.x = element_text(angle = 35)) +# probleem met deze figuur is dat sinds het stopzetten van de zomertellingen stroomop Antwerpen de zomercijfers niet meer in 1 figuur kunnen gezien worden - dit kan enkel nog in ZS4 waar jaarrond telling is. + +data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(teldatum > "2020-06-01") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "aantal") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(color = "trendlijn")) + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSwinter.jpg")) + +data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum > "2007-06-01") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "aantal") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(color = "trendlijn")) +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSwinter_sinds2008.jpg")) + +``` + +##### figuur maandelijkse totalen vogels Zeeschelde IV - Saliniteitsgradiënt + +```{r 100-figuur-maandelijkse-totalen-ZeescheldeIV, fig.height=5, fig.width=8} +data_watervogels %>% + dplyr::filter(gebiedsgroep_code == "ZS4") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + # dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum < "2023-04-01") %>% + # dplyr::filter(teldatum > "2007-06-01") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen,datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "aantal", title = "Maandelijkse totalen saliniteitsgradiënt") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(), color = "red") + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSIV.jpg")) + +data_watervogels %>% + dplyr::filter(gebiedsgroep_code == "ZS4") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + # dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum > "2007-06-01") %>% + dplyr::filter(teldatum < "2023-04-01") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen,datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "aantal", title = "Maandelijkse totalen saliniteitsgradiënt") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(), color = "red") + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSIV_sinds2008.jpg")) + +data_watervogels %>% + dplyr::filter(gebiedsgroep_code == "ZS4") %>% + dplyr::filter(nednaam == "Scholekster") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(maand %in% c(4:9)) %>% + dplyr::filter(teldatum > "1991-10-01" & teldatum < "2023-04-01") %>% + # dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen,datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(title = "scholekster",x = "jaar", y = "aantal") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(), color = "red") + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_saliniteitsgradient_scholekster.jpg")) +``` + +##### figuur maandelijkse totalen vogels Zeeschelde II - Zoet lang - focusgrafieken +```{r 100-figuur-maandelijkse-totalen-ZeescheldeII, fig.height=5, fig.width=8} + +data_watervogels %>% + dplyr::filter(gebiedsgroep_code == "ZS2") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + # dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum > "2007-06-01") %>% + dplyr::filter(teldatum < "2023-04-01") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen,datum) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 year", date_labels = "%Y") + + labs(x = "jaar", y = "aantal", title = "Maandelijkse totalen zoet lang Boottellingen") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(), color = "red") + +ggsave(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSII_sinds2008.jpg")) + +Waterbirds_all <- + read_delim(paste0(pad_data, "Watervogels_all_ruwedata.csv"), + delim = ";") +Waterbirds_all <- + Waterbirds_all %>% + mutate(jaar = teldatum %>% + ymd() %>% + year(), + maand = teldatum %>% + ymd() %>% + month()) + +Waterbirds_all %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + group_by(telseizoen, maand, gebiedsgroep_code) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep_code) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + facet_wrap(~gebiedsgroep_code, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien_wetland.jpg")) + +table(check$gebiedsgroep_code) + +Waterbirds_all %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand,gebiedsgroep) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep) %>% + summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), gemiddelde)) + + geom_col() + + labs(x = "telseizoen", + y = "gemiddelde per telseizoen") + + facet_wrap(~gebiedsgroep, + # ncol = 2, scales = "free" + ) + + theme(axis.text.x = element_text(angle = 90)) + + + +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand, gebiedsgroep_code) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep_code) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen Sigma estuarien") + + facet_wrap(~gebiedsgroep_code, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand, gebiedsgroep_code) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep_code) %>% + summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), gemiddelde)) + + geom_col() + + labs(x = "telseizoen", + y = "gemiddelde per telseizoen Sigma estuarien") + + facet_wrap(~gebiedsgroep_code, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + +``` + + +```{r 100-figuur-maandelijkse-wintertotalen-KRWzones} +data_watervogels %>% + # dplyr::filter(gebiedsgroep_code == "ZS4") %>% + mutate(datum = paste(jaar, maand, "15", sep = "-") %>% + ymd()) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(teldatum > "2005-10-01" & teldatum < "2022-04-01") %>% # + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + dplyr::filter(nednaam =="Wintertaling") %>% + group_by(telseizoen,datum,gebiedsgroep_code, niveau3) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(datum, aantal)) + + geom_col() + + scale_x_date(date_breaks = "1 month", date_labels = "%m%Y") + + labs(x = "jaar", y = "aantal") + + theme(axis.text.x = element_text(angle = 90))+ + geom_smooth(aes(color = "trendlijn")) + + facet_wrap(~niveau3, ncol = 2, scales = "free") + + + +``` + +##### figuur verhouding aantallen + +```{r 100-figuur-verhouding-aantallen, fig.height=5, fig.width=8} + +# figuur met gemiddelde over tellingen per seizoen en gebiedsgroep +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% #Het telgebied oude durme en durme was vroeger samengeteld - dat is een probleem voor de estuariene evaluatie vn de watervogels + dplyr::filter(rivier =="Zeeschelde") %>% + group_by(telseizoen, niveau3, rivier) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, fill = niveau3)) + + geom_col(position = "fill") + + scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + scale_fill_manual(values = inbo_palette()) + + labs(x = "telseizoen", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_verhouding_aantallen_niveau3Zeeschelde.jpg")) + +# dit is de oorspronkelijke figuur met de som over alle tellingen +# data_watervogels %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen, gebiedsgroep) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal, fill = gebiedsgroep)) + +# geom_col(position = "fill") + +# scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + +# scale_fill_manual(values = inbo.2015.colours()) + +# labs(x = "telseizoen", y = "") + +# theme(axis.text.x = element_text(angle = 35), +# legend.position = "bottom", +# legend.title = element_blank()) + +``` + +##### figuur wintermaxima Zeeschelde + +```{r 100-figuur-wintermaxima-Zeeschelde, fig.height=6, fig.width=8} + + +# figuur met max over tellingen per seizoen en gebiedsgroep + +data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_Zeeschelde.jpg")) + +wintermaximumZS <- data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen) %>% + summarise(maximum = max(som, na.rm = TRUE)) + +knitr::kable(wintermaximumZS) + +# tabel met maximum per jaar en in welke maand dit viel +# tabel waarin geteld wordt in welke maand het maximum valt per seizoen /// lukt me niet direct om de code goed te krijgen +# wintermaximummaandZS <- data_watervogels %>% +# dplyr::filter(rivier == "Zeeschelde") %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# group_by(telseizoen, maand) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(maand, som) %>% +# summarise(maandmax = count(som, na.rm = TRUE)) +# +# knitr::kable(wintermaximummaandZS) +``` + +##### figuur wintermaxima KRW + +```{r 100-figuur-wintermaxima-KRWzones, fig.height=6, fig.width=8} + + +# figuur met max over tellingen per seizoen en gebiedsgroep + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2008) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% #Het telgebied oude durme en durme was vroeger samengeteld - dat is een probleem voor de estuariene evaluatie vn de watervogels + group_by(telseizoen, niveau3, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + facet_wrap(~niveau3, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_niveau3.jpg")) + + +``` + +##### figuur wintermaxima zijrivieren + +```{r 100-figuur-wintermaxima-zijrivieren, fig.height=6, fig.width=8} + +# figuur met max over tellingen per seizoen en gebiedsgroep + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, rivier, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, rivier) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + facet_wrap(~rivier, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_rivier.jpg")) +``` + +#### Watervogels Sigma estuarien en wetlands + +```{r winteraantallen Sigma} + +table(Waterbirds$analyseset) +table(Waterbirds$gebiedsgroep) + +Waterbirds %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Estuarien" | gebiedsgroep == "Wetland") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand, gebiedsgroep) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + facet_wrap(~gebiedsgroep, + # ncol = 2, scales = "free" + ) + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien_wetland.jpg")) + +# Waterbirds %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(telseizoen1 > 2009) %>% +# dplyr::filter(analyseset == "SIGMA_MIDMA") %>% +# dplyr::filter(gebiedsgroep == "Wetland") %>% +# dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld +# group_by(telseizoen, maand, gebiedsgroep, gebiedsgroep_code) %>% +# summarise(som = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep, gebiedsgroep_code) %>% +# summarise(maximum = max(som, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), maximum)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "wintermaximum per telseizoen") + +# facet_wrap(~gebiedsgroep_code, +# # ncol = 2, scales = "free" +# ) + +# theme(axis.text.x = element_text(angle = 90)) + + +Waterbirds %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + # dplyr::filter(telseizoen1 > 2009) %>% + dplyr::filter(analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep == "Estuarien") %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, maand, gebiedsgroep) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), maximum)) + + geom_col() + + labs(x = "telseizoen", + y = "wintermaximum per telseizoen") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien.jpg")) +``` + +#### details Sigmagebieden + +```{r detail sigmagebieden} + +check <- Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + group_by(telseizoen1, maand, gebied) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, gebied) %>% + summarise(maximum = max(som, na.rm = TRUE)) + +table(Waterbirds_sigma_estuarien$gebied) + +Waterbirds_sigma_estuarien <-Waterbirds_sigma_estuarien %>% +mutate(gebied = fct_relevel(gebied, c("Molen / Potpolder LILLO", "Burchtse Weel - Getijdengebied","GOG-GGG Kruibeekse Polder","GOG-GGG Bazelse Polder Noord","Bazelse Kreek KRUIBEKE", "Kruibeekse Kreek KRUIBEKE","Lippensbroek HAMME","Groot Schoor HAMME", "Bergenmeersen WICHELEN","Wijmeers-Ontpoldering UITBERGEN", "Ontpoldering Heusdenbrug (vroeger Driehoekig Plasje) HEUSDEN", "GGG Zennegat MECHELEN"))) + +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + group_by(telseizoen1, maand, gebied, Sigmagebiedstype) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, gebied, Sigmagebiedstype) %>% + summarise(maximum = max(som, na.rm = TRUE)) %>% + ggplot(aes(as.factor(telseizoen1), maximum, colour = Sigmagebiedstype)) + + geom_line(aes(group = 1)) + + # geom_point()+ + facet_wrap(~gebied, scales = "free")+ + expand_limits(y=0)+ + theme(axis.text.x = element_text(angle = 90)) + + + +ggsave(paste0(pad_figuren, "100_figuur_wintermaxima_sigmagebieden_estuarien.jpg"), width = 30, height = 15, units = "cm" ) + +Waterbirds_sigma_estuarien %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2009) %>% + group_by(telseizoen1, maand, gebied, Sigmagebiedstype) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, gebied, Sigmagebiedstype) %>% + summarise(gemiddelde = mean(som, na.rm = TRUE)) %>% + ggplot(aes(as.factor(telseizoen1), gemiddelde, colour = Sigmagebiedstype)) + + geom_line(aes(group = 1)) + + # geom_point()+ + facet_wrap(~gebied, scales = "free")+ + expand_limits(y=0)+ + theme(axis.text.x = element_text(angle = 90)) + +``` + +#### Natuurindicator berekening IHD-Z + +```{r wintermaximum-Natuurindicatorberekening, fig.height=6, fig.width=8} + +# IHD-Z: gemiddelde van de seizoensmaxima (excl. meeuwen) over de laatse 5 seizoenen mag niet minder zijn dan 40 000. Dit criterium is afgeleid van de aantallen op de Zeeschelde maar de doelen moeten gehaald worden binnen werkingsgebied IHD-Z +# er is ook een criterium voor het seizoensminimum voor de Zeeschelde (3500) maar door het terugschroeven van de monitoring kan dit niet meer berekend worden (en in de sigma en vallei gebieden is er geen systematische jaarrond watervogeltelling als je dit zou willen evalueren op het volledige IHD-Z gebied) + +##pas telseizoen1 aan! + +SeizMax <- function(data, type){ + data %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 %in% c(1991:2023)) %>% + dplyr::filter(taxongroepcode != "MS") %>% # geen meeuwen of sternen # geen meeuwen of sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + group_by(telseizoen1) %>% + summarise(Wmax = max(aantal, na.rm = TRUE)) %>% + mutate(type = type) +} + +Wmax_Zsch <- data_watervogels %>% + dplyr::filter(rivier == "Zeeschelde") %>% + SeizMax("Zeeschelde") #zonder de boottellingen op de rupel + +##voor natuurindicator met zijrivieren +Wmax_Zsch_ZR <- data_watervogels %>% + SeizMax("Zeeschelde + zijrivieren") +Wmax_Zsch_ZR_Sigma <- Waterbirds %>% + dplyr::filter(analyseset != "VALLEI_MIDMA") %>% + dplyr::filter(gebiedsgroep_code == "ZSEST"| gebiedsgroep_code == "WETL" ) %>% + group_by(telseizoen1, + gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + taxongroepcode, + maand) %>% + summarise(aantal = sum(aantal)) %>% + SeizMax("Zeeschelde + zijrivieren + Sigma") + + +table(Waterbirds$gebiedsgroep_code) + +Wmax_Zsch_boottelling <- Waterbirds %>% + dplyr::filter(gebiedsgroep_code == "ZSEST") %>% + dplyr::filter(analyseset == "boottelling") %>% + group_by(telseizoen1, + gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + taxongroepcode, + maand) %>% + summarise(aantal = sum(aantal)) %>% + SeizMax("Zeeschelde_Rupelboottelling") #met boottellingen op Rupel + +# Wmax_Zsch_boottellingss <- data_analysesets %>% +# dplyr::filter(analyseset == "boottelling") %>% +# dplyr::filter(gebiedsgroep_code == "ZSEST") %>% +# dplyr::filter(rivier == "Zeeschelde") %>% +# group_by(telseizoen1, +# gebiedsgroep_code, +# gebiedsgroep, +# rivier, +# telseizoen, +# teldatum, +# nednaam, +# taxongroepcode, +# maand) %>% +# summarise(aantal = sum(aantal)) %>% +# SeizMax("Zeeschelde_boottellingss") + + +#wwintermaximum Zeeschelde (zonder ZR) en sigmagebieden estuarien (langs Zeeschelde) +Wmax_Zsch_Sigma_estuarien <- Waterbirds %>% + dplyr::filter(analyseset == "boottelling" | analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep_code == "ZSEST" ) %>% + dplyr::filter(rivier == "Zeeschelde") %>% + group_by(telseizoen1, + gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + taxongroepcode, + maand) %>% + summarise(aantal = sum(aantal)) %>% + SeizMax("Zeeschelde_boottelling_Sigma_estuarien") + +#wwintermaximum Zeeschelde (zonder ZR) en sigmagebieden estuarien (langs Zeeschelde) +Wmax_Zsch_Sigma_estuarien_wetland <- Waterbirds %>% + dplyr::filter(analyseset == "boottelling" | analyseset == "SIGMA_MIDMA") %>% + dplyr::filter(gebiedsgroep_code == "ZSEST"| gebiedsgroep_code == "WETL" ) %>% + dplyr::filter(rivier == "Zeeschelde") %>% + group_by(telseizoen1, + gebiedsgroep_code, + gebiedsgroep, + rivier, + telseizoen, + teldatum, + nednaam, + taxongroepcode, + maand) %>% + summarise(aantal = sum(aantal)) %>% + SeizMax("Zeeschelde_boottelling_Sigma_estuarien_wetland") + + + + + + + + +``` + +```{r bereken glijdendgemiddel met CI, include=FALSE} +# Bereken glijdend gemiddelde met CI +# data = tibble, x = column for x-data, value = column with data for rolling mean, n = width of average(window size) +mav_wm <- function(data, x, value, n){ + rol <- data %>% + mutate(x = x, + v = value, + m = roll_mean(value,n=n, fill = NA), + sd = roll_sd(value,n=n, fill = NA), + ci_min = m + 1.96*sd/sqrt(n), + ci_max = m - 1.96*sd/sqrt(n)) +} +mav_Zsc <- Wmax_Zsch %>% mav_wm(.$telseizoen1, .$Wmax, 5) +mav_Zscboottelling <- Wmax_Zsch_boottelling %>% mav_wm(.$telseizoen1, .$Wmax, 5) +mav_ZschSigma_estuarien <- Wmax_Zsch_Sigma_estuarien %>% mav_wm(.$telseizoen1, .$Wmax, 5) +mav_ZschSigma_estuarien_wetland <- Wmax_Zsch_Sigma_estuarien_wetland %>% mav_wm(.$telseizoen1, .$Wmax, 5) + +##voor natuurindicator +mav_Zsc_ZR <- Wmax_Zsch_ZR %>% mav_wm(.$telseizoen1, .$Wmax, 5) + +mav_Zsc_ZR %>% + write_csv(paste0(pad_tabellen, "mav_Zsc_ZR.csv")) +mav_Zsc_ZR %>% write_tsv(paste0(pad_tabellen, "mav_Zsc_ZR.tsv")) +mav_Zsc_ZR_Sigma <- Wmax_Zsch_ZR_Sigma %>% mav_wm(.$telseizoen1, .$Wmax, 5) +mav_Zsc_ZR_Sigma %>% write_tsv(paste0(pad_tabellen, "mav_Zsc_ZR_Sigma.tsv")) + +mav_Zsc_ZR_Sigma %>% + write_csv(paste0(pad_tabellen, "mav_Zsc_ZR_Sigma.csv")) + +# mav_ZscZRSigmaVallei <- Wmax_ZschZRSigmaVallei %>% mav_wm(.$telseizoen1, .$Wmax, 5) +# mav_ZscSigma <- Wmax_Zsch_Sigma %>% mav_wm(.$telseizoen1, .$Wmax, 5) +# mav_ZscSigmaVallei <- Wmax_Zsch_Sigma_vallei %>% mav_wm(.$telseizoen1, .$Wmax, 5) + + +# mav_Zsc %>% +# write_delim(paste0(pad_data, "mav_Zsc.csv"), +# delim = ";") + +# mav_ZscZR %>% +# write_delim(paste0(pad_data, "mav_ZscZR.csv"), +# delim = ";") +# +# mav_ZscZRSigma %>% +# write_delim(paste0(pad_data, "mav_ZscZRSigma.csv"), +# delim = ";") +# +# mav_ZscZRSigmaVallei %>% +# write_delim(paste0(pad_data, "mav_ZscZRSigmaVallei.csv"), +# delim = ";") + +# Doelstelling "Zeeschelde IHD-Z" bepaald op basis van winterseizoens glijdend gemiddelde (n=5) tussen 1995-2005 aantal vogels + +#enkel langsheen de Zeeschelde (excl. rupel) +mav_Zsc %>% + dplyr::filter(telseizoen1%in% c(1995:2005)) %>% + summarise(doel = mean(m, na.rm = TRUE)) %>% + pull() + +#enkel langsheen de Zeeschelde (incl. rupel) +mav_Zscboottelling %>% + dplyr::filter(telseizoen1%in% c(1995:2005)) %>% + summarise(doel = mean(m, na.rm = TRUE)) %>% + pull() + +##enkel berekend in de Zeeschelde vallei ss (sigmagebieden langs Zeeschelde) +# mav_ZscSigma %>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# summarise(doel = mean(m, na.rm = TRUE)) %>% +# pull() +# +# mav_ZscSigmaVallei%>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# summarise(doel = mean(m, na.rm = TRUE)) %>% +# pull() + +#gemiddelde max winterseizoen 1995-2005 Zeeschelde is 41926 (43952 als ook de boottellingen langsheen de Rupel beschouwd) - het doel is destijds afgerond naar onder en nu verondersteld als te behalen doelstelling binnen Zeeschelde + zijrivieren + Sigmagebieden (wetland + ontpoldering) (maar niet binnen de vallei IHD-Z contour) + +# mav_ZscZR %>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# summarise(doel = mean(m, na.rm = TRUE)) +# +# mav_ZscZRSigma %>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# summarise(doel = mean(m, na.rm = TRUE)) +# +# mav_ZscZRSigmaVallei %>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# summarise(doel = mean(m, na.rm = TRUE)) + + +``` + +```{r plotfunctie natuurindicator, include=FALSE} +# Plot glijdend gemiddelde + +# plot_mav <- function(data){ +# if(n_distinct(data$type)<2){ +# data %>% ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5, color="blue") + +# geom_line(aes(y=m), color="blue") + +# geom_hline(yintercept = 40000, linetype = 2, size = 1.4) + +# labs(y = "Wintermaximum") + +# scale_x_continuous(breaks = seq(1990, 2020, by = 5)) + +# scale_y_continuous(breaks = seq(0, 85000, by = 20000), +# limits = c(0, 85000)) + +# theme(axis.title.x = element_blank()) } +# else{ +# data %>% ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max, color = type), width=.2, +# position=position_dodge(0.1)) + +# geom_point(aes(y=m, color = type), size = 2.5) + +# geom_line(aes(y=m, color = type)) + +# geom_hline(yintercept = 40000, linetype = 2, size = 1.4) + +# labs(y = "Wintermaximum") + +# scale_x_continuous(breaks = seq(1990, 2020, by = 5)) + +# scale_y_continuous(breaks = seq(0, 85000, by = 20000), +# limits = c(0, 85000)) + +# theme(axis.title.x = element_blank()) + +# scale_color_manual(values=c("blue", "red"))+ +# theme(legend.title=element_blank(), +# legend.position="top") } +# } + +plot_mav <- function(data){ + if(n_distinct(data$type)<2){ + data %>% ggplot(aes(x=x)) + + geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + + geom_point(aes(y=m), size = 2.5, color="blue") + + geom_line(aes(y=m), color="blue") + + # geom_hline(yintercept = 40000, linetype = 2, size = 1.4) + + labs(y = "Wintermaximum") + + scale_x_continuous(breaks = seq(1990, 2022, by = 5)) + + scale_y_continuous(breaks = seq(0, 85000, by = 20000), + limits = c(0, 85000)) + + theme(axis.title.x = element_blank()) + }else if(n_distinct(data$type)>1 & n_distinct(data$type)<3){ + data %>% ggplot(aes(x=x)) + + geom_errorbar(aes(ymin=ci_min, ymax=ci_max, color = type), width=.2, + position=position_dodge(0.1)) + + geom_point(aes(y=m, color = type), size = 2.5) + + geom_line(aes(y=m, color = type)) + + # geom_hline(yintercept = 40000, linetype = 2, size = 1.4) + + labs(y = "Wintermaximum") + + scale_x_continuous(breaks = seq(1990, 2022, by = 5)) + + scale_y_continuous(breaks = seq(0, 85000, by = 20000), + limits = c(0, 85000)) + + theme(axis.title.x = element_blank()) + + scale_color_manual(values=c("blue", "red"))+ + theme(legend.title=element_blank(), + legend.position="top") + }else{ + data %>% ggplot(aes(x=x)) + + geom_errorbar(aes(ymin=ci_min, ymax=ci_max, color = type), width=.2, + position=position_dodge(0.1)) + + geom_point(aes(y=m, color = type), size = 2.5) + + geom_line(aes(y=m, color = type)) + + # geom_hline(yintercept = 40000, linetype = 2, size = 1.4) + + labs(y = "Wintermaximum") + + scale_x_continuous(breaks = seq(1990, 2022, by = 5)) + + scale_y_continuous(breaks = seq(0, 85000, by = 20000), + limits = c(0, 85000)) + + theme(axis.title.x = element_blank()) + + scale_color_manual(values=c("blue", "red","green"))+ + theme(legend.title=element_blank(), + legend.position="top") + } + } +``` + +```{r 100-figuur-wintermaximum-Natuurindicatorberekening, fig.height=6, fig.width=15} + +# , fig.cap="Vijfjarig glijdend gemiddelde van het wintermaximum van het totaal aantal watervogels in de getijderivieren van het Zeeschelde-estuarium." + +# mav_Zsc %>% +# dplyr::filter(telseizoen1%in% c(1995:2005)) %>% +# plot_mav() +# ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_ZS_doelIHD.jpg")) +# +# # mav_Zsc %>% bind_rows(mav_ZscSigma) %>% +# # plot_mav() +# + +mav_Zsc %>% plot_mav() + +mav_Zsc %>% bind_rows(mav_ZschSigma_estuarien) %>% plot_mav() +ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_Zeeschelde_estuarien.jpg")) + +mav_Zsc_ZR %>% plot_mav() +mav_Zsc_ZR %>% bind_rows(mav_Zsc_ZR_Sigma) %>% + plot_mav() + +ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_website2023.png"), width = 30, height = 15, units = "cm") + +mav_Zsc %>% bind_rows(mav_ZschSigma_estuarien) %>% bind_rows(mav_ZschSigma_estuarien_wetland) %>% plot_mav() +ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_ZeescheldeSS_estuarien_Wetland.png"), width = 30, height = 15, units = "cm") + +# +# mav_Zsc %>% bind_rows(mav_ZscSigma) %>% bind_rows(mav_ZscSigmaVallei) %>% +# plot_mav() +# ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_Zeeschelde_sensustricto.jpg")) +# +# +# mav_ZscZR %>% plot_mav() +# +# ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_ZSZR.jpg")) +# +# mav_ZscZR %>% bind_rows(mav_ZscZRSigma) %>% +# plot_mav() +# +# ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_ZSZR_Sigma.jpg")) +# +# mav_ZscZR %>% bind_rows(mav_ZscZRSigma) %>% bind_rows(mav_ZscZRSigmaVallei) %>% +# plot_mav() +# +# ggsave(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_ZSZR_Sigma_Vallei.jpg")) +# + +``` + +### IHD overwinterende watervogels - soortdoelstellingen S-IHD besluit + +```{r berekening s-IHD soortdoelstellingen} + +# populatiedoelstellingen te bepalen obv dataset IHD-Z werkingsgebied: Zeeschelde + zijrivieren + Sigmagebieden + exclusief rest-IHDgebied/vallei wat geen deel is van S-IHD +# pijlstaart : winter seizoensgemiddelde telseizoen 2000/01 tot 2005/06 +# wintertaling : winter seizoensgemiddelde telseizoen 1998/99 tot 2005/06 +# krakeend: winter seizoensgemiddelde telseizoen 2002/03 tot 2006/07 +# tafeleend: winter seizoensgemiddelde telseizoen 2001/02 tot 2006/07 +# bergeend: winter seizoensgemiddelde telseizoen 1992/93 tot 2006/07 +# slobeend: winter seizoensgemiddelde telseizoen 2001/02 tot 2006/07 +# kleine zwaan : winter seizoensgemiddelde telseizoen 2001/02 tot 2006/07 (niet gespecifieerd in S-IHD rapport maar hier verondersteld) +# kokmeeuw : winter seizoensgemiddelde telseizoen 2001/02 tot 2006/07 (niet gespecifieerd in S-IHD rapport maar hier verondersteld) + +##### doelstellingen op basis van Zeeschelde + zijrivieren + +doelpijlstaart <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Pijlstaart") %>% + dplyr::filter(telseizoen1 %in% c(2000:2005)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelwintertaling <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Wintertaling") %>% + dplyr::filter(telseizoen1 %in% c(1998:2005)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelkrakeend <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Krakeend") %>% + dplyr::filter(telseizoen1 %in% c(2002:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doeltafeleend <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Tafeleend") %>% + dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelbergeend <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Bergeend") %>% + dplyr::filter(telseizoen1 %in% c(1992:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelslobeend <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Slobeend") %>% + dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelkleinezwaan <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Kleine Zwaan") %>% + dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + +doelkokmeeuw <- data_watervogels %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(nednaam == "Kokmeeuw") %>% + dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(telseizoen1,maand) %>% + summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1) %>% + summarise(gemidtelseizoen1 = mean(somaantal)) %>% + ungroup() %>% + summarise(doel = mean(gemidtelseizoen1)) %>% + round(digits = 0) %>% + pull() + + +##### doelstellingen op basis van Zeeschelde + zijrivieren + Sigmagebieden + +## code nog aan te passen aan data_analysesets + +# doelpijlstaart_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Pijlstaart") %>% +# dplyr::filter(telseizoen1 %in% c(2000:2005)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelwintertaling_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Wintertaling") %>% +# dplyr::filter(telseizoen1 %in% c(1998:2005)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelkrakeend_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Krakeend") %>% +# dplyr::filter(telseizoen1 %in% c(2002:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doeltafeleend_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Tafeleend") %>% +# dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelbergeend_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Bergeend") %>% +# dplyr::filter(telseizoen1 %in% c(1992:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelslobeend_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Slobeend") %>% +# dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelkleinezwaan_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Kleine Zwaan") %>% +# dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() +# +# doelkokmeeuw_IHDZzone <- data_watervogels_Zeeschelde_ZR_Sigma_Vallei %>% +# mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% +# dplyr::filter(nednaam == "Kokmeeuw") %>% +# dplyr::filter(telseizoen1 %in% c(2001:2006)) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen1,maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) %>% +# ungroup() %>% +# summarise(doel = mean(gemidtelseizoen1)) %>% +# round(digits = 0) %>% +# pull() + +# +# doelpijlstaart <- pijlstaart %>% +# group_by(telseizoen) %>% +# summarise(jaartot = sum(aantal, na.rm = TRUE)) +# +# +# +# mav_ZscZR <- Wmax_ZschZR %>% mav_wm(.$telseizoen1, .$Wmax, 5) +# mav_ZscZRSigma <- Wmax_ZschZRSigma %>% mav_wm(.$telseizoen1, .$Wmax, 5) +# mav_ZscZRSigmaVallei <- Wmax_ZschZRSigmaVallei %>% mav_wm(.$telseizoen1, .$Wmax, 5) + +``` + +```{r 100-figuur_S-IHD overwinterende watervogels soortdoelstellingen} + +# table(data_analysesets$analyseset) +# ## dataset nog te aan te passen +# mean_S_IHD <- data_analysesets %>% +# dplyr::filter(nednaam %in% c("Bergeend", "Kleine Zwaan", "Kokmeeuw","Krakeend", "Pijlstaart", "Slobeend", "Tafeleend", "Wintertaling")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(gebiedsgroep == "Estuarien") %>% +# group_by(nednaam, telseizoen1, maand) %>% +# summarise(somaantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(nednaam, telseizoen1) %>% +# summarise(gemidtelseizoen1 = mean(somaantal)) +# +# +# mav_S_IHD_Bergeend <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Bergeend") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Wintertaling <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Wintertaling") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Krakeend <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Krakeend") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Pijlstaart <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Pijlstaart") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Slobeend <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Slobeend") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Kokmeeuw <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Kokmeeuw") %>% +# dplyr::filter(telseizoen1>1998) %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Tafeleend <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Tafeleend") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# mav_S_IHD_Kleinezwaan <- mean_S_IHD %>% +# dplyr::filter(nednaam == "Kleine Zwaan") %>% +# mav_wm(.$telseizoen1, .$gemidtelseizoen1, 5) +# +# ##zou met functie moeten kunnen voor alle soorten en dan grafiek met facet_wrap op nednaam en met toevoeging van doelstelling geom_hline per soort +# ## 1 soort: +# +# mav_S_IHD_Bergeend %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelbergeend, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelbergeend_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Bergeend") +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Bergeend.jpg")) +# +# +# mav_S_IHD_Wintertaling %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelwintertaling, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelwintertaling_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Wintertaling") +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Wintertaling.jpg")) +# +# mav_S_IHD_Krakeend %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelkrakeend, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelkrakeend_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Krakeend") +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Krakeend.jpg")) +# +# mav_S_IHD_Pijlstaart %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelpijlstaart, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelpijlstaart_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank()) + +# labs(title = "Pijlstaart") +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Pijlstaart.jpg")) +# +# mav_S_IHD_Slobeend %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelslobeend, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelslobeend_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Slobeend") +# +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Slobeend.jpg")) +# +# mav_S_IHD_Tafeleend %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doeltafeleend, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doeltafeleend_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Tafeleend") +# +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Tafeleend.jpg")) +# +# +# mav_S_IHD_Kokmeeuw %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelkokmeeuw, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelkokmeeuw_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Kokmeeuw") +# +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Kokmeeuw.jpg")) +# +# mav_S_IHD_Kleinezwaan %>% +# ggplot(aes(x=x)) + +# geom_errorbar(aes(ymin=ci_min, ymax=ci_max), width=.2) + +# geom_point(aes(y=m), size = 2.5) + +# geom_line(aes(y=m)) + +# geom_hline(yintercept = doelkleinezwaan, linetype = 2, size = 1.4) + #IHD op basis van ZS+ZR +# # geom_hline(yintercept = doelkleinezwaan_IHDZzone, linetype = 2, size = 1.4, color = "red") + #IHD op basis van IHD-Zone +# labs(y = "Wintergemiddeld glijdend n=5") + +# scale_x_continuous(breaks = seq(1990, 2021, by = 5)) + +# theme(axis.title.x = element_blank())+ +# labs(title = "Kleine zwaan") +# +# ggsave(paste0(pad_figuren, "100-figuur_S-IHD_Kleinezwaan.jpg")) + +``` + +##### indexberekening + +```{r index berekening} + +## dataset transformeren naar wijd formaat met kolom per jaar en data niveau 3 per soort +## obv analyseset boottelling en zijrivieren - estuariene data +## centreren op 2009 +## index_1 op basis van totale vogelaantallen - het is beter om te kijken naar de maxima (minder gevoelig als er eens een maand niet geteld is zoals soms voorkomt langsheen zijrivieren) + +# data_watervogels_index <- data_watervogels %>% +# dplyr::filter(taxongroepcode != "MS") %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(niveau3, telseizoen,telseizoen1) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# complete(niveau3, +# nesting(telseizoen,telseizoen1), +# fill = list(aantal = 0)) %>% +# group_by(niveau3) %>% +# mutate(rel_aantal = aantal/aantal[telseizoen1 == 2009]) %>% +# ungroup() + + +data_watervogels_index <- data_watervogels %>% + dplyr::filter(taxongroepcode != "MS") %>% # zonder meeuwen en sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(niveau3, telseizoen1, maand) %>% + summarise(maandsom = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3, telseizoen1) %>% + summarise(maxwinter = max(maandsom, na.rm = TRUE)) %>% + ungroup() %>% + complete(niveau3, + nesting(telseizoen1), + fill = list(maxwinter = 0)) %>% + group_by(niveau3) %>% + mutate(rel_aantal = maxwinter/maxwinter[telseizoen1 == 2009]) %>% + ungroup() + +## we willen de verschillen tussen jaren vergelijken met 2009 als referentiejaar (kolom 20) + +data_watervogels_index %>% + dplyr::filter(telseizoen1 > 2008) %>% + ggplot(aes(telseizoen1, rel_aantal))+ + geom_line() + + geom_hline(yintercept = 1, linetype = 2, size = 1.4) + + facet_wrap(~niveau3, scales = "free") + + scale_y_log10(breaks = c(0.01, 0.03, 0.1, 0.3, 0.5, 1, 3,10))+ + labs(x = "telseizoen", + y = "index ") + + ggsave(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen.jpg")) + +### figuur per trofische groep + data_watervogels_index_trof <- data_watervogels %>% + dplyr::filter(taxongroepcode != "MS") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(niveau3 !="Durme") %>% #vertekend beeld voor de durme door inclusie oude durme in historische data + group_by(telseizoen1, maand,trofische_groep) %>% + summarise(maandsom = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, trofische_groep) %>% + summarise(maxwinter = max(maandsom, na.rm = TRUE)) %>% + ungroup() %>% + complete(trofische_groep, + nesting(telseizoen1), + fill = list(maxwinter = 0)) %>% + group_by(trofische_groep) %>% + mutate(rel_aantal = maxwinter/maxwinter[telseizoen1 == 2009]) %>% + ungroup() + +## figuur + +data_watervogels_index_trof %>% + dplyr::filter(telseizoen1 > 2008) %>% + ggplot(aes(telseizoen1, rel_aantal))+ + geom_line() + + geom_hline(yintercept = 1, linetype = 2, size = 1.4) + + facet_wrap(~trofische_groep, scales = "free") + + scale_y_log10(breaks = c(0.01, 0.03, 0.1, 0.3, 0.5, 1, 3,10))+ + labs(x = "telseizoen", + y = "index ") + + ggsave(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen_trofischegroepZS.jpg")) + + ### figuur per trofische groep per zone + data_watervogels_index_trofniv3 <- data_watervogels %>% + dplyr::filter(taxongroepcode != "MS") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(!is.na(trofische_groep)) %>% + group_by(niveau3, telseizoen1, maand, trofische_groep) %>% + summarise(maandsom = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3,telseizoen1, trofische_groep) %>% + summarise(maxwinter = max(maandsom, na.rm = TRUE)) %>% + ungroup() %>% + complete(niveau3, + nesting(telseizoen1, trofische_groep), + fill = list(maxwinter = 0)) %>% + group_by(trofische_groep, niveau3) %>% + mutate(rel_aantal = maxwinter/maxwinter[telseizoen1 == 2009]) %>% + ungroup() + +## figuur + +data_watervogels_index_trofniv3 %>% + dplyr::filter(telseizoen1 > 2008) %>% + dplyr::filter(niveau3 !="Durme") %>% #vertekend beeld voor de durme door inclusie oude durme in historische data + ggplot(aes(telseizoen1, rel_aantal, group = niveau3, color = niveau3)) + + geom_line(size = 1) + + geom_hline(yintercept = 1, linetype = 2, size = 1.4) + + facet_wrap(~trofische_groep, scales = "free") + + scale_y_log10(breaks = c(0.01, 0.03, 0.1, 0.3, 0.5, 1, 3,10))+ + labs(x = "telseizoen", + y = "index ") + + ggsave(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen_trofischegroepZSniv3.jpg")) + + + #### index niveau 2 + + data_watervogels_index_niv2 <- data_watervogels %>% + dplyr::filter(taxongroepcode != "MS") %>% # zonder meeuwen en sternen + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(niveau2, telseizoen1, maand) %>% + summarise(maandsom = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau2, telseizoen1) %>% + summarise(maxwinter = max(maandsom, na.rm = TRUE)) %>% + ungroup() %>% + complete(niveau2, + nesting(telseizoen1), + fill = list(maxwinter = 0)) %>% + group_by(niveau2) %>% + mutate(rel_aantal = maxwinter/maxwinter[telseizoen1 == 2009]) %>% + ungroup() + + data_watervogels_index_niv2 %>% + dplyr::filter(telseizoen1 > 2008) %>% + ggplot(aes(telseizoen1, rel_aantal))+ + geom_line() + + geom_hline(yintercept = 1, linetype = 2, size = 1.4) + + facet_wrap(~niveau2) + + scale_y_log10(breaks = c(0.01, 0.03, 0.1, 0.3, 0.5, 1, 3,10))+ + labs(x = "telseizoen", + y = "index ") + + ggsave(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen_niv2.jpg")) + +``` + +##### figuur wintergemiddelde aantallen per KRWzone + +```{r 100-figuur-aantallen-niveau3, fig.height=6, fig.width=8} + + +# figuur met gemiddelde over tellingen per seizoen en gebiedsgroep + +#variant1 +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(telseizoen1 > 2008) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen1, niveau3, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau3) %>% + summarise(aantal = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen1), aantal)) + + geom_col() + + labs(x = "winter telseizoen", + y = "wintergemiddeld aantal watervogels") + + facet_wrap(~niveau3, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + + ggsave(paste0(pad_figuren, "100_figuur_meanwinter_niveau3.jpg")) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(telseizoen, gebiedsgroep, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep) %>% + summarise(aantal = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), aantal)) + + geom_col() + + labs(x = "telseizoen", + y = "wintergemiddeld aantal watervogels") + + facet_wrap(~gebiedsgroep, + ncol = 2) + + theme(axis.text.x = element_text(angle = 90)) + +#variant2 inzoemen vanaf telseizoen 2009 +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + mutate(telseizoen1 = as.numeric(str_sub(telseizoen, 1, 4))) %>% + dplyr::filter(gebiedsgroep != "Getijdedurme" | telseizoen1 > 2012) %>% +dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + dplyr::filter(teldatum > "2009-06-01") %>% + group_by(telseizoen, gebiedsgroep, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep) %>% + summarise(aantal = mean(som, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), aantal)) + + geom_col() + + labs(x = "telseizoen", + y = "wintergemiddeld aantal watervogels") + + facet_wrap(~gebiedsgroep, + ncol = 2, scales = "free") + + theme(axis.text.x = element_text(angle = 90)) + + +# dit is de oorspronkelijke figuur met de som over alle tellingen +# data_watervogels %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# group_by(telseizoen, gebiedsgroep) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "aantal") + +# facet_wrap(~gebiedsgroep, scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90)) + +``` + +##### figuur wintergemiddelde aantallen per zijrivier + +```{r 100-figuur-aantallen-zijrivieren, fig.height=4, fig.width=12} + +# figuur met gemiddelde over tellingen per seizoen en zijrivier +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3), + rivier %in% c("Dijle", "Zenne")) %>% +dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(rivier,telseizoen, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, rivier) %>% + summarise(aantal = mean(som, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal)) + + geom_col() + + labs(x = "telseizoen", + y = "gemiddeld per maand aantal watervogels per winterseizoen") + + facet_wrap(~rivier, scales = "free_y") + + theme(axis.text.x = element_text(angle = 90)) + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_zijrivieren.jpg")) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3), + rivier %in% c("Rupel","Zeeschelde")) %>% +dplyr::filter(taxongroepcode != "MS") %>% #meeuwen en sternen niet meetellen worden pas sinds 1999 geteld + group_by(rivier,telseizoen1, maand) %>% + summarise(som = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, rivier) %>% + summarise(aantal = mean(som, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), aantal)) + + geom_col() + + geom_smooth(aes(color = "trendlijn")) + + labs(x = "telseizoen", + y = "gemiddeld per maand aantal watervogels per winterseizoen") + + facet_wrap(~rivier) + + theme(axis.text.x = element_text(angle = 90)) + +# dit is de oorspronkelijke figuur met de som over alle tellingen +# data_watervogels %>% +# dplyr::filter(maand %in% c(10:12, 1:3), +# rivier %in% c("Dijle", "Rupel", "Zenne")) %>% +# group_by(telseizoen, rivier) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal)) + +# geom_col() + +# labs(x = "telseizoen", +# y = "aantal") + +# facet_wrap(~rivier, scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90)) + +``` + +##### figuur wintergemiddelde aantallen per trofische groep + +```{r 100-figuur-aantallen-trofische-groep, fig.height=5, fig.width=7} + +# figuur met gemiddelde over tellingen per seizoen, gebiedsgroep en trofische groep +# data_watervogels %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% +# dplyr::filter(jaar >= 2009, +# telseizoen != "2008/09") %>% +# dplyr::filter(!is.na(trofische_groep)) %>% +# group_by(telseizoen, teldatum, trofische_groep, gebiedsgroep, rivier) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, trofische_groep, gebiedsgroep, rivier) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep, trofische_groep) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + +# geom_point(aes(shape = gebiedsgroep)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "aantal") + +# facet_wrap(~trofische_groep, +# scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90), +# legend.position = "bottom", +# legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + group_by(telseizoen, maand, trofische_groep, niveau3) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, niveau3) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "wintergemiddelde") + + facet_wrap(~trofische_groep, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_trofische_groep_niveau3.jpg")) + + +###facet_wrap op niveau 3 +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep == "Nomn" | trofische_groep == "Nherb") %>% + group_by(telseizoen, maand, trofische_groep, niveau3) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, niveau3) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = trofische_groep, color = trofische_groep)) + + geom_line() + + labs(x = "telseizoen", + y = "wintergemiddelde") + + facet_wrap(~niveau3, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +###facet_wrap op niveau 3 +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep == "Nomn") %>% + group_by(telseizoen, maand, trofische_groep, niveau3) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, niveau3) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = trofische_groep, color = trofische_groep)) + + geom_line() + + labs(x = "telseizoen", + y = "wintergemiddelde") + + facet_wrap(~niveau3, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + + + +##welke soorten -- achtergrond bespreking +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2012, + telseizoen != "2011/12") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep=="Nomn") %>% + group_by(telseizoen, maand, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% +ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + + geom_point(aes(shape = gebiedsgroep)) + + geom_line() + + labs(x = "telseizoen", + y = "aantal") + + facet_wrap(~nednaam) + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2012, + telseizoen != "2011/12") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep=="Nherb") %>% + group_by(telseizoen, maand, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% +ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + + geom_point(aes(shape = gebiedsgroep)) + + geom_line() + + labs(x = "telseizoen", + y = "aantal") + + facet_wrap(~nednaam) + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(telseizoen > "2011/12") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep=="Nomn") %>% + dplyr::filter(nednaam %in% c("Kokmeeuw")) %>% + group_by(telseizoen, maand, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% +ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + + geom_point(aes(shape = gebiedsgroep)) + + geom_line() + + labs(x = "telseizoen", + y = "aantal") + + facet_wrap(~nednaam) + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(jaar >= 2012, + telseizoen != "2011/12") %>% + dplyr::filter(!is.na(trofische_groep)) %>% + dplyr::filter(trofische_groep=="Npisc") %>% + group_by(telseizoen, maand, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, trofische_groep, gebiedsgroep, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% +ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + + geom_point(aes(shape = gebiedsgroep)) + + geom_line() + + labs(x = "telseizoen", + y = "aantal") + + facet_wrap(~nednaam) + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) +``` + +##### figuur abundante soorten met \> 5% per KRWzone voor en na 2009 + +```{r 100-figuur-abundante-soorten, fig.height=5, fig.width=7} + +abundante_wintervogels <- data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + group_by(niveau3, nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 5) %>% + ungroup() %>% + select(nednaam) %>% + distinct(nednaam) %>% + arrange(nednaam) + + +# #Create a custom color scale for species: 10 colors needed and order of color must be the same for each species +# library(RColorBrewer) +# myColors <- brewer.pal(10,"Set3") +# names(myColors) <- levels(abundante_wintervogels$nednaam) +# colScale <- scale_colour_manual(name = "nednaam",values = myColors) +# # lukt me niet om dit te doen werken + + +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(telseizoen >= "2009/10") %>% + group_by(niveau3, nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 5) %>% + ggplot(aes(ordered(niveau3), aantal, fill = nednaam)) + + geom_col(position = "fill") + + scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + "#660099", "#CC0066", "#FF9999", "#FF9900", + "black", "red", "green", "blue", "yellow")) + + labs(x = "Niveau3 zones", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + + + +ggsave(paste0(pad_figuren, "100_figuur_abundante_soortenna2009.jpg")) + + + +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar <= 2009, + telseizoen != "2009/10") %>% + group_by(niveau3, nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau3) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 5) %>% + ggplot(aes(ordered(niveau3), aantal, fill = nednaam)) + + geom_col(position = "fill") + + scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%"))+ + scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + "#660099", "#CC0066", "#FF9999", "#FF9900", + "black", "red", "green", "blue", "yellow")) + + labs(x = "Niveau3 zones", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + + +ggsave(paste0(pad_figuren, "100_figuur_abundante_soortenvoor2009.jpg")) + + + + + +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(telseizoen >= "2009/10") %>% + dplyr::filter(niveau3 != 'Saliniteitsgradient') %>% + dplyr::filter(niveau2 == 'Zeeschelde') %>% + arrange(nednaam) %>% + group_by(nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau2) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 10) %>% + mutate(soort = fct_reorder2(nednaam, niveau2, perc)) %>% + ggplot(aes(ordered(niveau2), aantal, fill = soort)) + + geom_col(position = "fill") + + # scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + # scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + # "#660099", "#CC0066", "#FF9999", "#FF9900", + # "black", "red", "green", "blue", "yellow")) + + labs(x = "", + y = "") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(telseizoen < "2009/10") %>% + dplyr::filter(niveau3 != 'Saliniteitsgradient') %>% + dplyr::filter(niveau2 == 'Zeeschelde') %>% + arrange(nednaam) %>% + group_by(nednaam) %>% + mutate(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(niveau2) %>% + mutate(totaalgebiedsgroep = sum(aantal, na.rm = TRUE)) %>% + mutate(perc = (totaal/totaalgebiedsgroep)*100) %>% + dplyr::filter(perc > 10) %>% + mutate(soort = fct_reorder2(nednaam, niveau2, perc)) %>% + ggplot(aes(ordered(niveau2), aantal, fill = soort)) + + geom_col(position = "fill") + + # scale_y_continuous(breaks = seq(0,1,0.1), labels = paste0(seq(0,100,10),"%")) + + # scale_fill_manual(values=c("#CC0000", "#006600", "#669999", "#00CCCC", + # "#660099", "#CC0066", "#FF9999", "#FF9900", + # "black", "red", "green", "blue", "yellow")) + + labs(x = "", + y = "") + + theme(axis.text.x = element_text(angle = 0), + legend.position = "bottom", + legend.title = element_blank()) + + +``` + +##### figuur wintergemiddelde aantallen voor abundante soorten Zeeschelde + +```{r 100-figuur-aantallen-abundante-soorten, fig.height=5, fig.width=7} + +# data_watervogels %>% +# dplyr::filter(nednaam %in% c("Bergeend", "Krakeend", "Wilde Eend", "Wintertaling")) %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(jaar >= 2009, +# telseizoen != "2008/09") %>% +# group_by(telseizoen, gebiedsgroep, nednaam, rivier) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep, nednaam) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + +# geom_point(aes(shape = gebiedsgroep)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "aantal") + +# facet_wrap(~nednaam, +# scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90), +# legend.position = "bottom", +# legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Bergeend", "Krakeend", "Wilde Eend", "Wintertaling")) %>% + # dplyr::filter(rivier == "Zeeschelde") %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + group_by(telseizoen, niveau3, nednaam, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_abundante_soorten_niveau3.jpg")) + +``` + +##### figuur wintergemiddelde aantallen voor viseters en steltlopers + +```{r 100-figuur-aantallen-visetend-en-steltlopers, fig.height=5, fig.width=7} + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Aalscholver", "Fuut", "Blauwe Reiger")) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + group_by(telseizoen, niveau3, nednaam, rivier) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_viseters_niveau3.jpg")) + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Aalscholver", "Fuut", "Visdief", "Blauwe Reiger")) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(4:9)) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + group_by(telseizoen, gebiedsgroep, nednaam, rivier) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, gebiedsgroep, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + + geom_point(aes(shape = gebiedsgroep)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal zomer") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_gemid_aantallenzomer_viseters.jpg")) + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Aalscholver", "Fuut", "Visdief", "Blauwe Reiger")) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(4:9)) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + group_by(telseizoen, niveau3, nednaam, rivier) %>% + summarise(aantal = max(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = max(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "max aantal zomer") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Kluut", "Kievit", "Tureluur", "Wulp", "Scholekster", "Bonte Strandloper")) %>% + dplyr::filter(trofische_groep == "Nbenth") %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar >= 2005, + telseizoen != "2004/05") %>% + group_by(telseizoen, niveau3, nednaam, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(nednaam %in% c( "Kievit", "Tureluur", "Wulp", "Scholekster")) %>% + dplyr::filter(trofische_groep == "Nbenth") %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar >= 2005, + telseizoen != "2004/05") %>% + group_by(telseizoen, niveau3, nednaam, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +# data_watervogels %>% +# dplyr::filter(nednaam %in% c("Scholekster")) %>% +# dplyr::filter(trofische_groep == "Nbenth") %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(jaar >= 2019, +# telseizoen != "2004/05") %>% +# group_by(telseizoen, gebiedsgroep, nednaam, maand) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# # group_by(telseizoen, gebiedsgroep, nednaam) %>% +# # summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# # ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + +# geom_point(aes(shape = gebiedsgroep)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "gemiddeld aantal") + +# facet_wrap(~nednaam, +# scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90), +# legend.position = "bottom", +# legend.title = element_blank()) +# +# +# data_watervogels %>% +# dplyr::filter(nednaam %in% c("Aalscholver", "Fuut", "Tureluur", "Wulp")) %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(jaar >= 2005, +# telseizoen != "2004/05") %>% +# group_by(telseizoen, gebiedsgroep, nednaam, maand) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, gebiedsgroep, nednaam) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# ggplot(aes(ordered(telseizoen), aantal, group = gebiedsgroep, color = gebiedsgroep)) + +# geom_point(aes(shape = gebiedsgroep)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "gemiddeld aantal") + +# facet_wrap(~nednaam, +# scales = "free_y") + +# theme(axis.text.x = element_text(angle = 90), +# legend.position = "bottom", +# legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_steltlopers.jpg")) + +``` + +##### figuur wintergemiddelde vogeldichtheid per zones + +```{r dichtheden winter watervogels per zone} + + + + data_watervogels %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(niveau3 != "Zoet zijrivier") %>% + dplyr::filter(telseizoen %in% c("2001/02","2010/11","2013/14","2016/17","2019/20","2022/23")) %>% + dplyr::filter(nednaam != "Tafeleend" & nednaam != "Kuifeend") %>% + dplyr::filter(trofische_groep != "Npisc" & trofische_groep != "Nherb") %>% + left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% + group_by(telseizoen, maand, niveau3, somha) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, somha) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, somha) %>% + summarise(dichtheid = mean(aantal/somha, na.rm = TRUE)) %>% + ggplot(aes(ordered(telseizoen), dichtheid, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "dichtheid overwinterende watervogel (#/ha)") + + theme(axis.text.x = element_text(angle = 0), + legend.position = "bottom", + legend.title = element_blank())+ + scale_y_continuous(breaks = seq(0,140,20)) + +ggsave(paste0(pad_figuren, "100_figuur_dichtheid.jpg")) + +# data_watervogels %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% +# dplyr::filter(niveau3 != "Zoet zijrivier") %>% +# dplyr::filter(niveau3 != "Rupel") %>% +# dplyr::filter(niveau3 != "Saliniteitsgradient") %>% +# dplyr::filter(niveau3 != "Zoet kort verblijf") %>% +# dplyr::filter(telseizoen %in% c("2001/02","2010/11","2013/14","2016/17","2019/20")) %>% +# dplyr::filter(nednaam != "Tafeleend" & nednaam != "Kuifeend") %>% +# dplyr::filter(trofische_groep != "Npisc" & trofische_groep != "Nherb") %>% +# left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% +# group_by(telseizoen, maand, niveau3, somha) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(dichtheid = mean(aantal/somha, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), dichtheid, group = niveau3, color = niveau3)) + +# geom_point(aes(shape = niveau3)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "dichtheid overwinterende watervogel (#/ha)") + +# theme(axis.text.x = element_text(angle = 0), +# legend.position = "bottom", +# legend.title = element_blank())+ +# scale_y_continuous(breaks = seq(0,140,20)) +# +# ggsave(paste0(pad_figuren, "100_figuur_dichtheidDurme.jpg")) +# +# ##Zeeschelde IV wintertrends +# data_watervogels %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(telseizoen %in% c("2001/02","2010/11","2012/13","2013/14","2014/15","2015/16","2016/17","2017/18","2018/19","2019/20","2020/21", +# "2021/22")) %>% +# dplyr::filter(nednaam != "Tafeleend" & nednaam != "Kuifeend") %>% +# dplyr::filter(trofische_groep != "Npisc" & trofische_groep != "Nherb") %>% +# left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% +# group_by(telseizoen, maand, niveau3, somha) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(dichtheid = mean(aantal/somha, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), dichtheid, group = niveau3, color = niveau3)) + +# geom_point(aes(shape = niveau3)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "dichtheid overwinterende watervogel (#/ha)") + +# theme(axis.text.x = element_text(angle = 0), +# legend.position = "bottom", +# legend.title = element_blank())+ +# scale_y_continuous(breaks = seq(0,20,2)) +# +# ggsave(paste0(pad_figuren, "100_figuur_dichtheidZS4.jpg")) +# +# ##Zeeschelde IV wintertrends trofische groepen +# +# data_watervogels %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% +# dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(telseizoen %in% c("2001/02","2010/11","2012/13","2013/14","2014/15","2015/16","2016/17","2017/18","2018/19","2019/20","2020/21", +# "2021/22", "2022/23")) %>% +# dplyr::filter(nednaam != "Tafeleend" & nednaam != "Kuifeend") %>% +# dplyr::filter(trofische_groep != "Npisc" & trofische_groep != "Nherb") %>% +# left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% +# group_by(telseizoen, maand, niveau3, somha,trofische_groep) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha,trofische_groep) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha,trofische_groep) %>% +# summarise(dichtheid = mean(aantal/somha, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), dichtheid, group = trofische_groep, color = trofische_groep)) + +# geom_point(aes(shape = niveau3)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "dichtheid overwinterende watervogel (#/ha)") + +# theme(axis.text.x = element_text(angle = 0), +# legend.position = "bottom", +# legend.title = element_blank())+ +# scale_y_continuous(breaks = seq(0,20,2)) +# +# +# +# ##Zeeschelde IV jaartrends telseizoen +# data_watervogels %>% +# dplyr::filter(str_detect(gebiedsgroep_code, "ZS4")) %>% +# # dplyr::filter(maand %in% c(10:12, 1:3)) %>% +# dplyr::filter(telseizoen %in% c("2001/02","2010/11","2012/13","2013/14","2014/15","2015/16","2016/17","2017/18","2018/19","2019/20","2020/21", +# "2021/22","2022/23")) %>% +# dplyr::filter(nednaam != "Tafeleend" & nednaam != "Kuifeend") %>% +# dplyr::filter(trofische_groep != "Npisc" & trofische_groep != "Nherb") %>% +# left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% +# group_by(telseizoen, maand, niveau3, somha) %>% +# summarise(aantal = sum(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(aantal = mean(aantal, na.rm = TRUE)) %>% +# ungroup() %>% +# group_by(telseizoen, niveau3, somha) %>% +# summarise(dichtheid = mean(aantal/somha, na.rm = TRUE)) %>% +# ggplot(aes(ordered(telseizoen), dichtheid, group = niveau3, color = niveau3)) + +# geom_point(aes(shape = niveau3)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "dichtheid overwinterende watervogel (#/ha)") + +# theme(axis.text.x = element_text(angle = 0), +# legend.position = "bottom", +# legend.title = element_blank())+ +# scale_y_continuous(breaks = seq(0,20,2)) +# +# # oppervlakte veranderingen exclusief uitbreidingen (enge planimetrie) +# +# data_watervogels %>% +# # dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% +# dplyr::filter(telseizoen %in% c("2001/02","2010/11","2013/14","2016/17","2019/20")) %>% +# left_join(data_oppzachtslikKRWZS, by = c("niveau3","telseizoen")) %>% +# dplyr::filter(!is.na(somha)) %>% +# group_by(telseizoen, niveau3, somha) %>% +# ggplot(aes(ordered(telseizoen), somha, group = niveau3, color = niveau3)) + +# geom_point(aes(shape = niveau3)) + +# geom_line() + +# labs(x = "telseizoen", +# y = "Oppervlakte slik zacht substraat (ha)")+ +# theme(axis.text.x = element_text(angle = 0), +# legend.position = "bottom", +# legend.title = element_blank()) +# +# ggsave(paste0(pad_figuren, "100_figuur_habitatoppervlakte.jpg")) +# + +``` + +##### figuur exotentrends + +```{r 100-figuur-exotentrends, fig.height=5, fig.width=7} + + +data_watervogels %>% + dplyr::filter(nednaam %in% c("Nijlgans", "Canadese Gans", "Soepeend", "Boerengans")) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter(jaar >= 2009, + telseizoen != "2008/09") %>% + group_by(telseizoen, niveau3, nednaam, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen, niveau3, nednaam) %>% + summarise(aantal = mean(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen), aantal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "gemiddeld aantal") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_aantallen_exoten.jpg"), width = 20, height = 12, units = "cm") + +data_watervogels %>% + dplyr::filter(exoot == 1) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter (telseizoen1 > 2008) %>% + group_by(telseizoen1, niveau3, nednaam, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau3, nednaam) %>% + summarise(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), totaal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "totaal aantal per winter") + + facet_wrap(~nednaam, + scales = "free_y") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +data_watervogels %>% + dplyr::filter(exoot == 1) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter (telseizoen1 > 2008) %>% + group_by(telseizoen1, niveau3, maand) %>% + summarise(aantal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + group_by(telseizoen1, niveau3) %>% + summarise(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), totaal, group = niveau3, color = niveau3)) + + geom_point(aes(shape = niveau3)) + + geom_line() + + labs(x = "telseizoen", + y = "totaal aantal exoten per winter") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_totaalaantal_exoten_niveau3.jpg")) + +data_watervogels %>% + dplyr::filter(exoot == 1) %>% + dplyr::filter(str_detect(gebiedsgroep_code, "ZS")) %>% + dplyr::filter(maand %in% c(10:12, 1:3)) %>% + dplyr::filter (telseizoen1 > 2008) %>% + group_by(telseizoen1) %>% + summarise(totaal = sum(aantal, na.rm = TRUE)) %>% + ungroup() %>% + ggplot(aes(ordered(telseizoen1), totaal)) + + geom_col() + + labs(x = "telseizoen", + y = "totaal aantal exoten per winter") + + theme(axis.text.x = element_text(angle = 90), + legend.position = "bottom", + legend.title = element_blank()) + +ggsave(paste0(pad_figuren, "100_figuur_totaalaantal_exoten.jpg")) + +``` + +```{r meta-data} + +meta_data <- + enframe(c(vroegste_telseizoen = vroegste_telseizoen, + laatste_telseizoen = laatste_telseizoen, + vroegste_jaar = vroegste_jaar, + laatste_jaar = laatste_jaar, + aantal_soorten = nrow(soortnamen)), + name = "naam", value = "waarde") + +meta_data %>% + write_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +``` diff --git a/moneos_2024/110_broedvogels/10_broedvogels_analyse.Rmd b/moneos_2024/110_broedvogels/10_broedvogels_analyse.Rmd new file mode 100644 index 0000000..1951b73 --- /dev/null +++ b/moneos_2024/110_broedvogels/10_broedvogels_analyse.Rmd @@ -0,0 +1,241 @@ +--- +params: + hoofdstuk: "110_broedvogels" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0( + rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) + +title: "MONEOS analyse - broedvogels" +output: html_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(INBOtheme) +library(rprojroot) +library(lubridate) +library(kableExtra) +library(readxl) +library(tmap) +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + + +```{r data} +Soorten <- read_xlsx(path = str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), + sheet = "Soorten") +Terr_Sigma_BB <- + read_csv(str_c(pad_tabellen, "Terr_Sigma_BB.csv")) +Terr_Sigma_AB <- + read_csv(str_c(pad_tabellen, "Terr_Sigma_AB.csv")) +Terr_Sigma_AB_tot <- + read_csv(str_c("C:/R/Projects/Broedvogels/data-output/Terr_Sigma_AB_tot.csv")) +``` + + +# beschrijving van de data Terr_Sigma_BB + + - Per waarneming zijn er `r ncol(Terr_Sigma_BB)` informatievelden + - In totaal bevat de dataset in 2022 `r nrow(Terr_Sigma_BB)` waarnemingen + - De dataset bevat waarnemingen van `r length(unique(Terr_Sigma_BB$Soort))` soorten. + - De dataset bevat waarnemingen van `r length(unique(Terr_Sigma_BB$Jaar))` jaren (1995 tot en met 2021). + + + + + +# Figuur bijzondere soorten + +```{r 110-plot-zeldzame-soorten, fig.height=8, fig.width=6, out.width="100%", fig.cap = cap_zeldzame_soorten} +cap_zeldzame_soorten <- + "Evoluties in de broedvogelaantallen voor een selectie van soorten waarvoor de data-inzameling representatief is binnen IHD-gebied. Loess-smoother weergegeven. Rode horizontale lijn geeft de tot doel gestelde aantallen." + +Terr_Sigma_BB %>% + filter(Soort != "Purperreiger") %>% + ggplot() + + geom_point(aes(x = Jaar, y = Aantal))+ + geom_smooth(aes(x = Jaar, y = Aantal), span = 0.6)+ + geom_hline(aes(yintercept = Doel), size = 0.75, colour = "red") + + ylim(0, NA_integer_) + + facet_wrap (~Soort, scales = "free", ncol=3) + + labs(y = "Aantal territoria") + + theme( + strip.text = element_text(size = 9), + axis.title = element_text(size = 9), + axis.title.x = element_blank(), + axis.text = element_text(size = 7)) + +ggsave(filename = str_c(pad_figuren, "110_fig3.jpg"), height=8, width=6) +``` +
+
+ +# Figuur Algemene soorten + +```{r 110-plot-algemene-soorten, fig.height=5, fig.width=6, out.width="100%", fig.cap = cap_algemene_soorten} + +cap_algemene_soorten <- + "Evoluties in de broedvogelaantallen (territoria) voor een selectie van algemenere soorten voor een beperkt aantal gebieden die frequent worden geteld (BD (Blokkersdijk), K (Ketenisse), Sigma (Kalkense Meersen, Wijmeers, Bergenmeersen, Paardeweide, Weijmeerbroek en Polder van Kruibeke), Sigma\\_LO (= Noordelijke gebied = Doelpolder + Prosperpolder + Paardenschor + Schor Ouden Doel)). Rode horizontale lijn geeft de tot doel gestelde aantallen." + +Terr_Sigma_AB %>% + ggplot() + + geom_bar(aes(Jaar, weight = Aantal, fill = TypeGebied))+ + geom_hline(aes(yintercept = Doel), size = 1, color = "red")+ + facet_wrap (~Soort, scales = "free", ncol=2)+ + scale_y_continuous(limits = c(0, NA))+ + scale_x_continuous(breaks = c(2005,2010,2015, 2020)) + + labs(y = "Aantal territoria") + + scale_fill_discrete(labels=c("Blokkersdijk", "Ketenisse", "Sigma", + "Sigma_Noordelijk gebied")) + + theme( + strip.text = element_text(size = 12), + axis.title = element_text(size = 11), + axis.title.x = element_blank(), + axis.text = element_text(size = 9), + legend.title = element_blank(), + legend.position = "bottom" + ) + +ggsave(filename = str_c(pad_figuren, "110_fig4.jpg"), height=8, width=7) + +``` + + +```{r 110-plot-algemene-soorten-tot, fig.height=5, fig.width=6, out.width="100%", fig.cap = cap_algemene_soorten} + +cap_algemene_soorten <- + "Evoluties in de broedvogelaantallen (territoria) voor een selectie van algemenere soorten voor een beperkt aantal gebieden die frequent worden geteld (BD (Blokkersdijk), K (Ketenisse), Sigma (Kalkense Meersen, Wijmeers, Bergenmeersen, Paardeweide, Weijmeerbroek en Polder van Kruibeke), Sigma\\_LO (= Noordelijke gebied = Doelpolder + Prosperpolder + Paardenschor + Schor Ouden Doel)) tot en met 2020 en voor alle getelde gebieden sinds 2021. Rode horizontale lijn geeft de tot doel gestelde aantallen." + +Terr_Sigma_AB_tot %>% + ggplot() + + geom_bar(aes(Jaar, weight = Aantal, fill = TypeGebied))+ + geom_hline(aes(yintercept = Doel), size = 1, color = "red")+ + facet_wrap (~Soort, scales = "free", ncol=2)+ + scale_y_continuous(limits = c(0, NA))+ + scale_x_continuous(breaks = c(2005,2010,2015, 2020)) + + labs(y = "Aantal territoria") + + scale_fill_discrete(labels=c("Blokkersdijk", "Ketenisse", "Sigma", + "Sigma_Noordelijk gebied")) + + theme( + strip.text = element_text(size = 12), + axis.title = element_text(size = 11), + axis.title.x = element_blank(), + axis.text = element_text(size = 9), + legend.title = element_blank(), + legend.position = "bottom" + ) +``` + +```{r soortgrafiek per Typegebied, include = FALSE} +Terr_Sigma_AB %>% + filter(Soort == "Scholekster") %>% + group_by(Soort, TypeGebied, Jaar) %>% + summarise(Aantal = sum(Aantal), .groups = "drop") %>% + ggplot() + + geom_point(aes(x = Jaar, y = Aantal, color = TypeGebied))+ + geom_line(aes(x = Jaar, y = Aantal, color = TypeGebied)) + + scale_y_continuous(limits = c(0, NA))+ + scale_x_continuous(breaks = c(2005,2010,2015, 2020)) + + labs(y = "Aantal territoria") + + theme( + strip.text = element_text(size = 12), + axis.title = element_text(size = 11), + axis.title.x = element_blank(), + axis.text = element_text(size = 9), + legend.title = element_blank(), + legend.position = "bottom" + ) +``` + +```{r totale aantammen per soort, include=FALSE} +Terr_Sigma_AB %>% + filter(Soort == "Scholekster") %>% + group_by(Soort, Jaar) %>% + summarise(Aantal = sum(Aantal), .groups = "drop") +``` + + + +# Broedlocaties per soort + +Voor het schrijven van het hoofdstuk kan het handig zijn een jaarlijks overzicht van broedlocaties van de soorten handig zijn. + +```{r nested data 202122} +data23 <- readxl::read_xlsx(str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), + range = "A1:G500") %>% + filter(!is.na(Soort)) +# we nest data to make a table for each species-year by using a for loop +# the result is a dataframe with columns Soort(chr), Jaar (num) en data(list). Eacht list item in data contains a dataframe with Gebied, minimum and maximum. +data_nested <- + data23 %>% + arrange(Soort, Jaar) %>% + nest(data = c(Gebied, minimum, maximum), .by = c(Soort, Jaar)) +# data_nested$data[1] +# data_nested$data[data_nested$Soort == "Lepelaar"] +# data_nested$data[data_nested$Soort == "Lepelaar" & data_nested$Jaar == 2021] %>% +# kable() %>% +# kable_paper() + +``` + +```{r broedlocaties, results='asis'} +# The nested data are used in a for loop to produce seperate table in de output html file, notice the use of results='asis' in the header! (without that kable does not work in a for loop) +for(x in unique(data_nested$Soort)){ + a <- data_nested %>% filter(Soort == x) + for(y in a$Jaar){ + cap <- str_c(a$Soort[1], y, sep = " - ") + b <- + a %>% filter(Jaar == y) %>% pull(data) %>% + kable(caption = cap, align = "lcc") + print(b) + cat("\n") + } +} +``` + + +```{r broedlocaties2, results='asis'} +for(x in unique(data_nested$Soort)){ + a <- data_nested %>% filter(Soort == x) %>% unnest %>% + pivot_wider(id_cols = Gebied, names_from = Jaar, values_from = maximum) %>% + kable(caption = x, align = "lcc") + print(a) + cat("\n") +} + +``` +
+
+ + + diff --git a/moneos_2024/110_broedvogels/10_broedvogels_data.Rmd b/moneos_2024/110_broedvogels/10_broedvogels_data.Rmd new file mode 100644 index 0000000..90228e5 --- /dev/null +++ b/moneos_2024/110_broedvogels/10_broedvogels_data.Rmd @@ -0,0 +1,278 @@ +--- +params: + hoofdstuk: "110_broedvogels" +knit: (function(inputFile, encoding) { + rmarkdown::render(inputFile, + encoding=encoding, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "MONEOS broedvogel data" +date: '2024-09-05' +# date: '`r Sys.Date()`' +output: + bookdown::html_document2: + df_print: paged + toc: yes + toc_float: yes + toc_depth: 2 + number_sections: yes + language: + label: + fig: 'Figuur ' + tab: 'Tabel ' +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = TRUE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) + +``` + + +```{r libraries} + +library(tidyverse) +library(rprojroot) +library(readxl) +library(lubridate) +library(sf) +library(kableExtra) +conflicted::conflicts_prefer(dplyr::filter) +``` + + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + +```{r read-data} +# oude dataset met totalen voor het Sigmagebied +Terr_Sigma_95_21 <- read_csv(str_c(pad_data, "dataSigma_sel2_2022.csv"), na = c("na")) %>% + select(-c(Doel, Biotoop, Voedsel)) %>% + pivot_longer(!Soort, names_to = "Jaar", values_to = "Aantal") %>% + mutate(Jaar = as.integer(Jaar)) + +# nieuwe dataset met aantallen per gebied +# er staan twe tabellen: Data_nieuwe_vorm_2024.xlsx en Data_nieuwe_vorm_2024_v2.xlsx. +data2123 <- + read_xlsx(str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), range = "A1:G500") %>% + filter(!is.na(Soort)) +data2123_v2 <- + read_xlsx(str_c(pad_data, "Data_nieuwe_vorm_2024_v2.xlsx"), + sheet = "Data") %>% + filter(!is.na(Soort)) +data2123 %>% + group_by(Jaar) %>% + summarise(n_records = n(), n_birdsmin = sum(minimum), + nbirds_max = sum(maximum)) +data2123_v2 %>% + group_by(Jaar) %>% + summarise(n_records = n(), n_birdsmin = sum(minimum), + nbirds_max = sum(maximum)) +# v2 is aangevuld maar nog niet volledig +data2123 %>% + count(Gebied) + +# tabel met data van 2021 tot 2023 die we zullen gebruiken +data23 <- + read_xlsx(str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), sheet = "Data") %>% + filter(!is.na(Soort)) +``` + +# Omzetting broedvogeldata bestand in longfile. + +Twee jaar geleden werd een start gemaakt met de omzetting van het ingewikkelde excelbestand in één (eenvoudigere) long file. De data voor 2022 en 2023 zijn enkel toegevoegd in dit long formaat. De bedoeling is om de volledige excel om te zetten, maar dit is, nog steeds, werk voor later. Het bestand Data_nieuwe_vorm_2024_v2.xlsx is aangevuld voor de jaren 2017 tot 2020 voor het gebied Zennegat. Voorlopig kunnen we deze data nog niet gebruiken. Dit alles brengt dus nog steeds een beetje hocuspocus met zich mee. + +In het nieuwe dataformaat wordt per Soort, Jaar en Gebied een minimum- en maximumaantal territoria en de bron van de data weergegeven. Voorlopig bevat deze file data voor de jaren 2021, 2022 en 2023. Het is de bedoeling om ook de vroegere jaren om te zetten in dit format. + +```{r } +data23 %>% + head(n = 10) %>% + kbl(caption = "Eerste 10 records van Data_nieuwe_vorm.xlsx") %>% + kable_styling(full_width = FALSE) +``` +
+ + +# Aanvullen basistabel + +De basistabel met het aantal territoria voor de 21 doelsoorten tussen 1995 en 2021. De data van 2022 en 2023 zijn niet meer in deze tabel aangevuld. Deze wordt nu in een longfile bijgehouden ("Data_nieuwe_vorm_2024_v2.xlsx") met een complete dataset voor de periode 2021 tot en met 2023. + +*Aandachtspunt*: Vroeger werd steeds het hoogste aantal van elk gebied genomen voor de berekening van het totaal. In dit script wordt vanaf 2021 een sommatie gedaan van min en max en vervolgens hiervan het gemiddelde berekend. + + +```{r data_totaal} +# toe te voegen data +(Data_21_23 <- + data23 %>% + filter(Gebied != "AN_RO_inclusief Kuifeend") %>% + group_by(Jaar, Soort) %>% + summarise(Aantal = ceiling((sum(minimum) + sum(maximum))/2), + .groups = "drop")) # aantal is het naar boven afgerond gemiddelde van min en max + +# verwijder 2021 uit oude data en voeg samen +str(Terr_Sigma_95_21) +str(Data_21_23) +Terr_Sigma <- + Terr_Sigma_95_21 %>% + filter(Jaar !=2021) %>% + bind_rows(Data_21_23) + +Terr_Sigma %>% + write_csv(str_c(pad_data, "Territoria_totalen_1995_2023.csv")) +``` + +# Bijzondere broedvogels + +De dataset is verre van volledig voor de algemene soorten (niet elk gebied wordt elk jaar geteld). Voor de bijzondere broedvogels gaan we er van uit dat de gegevens volledig zijn. +We berekenen de totalen voor een set van 16 soorten. + +```{r} +(Terr_Sigma_BB <- + Terr_Sigma %>% + filter(Soort %in% c("Baardman", "Bruine kiekendief","Grote karekiet","Grutto", "Kluut", + "Kwak", "Kwartelkoning", "Lepelaar", "Paapje", "Porseleinhoen", + "Purperreiger", "Roerdomp", "Snor", "Tureluur", "Woudaap", "Zomertaling")) %>% + # complete(Soort, Jaar, fill = list(Aantal = 0))) # add zero's, this is wrong, should be na + complete(Soort, Jaar, fill = list(Aantal = NA_integer_)) %>% +# volgende kunstgreep is nodig om laatste jaren voor KK en Paapje in grafiek te krijgen. + mutate(Aantal = case_when( + Soort %in% c("Kwartelkoning", "Paapje") & Jaar > 2020 ~ 0, + TRUE ~ Aantal))) +# add species data (IHD, Biotoop, Voedselregime) +Soorten <- + read_xlsx(str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), sheet = "Soorten") + +Terr_Sigma_BB %>% + left_join(Soorten, by = c("Soort")) %>% + write_csv(str_c(pad_tabellen, "Terr_Sigma_BB.csv")) +``` + + +# Algemene broedvogels + +```{r read data algemenesoorten} +# algemene soorten tot 2020 (oud format) +Terr_Sigma_AB_2021 <- + read_csv(str_c(pad_data, "dataSigma_sel_algemenesoorten_tot2020.csv")) + +# gebieden waarop de analyse van de algemene soorten is gebaseerd +unique(Terr_Sigma_AB_2021$Gebied) + +Gebieden <- + read_xlsx(path = str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), sheet = "Gebieden") +# In deze tabel zijn er 4 kolommen. Gebiedscode is wellicht overbodig nu. Gebieds_gr: sommige projectgebieden zijn na inrichting opgedeeld in deelgebieden, gebied_gr groepeert deze deelgebieden in de originele Sigmagebieden zoals ze geteld zijn tot in 2021. + +Soorten <- + read_xlsx(path = str_c(pad_data, "Data_nieuwe_vorm_2024.xlsx"), sheet = "Soorten") + +# Selectie van gebieden waarop de analyse van de algmene soorten gebeurt +(GebiedenAB <- + Gebieden %>% + filter(Gebied_gr %in% Terr_Sigma_AB_2021$Gebied)) +# unique(Terr_Sigma_AB_2021$Gebied) +(Terr_Sigma_AB_2023 <- + data23 %>% + filter(Soort %in% c("Blauwborst", "Dodaars","Rietzanger","Scholekster", + "Slobeend", "Zomertaling")) %>% + left_join(Gebieden) %>% + filter(Gebied_gr %in% c(Terr_Sigma_AB_2021$Gebied)) %>% + group_by(Jaar, Soort, Gebied) %>% + summarise(minimum = sum(minimum), maximum = sum(maximum), + .groups = "drop") %>% + mutate(Aantal = ceiling(minimum + maximum)/2) %>% + select(-c(minimum, maximum))) + +# Add 2021, 2022 and 2023 +Terr_Sigma_AB <- + Terr_Sigma_AB_2021 %>% + select(-c(TypeGebied, Doel)) %>% + pivot_longer(cols = !c(SOORT, Gebied), + names_to = "Jaar", + values_to = "Aantal") %>% + rename(Soort = SOORT) %>% + mutate(Jaar = as.numeric(Jaar)) %>% + bind_rows(Terr_Sigma_AB_2023) %>% + complete(Soort, Gebied, Jaar, fill = list(Aantal = 0)) %>% + group_by(Soort, Gebied, Jaar) %>% + summarise(Aantal = sum(Aantal), .groups = "drop") %>% + left_join(Gebieden[,c(1,4)]) %>% # add TypeGebied + left_join(Soorten[,c(1,5)]) # add Doel +``` + +```{r check data} +table(Terr_Sigma_AB$Gebied, Terr_Sigma_AB$Soort) +table(Terr_Sigma_AB$TypeGebied, Terr_Sigma_AB$Soort) +``` +
+ +Voor alle soorten is er data voor 19 jaren, nulwaarnemingen zijn aangevuld. + +```{r check data2} +table(Terr_Sigma_AB$Gebied, Terr_Sigma_AB$Jaar) +``` +
+ +Voor de onderzochte gebieden zijn er voor elk jaar aantallen van 6 soorten (nulwaarnemingen). + + +```{r check data3} +table(Terr_Sigma_AB$Soort, Terr_Sigma_AB$Jaar) +``` + +Voor alle soorten zijn er gegevens van 19 gebieden tot en met 2020. + +```{r save data} + +Terr_Sigma_AB %>% + write_csv(str_c(pad_tabellen, "Terr_Sigma_AB.csv")) +``` + + +```{r} +(Terr_Sigma_AB_2023_tot <- + data23 %>% + filter(Soort %in% c("Blauwborst", "Dodaars","Rietzanger","Scholekster", + "Slobeend", "Zomertaling")) %>% + filter(Gebied != "AN_RO_inclusief Kuifeend") %>% + group_by(Jaar, Soort, Gebied) %>% + summarise(minimum = sum(minimum), maximum = sum(maximum), + .groups = "drop") %>% + mutate(Aantal = ceiling(minimum + maximum)/2) %>% + select(-c(minimum, maximum))) + +# Add 2021, 2022 and 2023 +Terr_Sigma_AB_tot <- + Terr_Sigma_AB_2021 %>% + select(-c(TypeGebied, Doel)) %>% + pivot_longer(cols = !c(SOORT, Gebied), + names_to = "Jaar", + values_to = "Aantal") %>% + rename(Soort = SOORT) %>% + mutate(Jaar = as.numeric(Jaar)) %>% + bind_rows(Terr_Sigma_AB_2023_tot) %>% + complete(Soort, Gebied, Jaar, fill = list(Aantal = 0)) %>% + group_by(Soort, Gebied, Jaar) %>% + summarise(Aantal = sum(Aantal), .groups = "drop") %>% + left_join(Gebieden[,c(1,4)]) %>% # add TypeGebied + left_join(Soorten[,c(1,5)]) # add Doel +getwd() +Terr_Sigma_AB_tot %>% + write_csv("C:/R/Projects/Broedvogels/data-output/Terr_Sigma_AB_tot.csv") +``` + + + diff --git a/moneos_2024/120_zoogdieren/10_zoogdieren_data.Rmd b/moneos_2024/120_zoogdieren/10_zoogdieren_data.Rmd new file mode 100644 index 0000000..7958965 --- /dev/null +++ b/moneos_2024/120_zoogdieren/10_zoogdieren_data.Rmd @@ -0,0 +1,232 @@ +--- +params: + hoofdstuk: "120_zoogdieren" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "MONEOS zoogdieren data" +output: + bookdown::html_document2: + toc: true + toc_float: true +editor_options: + chunk_output_type: console +--- + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) +options(knitr.kable.NA = '') +``` + +```{r libraries} + +library(tidyverse) +library(rprojroot) +library(readxl) +library(lubridate) +library(kableExtra) + +``` + +```{r pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") + +``` + +```{r data} +pad_data +(files <- list.files(pad_data, full.names = TRUE, )) +(rawfiles2024 <- files[str_detect(files, "xlsx")]) +# two tables delivered from waarningen.be, one with standard data, one with for which observer had to give consent +# read the xlsx files + +zoogdier_data <- + map(rawfiles2024, read_xlsx) + +# check whether files have same structure +ncol(zoogdier_data[[1]]) == ncol(zoogdier_data[[2]]) # same number of columns +names(zoogdier_data[[1]]) == names(zoogdier_data[[2]]) # same column names + +# combine list items to one tibble +zoogdier_data <- + zoogdier_data %>% + list_rbind() + +``` + +# Soorten in aangeleverde data + +In de dataset zitten waarnemingen van 5 soorten en één verzamelsoort (zeehond onbekend). + +```{r soorten} +zoogdier_data %>% + group_by(Soort = naam_nl) %>% + summarise() %>% + kbl(caption = "Soorten in dataset") %>% + kable_styling(full_width = FALSE, position = "left") +``` + +# Jaren in aangeleverde data + +De dataset bevat alle waarnemingen uit de periode 2010- 2023. + +```{r jaren} +table(year(zoogdier_data$datum)) +``` + +```{r jarensoort} +table(year(zoogdier_data$datum), zoogdier_data$naam_nl) %>% + kable(caption = "Aantal waarnemingen per jaar per soort") %>% + kableExtra::kable_paper() +``` + +# Gedrag in aangeleverde data + +Tot 2017 of 2018 werden waarnemingen van sporen (ook) als gedrag ingegeven. Vanaf 2019 gebeurt dit niet meer. Meerderheid van waarnemingen heeft gedrag "ter plaatse", dit is de default in de mobiele app. + +```{r gedrag} +zoogdier_data %>% + count(gedrag) %>% + knitr::kable(caption = "Gedrag in dataset") %>% + kable_styling(full_width = FALSE, position = "left") +``` + +```{r gedrag per jaar} +zoogdier_data %>% + count(gedrag, Jaar = year(datum)) %>% + spread(key = Jaar, value = n) %>% + knitr::kable(caption = "Gedrag per jaar in dataset") %>% + kable_styling() +``` + +# Methode in aangeleverde data + +Tot 2017 werd waarnemingsmethode in de overgrote meerderheid van de waarneming niet vermeld (NA). Andere waarnemingsmethodes werden amper ingevuld. Vanaf 2017 neemt het aandeel van waarnemingen waarbij de waarnemingsmethode is gespecificeerd toe. De categorie "onbekend" blijft wel een aanzienlijk aandeel innemen. + +```{r methode} +zoogdier_data %>% + count(methode) %>% + knitr::kable(caption = "Methode in dataset") %>% + kable_styling(full_width = FALSE, position = "left") +``` + +```{r methode per jaar} +zoogdier_data %>% + count(methode, Jaar = year(datum)) %>% + spread(key = Jaar, value = n) %>% + knitr::kable(caption = "Methode per jaar in dataset") %>% + kable_styling() +``` + +# Combinatie gedrag - methode + + +Analyse is niet makkelijk voor bever. Combinatie gedrag - methode is niet echt logisch voor deze soort. Bv. de categorie gedrag "(nabij) nest/burcht" kan zowel de aanwezigheid van een burcht betekenen als een zichtwaarneming van een induvidu bij de burcht. Bij gedrag bestaat een categorie bezet nest en bij methode bestaat een categorie "verlaten nest". Wij gebruiken het als zichtwaarnemingen indien methode niet aangegevens wordt dat het om sporen of een burcht gaat (zie 20_zoogdieren_analyse.Rmd). + +```{r gedrag-methode} +zoogdier_data %>% + count(gedrag, methode) %>% + knitr::kable(caption = "Combinatie Gedrag-Methode in dataset") %>% + kable_styling(full_width = FALSE, position = "left") +``` + +```{r gedrag-methode-bever} +zoogdier_data %>% + filter(str_detect(naam_nl, "Bever")) %>% + count(gedrag, methode) %>% + knitr::kable(caption = "Combinatie Gedrag-Methode voor bever") %>% + kable_styling(full_width = FALSE, position = "left") +``` + + +```{r gedrag-methode-nonspec} +zoogdier_data %>% + filter(str_detect(naam_nl, "Bever"), + (gedrag == "overige" & is.na(methode))| + (gedrag == "ter plaatse" & is.na(methode))| + (gedrag == "ter plaatse" & methode == "onbekend") + ) %>% + count(gedrag, methode, jaar = year(datum)) %>% + knitr::kable(caption = ) %>% + kable_styling(full_width = FALSE, position = "left") + +``` + + +Er zijn `r nrow(zoogdier_data[zoogdier_data$naam_nl == "Europese Bever" & zoogdier_data$gedrag == "overige" & is.na(zoogdier_data$methode),]) + nrow(zoogdier_data[zoogdier_data$naam_nl == "Europese Bever" & zoogdier_data$gedrag == "ter plaatse" & is.na(zoogdier_data$methode),])` waarnemingen van bever zonder specificatie (combinaties (gedrag = "overige" en methode = na), (gedrag = "ter plaatse" en methode = na) op een totaal van `r nrow(zoogdier_data[,2] == "Europese Bever")` waarnemingen. Gedrag = "ter plaatse" is de standaard instelling in ObsMap. Dit kan dus betekenen da het dier ter plaatse bleef maar ook dat het veld gedrag door de waarnemer niet werd ingevuld. Na 2017 komt de combinatie gedrag = "ter plaatse" en methode = na niet meer voor omdat een waarde voor methode moest worden ingevoerd, de standaardwaarde is vanaf toen "onbekend". + +```{r gedrag-methode-jaar} +zoogdier_data %>% + count(gedrag, methode, Jaar = year(datum)) %>% + spread(key = Jaar, value = n) %>% + knitr::kable() %>% + kable_styling() +``` + +
+ +# Status + +De meeste waarnemingen zijn op één of andere wijze gevalideerd (`r round(sum(str_detect(zoogdier_data$status, "Goed"))/count(zoogdier_data)*100, 0)` %).\ +`r round(sum(zoogdier_data$status == "Onbehandeld")/count(zoogdier_data)*100, 0)` % van waarnemingen zijn niet gevalideerd, `r round(sum(str_detect(zoogdier_data$status, "Niet"))/count(zoogdier_data)*100, 1)` % van de waarnemingen zijn gecategoriseerd als "Niet te beoordelen". + +Als we dit per soort bekeken valt op dat voor bever, otter (en bruinvis) een groot deel van de waarnemingen gevalideerd zijn. Voor gewone en grijze zeehond en 'zeehond onbekend' is (sinds 2016) een aanzienlijk deel van de waarnemingen onbehandeld. Dit geldt ook voor alle waarnemingen van bruinvis ná 2015, maar dat zijn er erg weinig. Gebrek aan goed bewijsmateriaal van deze laatste soorten is een mogelijke reden hiervoor, maar ook mindere aandacht van de personen die moeten valideren is een mogelijke reden, zeker gezien ook bij 'zeehond onbekend' het overgrote deel van de waarnemingen onbehandeld is. +
+ +```{r status} +zoogdier_data %>% + count(status) %>% + knitr::kable(caption = "Validatiestatus van de waarnemingen (totaal aantal in de dataset).") %>% + kable_styling(full_width = FALSE, position = "left") +``` +
+ +```{r} +zoogdier_data %>% + count(status, Jaar = year(datum)) %>% + spread(key = Jaar, value = n) %>% + knitr::kable(caption = "Validatiestatus van de waarnemingen (totaal aantal per jaar).") %>% + kable_styling(position = "left") +``` +
+ + +```{r} +zoogdier_data %>% + mutate(status2 = case_when(str_detect(status, "Goedg") ~ "Goedgekeurd", + TRUE ~ status)) %>% + count(status2, naam_nl, Jaar = year(datum)) %>% + ggplot(aes(x = Jaar, y = n, color = status2)) + + geom_point() + + labs(x ="", y = "Aantal") + + scale_x_continuous(breaks = seq(2010, 2025, by = 5), + minor_breaks = seq(2010, 2025, by = 1)) + + scale_y_continuous(label = ~ scales::comma(.x, accuracy = 1)) + + scale_color_manual(values = c("green", "red", "grey")) + + facet_wrap(facets = ~naam_nl, scales = "free") +``` +
+
+
+ +data gecreëerd op `r Sys.time()` + +data weggeschreven naar `r paste0(pad_data, "template_data.csv")` + +```{r wegschrijven-data} + +zoogdier_data %>% + write_csv(paste0(pad_data, "zoogdier_data_2010_2023.csv")) + +``` diff --git a/moneos_2024/120_zoogdieren/20_zoogdieren_analyse.Rmd b/moneos_2024/120_zoogdieren/20_zoogdieren_analyse.Rmd new file mode 100644 index 0000000..a3307f2 --- /dev/null +++ b/moneos_2024/120_zoogdieren/20_zoogdieren_analyse.Rmd @@ -0,0 +1,686 @@ +--- +params: + hoofdstuk: "120_zoogdieren" +knit: (function(inputFile, ...) { + rmarkdown::render(inputFile, + output_dir = paste0(rmarkdown::yaml_front_matter(inputFile)$params$hoofdstuk, "/output"))}) +title: "MONEOS zoogdieren analyse" +output: html_document +editor_options: + chunk_output_type: console +--- + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) +options(knitr.kable.NA = '') +``` + + +```{r libraries} + +library(tidyverse) +library(INBOtheme) +library(rprojroot) +library(lubridate) +library(readxl) +library("sf") +library("tmap") +library(kableExtra) +library(leaflet) +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r pad} +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(params$hoofdstuk, "data") +pad_figuren <- maak_pad(params$hoofdstuk, "figuren") +pad_tabellen <- maak_pad(params$hoofdstuk, "tabellen") +pad_geodata <- "I:/GIS/VNSC/" +pad_geodata2 <- "Z:/VNSC/gebiedsindeling_schelde_draft112014/gebiedsindeling_schelde112014/" +``` + + +```{r data} +zoogdier_data <- + read_csv(str_c(pad_data, "zoogdier_data_2010_2023.csv")) +``` + + +# beschrijving van de data + + - Per waarneming zijn er `r ncol(zoogdier_data)` informatievelden + + `r str_c(names(zoogdier_data), collapse = "\n - ")` + - In totaal bevat de dataset in 2022 `r nrow(zoogdier_data)` waarnemingen + - De dataset bevat waarnemingen van `r unique(zoogdier_data$naam_nl)` + + + +# Aantal waarnemingen per soort per jaar + +```{r aantal waarnemingen} + +n_seeings <- + zoogdier_data %>% + group_by(naam_nl, Jaar = year(datum)) %>% + count() %>% + spread(key = naam_nl, value = n) %>% + mutate_all(~replace(., is.na(.), 0)) +# Voor rapport wordt andere tabel gemaakt, zie chunk aantal_waarnemingen2 +# n_seeings %>% +# write_csv(paste0(pad_tabellen, "aantal_waarnemingen.csv")) + +knitr::kable(n_seeings, + caption = "Tabel X: Aantal waarnemingen per soort per jaar") %>% + kable_styling(full_width = FALSE, position = "left") + +``` +
+
+ +Tot en met rapportage 2021 werden alle waarnemingen opgenomen in de data-analyse. Hieronder wordt de dataset beperkt tot goedgekeurde waarnemingen. Voor bever, otter en bruinvis zijn de verschillen niet groot en de trends gelijkaardig, maar voor zeehonden zijn er zeker na 2016 weinig gevalideerde waarnemingen. + +```{r aantal goedgekeurde waarnemingen} +n_seeings_goedgekeurd <- + zoogdier_data %>% + filter(str_detect(status, "Goedgekeurd")) %>% + group_by(naam_nl, Jaar = year(datum)) %>% + count() %>% + spread(key = naam_nl, value = n) %>% + mutate_all(~replace(., is.na(.), 0)) +# wordt niet gebruikt in rapport +# n_seeings_goedgekeurd %>% +# write_csv(paste0(pad_tabellen, "aantal_waarnemingen_goedgekeurd.csv")) + +knitr::kable(n_seeings_goedgekeurd, + caption = "Tabel X: Aantal goedgekeurde waarnemingen per soort per jaar") %>% + kable_styling(full_width = FALSE, position = "left") +``` + + +```{r sporen} +nb <- nrow(zoogdier_data[zoogdier_data$naam_nl == "Europese Bever",]) +nsp <- nrow(zoogdier_data[zoogdier_data$naam_nl == "Europese Bever" & + (zoogdier_data$gedrag %in% c("bezet nest", "sporen", + "onbekend")| + zoogdier_data$methode %in% c( "andere sporen", "prenten", + "sporen", "sporenbed", + "uitwerpselen", "verlaten nest", + "vraatsporen")) ,]) +zoogdier_data[zoogdier_data$naam_nl == "Europese Bever" & + !(zoogdier_data$gedrag %in% c("bezet nest", "sporen", + "onbekend")| + zoogdier_data$methode %in% c( "andere sporen", "prenten", + "sporen", "sporenbed", + "uitwerpselen", "verlaten nest", + "vraatsporen")) ,] %>% + distinct(methode, gedrag) +# geen sporen in negatie => OK + +nnb <- nrow(zoogdier_data[zoogdier_data$naam_nl != "Europese Bever",]) +nspnb <- nrow(zoogdier_data[zoogdier_data$naam_nl != "Europese Bever" & + (zoogdier_data$gedrag %in% c("bezet nest", "sporen", + "onbekend")| + zoogdier_data$methode %in% c( "andere sporen", "prenten", + "sporen", "sporenbed", + "uitwerpselen", "verlaten nest", + "vraatsporen")) ,]) + +zoogdier_data[zoogdier_data$naam_nl != "Europese Bever" & + !(zoogdier_data$gedrag %in% c("bezet nest", "sporen", + "onbekend") | + zoogdier_data$methode %in% c( "andere sporen", "prenten", + "sporen", "sporenbed", + "uitwerpselen", "verlaten nest", + "vraatsporen")) ,] %>% + distinct(methode, gedrag) +# geen sporen in negatie => OK +``` + + + +
+
+ +# Aantal waarnemingen per soort per jaar (exclusief waarnemingen van sporen) + +Bij de beverwaarnemingen zitten heel wat waarnemingen van sporen of andere aanduidingen van de aanwezigheid van de soort anders dan een levend of een dood dier, het betreft meer dan een derde van de beverwaarnemingen (`r nsp` waarnemingen op een totaal van `r nb`). Bij de andere soorten nemen niet-dierwaarnemingen slechts `r round(100*nspnb/nnb, 0)` % in. + + +```{r aantal zichtwaarnemingen, include=FALSE} +n_seeings_sight <- + zoogdier_data %>% + filter( + # str_detect(status, "Goedgekeurd"), + naam_nl == "Europese Bever", + !(gedrag %in% c("sporen", "onbekend", "bezet nest")), + !(methode %in% c("vraatsporen", "andere sporen", "sporenbed", "verlaten nest"))) %>% + count(naam_nl, Jaar = year(datum)) %>% + spread(key = naam_nl, value = n) %>% + mutate_all(~replace(., is.na(.), 0)) +n_seeings_sight %>% + write_csv(paste0(pad_tabellen, "/aantal_waarnemingen_zicht.csv")) + +# Vraag: hoeveel zichtwaarnemingen bever hebben methode en gedrag ingevuld? +zoogdier_data %>% + filter( + # str_detect(status, "Goedgekeurd"), + naam_nl == "Europese Bever", + !(gedrag %in% c("sporen", "onbekend", "bezet nest")), + !(methode %in% c("vraatsporen", "andere sporen", "sporenbed", "verlaten nest"))) %>% + count(gedrag, methode) %>% + kbl() %>% + kable_styling(position = "left") + +knitr::kable(n_seeings_sight, + caption = "Tabel X: Aantal goedgekeurde zichtwaarnemingen bever per jaar (exclusief waarnemingen van sporen).", + align = "lc") %>% + kable_styling(position = "left") +``` +
+
+ +```{r aantal zichtwaarnemingen2} +n_seeings2 <- + n_seeings_sight %>% + inner_join(n_seeings, by = ("Jaar")) %>% + mutate(`Europese Bever` = paste0(`Europese Bever.y`, " (", + `Europese Bever.x`, ")")) %>% + select(Jaar, `Europese Bever`, `Europese Otter`, `Gewone Bruinvis`, `Gewone Zeehond`, + `Grijze Zeehond`, `Zeehond onbekend`) +n_seeings2 %>% + write_csv(paste0(pad_tabellen, "aantal_waarnemingen.csv")) + +knitr::kable(n_seeings2, + caption = "Tabel X: Aantal waarnemingen per soort per jaar, voor bever staat het aantal waarnemingen van niet-dieren (sporen e.d.m.) tussen hakkejes", + align = "lcccccc") %>% + kable_styling(full_width = FALSE, position = "left") +``` +
+
+ +```{r aantal individuen} +n_indiv <- + zoogdier_data %>% + filter( + # str_detect(status, "Goedgekeurd"), + !(gedrag %in% c("sporen", "onbekend", "bezet nest")), + !(methode %in% c( "andere sporen", "prenten", "sporen", "sporenbed", + "uitwerpselen", "verlaten nest", "vraatsporen"))) %>% + group_by(naam_nl, Jaar = year(datum)) %>% + summarise(n = sum(aantal), .groups = "drop") +# categorieën in veld gedrag zijn van naam gewijzigd tov 2022 +n_indiv_death <- + zoogdier_data %>% + filter(gedrag %in% c("dood", "slachtoffer verdrinking", "slachtoffer verkeer")) %>% + group_by(naam_nl, Jaar = year(datum)) %>% + summarise(n_death = sum(aantal), .groups = "drop") +n_indiv_with_dead <- + n_indiv %>% + left_join(n_indiv_death, by = c("naam_nl", "Jaar")) %>% + mutate(string = ifelse(is.na(n_death), + as.character(n), + paste0(n, " (", n_death, "†)"))) %>% + select(Jaar, naam_nl, string) %>% + spread(key = naam_nl, value = string) %>% + mutate_all(~replace(., is.na(.), 0)) + +n_indiv_with_dead %>% + write_csv(paste0(pad_tabellen, "/aantal_ind.csv")) + +knitr::kable(n_indiv_with_dead, align = "lccccccc", + caption = "Tabel X: Aantal ingevoerde individuen per jaar (exclusief waarnemingen van sporen).") %>% + kable_styling(full_width = FALSE, position = "left") +``` +
+
+ +```{r 120_fig_aantal_indiv} +fig_1 <- + zoogdier_data %>% + filter(!(gedrag %in% c("sporen", "onbekend")), + !(methode %in% c("vraatsporen", "andere sporen", "sporenbed"))) %>% + group_by(naam_nl, Jaar = year(datum)) %>% + summarise(n = sum(aantal), .groups = "drop") %>% + complete(naam_nl, Jaar, fill = list(n = 0)) %>% # fill out missing years + mutate(facet = case_when(naam_nl %in% c("Europese Bever", "Gewone Bruinvis") ~ + "Bever en bruinvis", + TRUE ~ "Otter en zeehonden")) %>% # for facetting of graph + ggplot(aes(x = Jaar, y = n, color = naam_nl)) + + geom_line(lwd = 1) + + scale_x_continuous(breaks = seq(2010, 2023, by =1)) + + theme(axis.title = element_blank(), + legend.title = element_blank(), + legend.position = "bottom") + + facet_wrap(facets = ~facet, scales = "free") + + scale_x_continuous(breaks = seq(2010, 2023, by = 2)) + +fig_1 +ggsave(paste0(pad_figuren, "120_fig1_aantal_ind.jpg"), width = 8, height = 4) +``` + +# Verspreidingskaartjes bever + +Onderstaande verspreidingskaartje zijn gebaseerd op alle gevalideerde waarnemingen van bever in waarnemingen.be. + +```{r geodata, include=FALSE} +utm1 <- st_read(str_c(pad_geodata, "NOPplus_UTM1.shp")) +utm1_c <- st_centroid(utm1) %>% + select(-c(Shape_Leng, Shape_Area)) +Schelde_boundaries <- st_read(str_c(pad_geodata2, "Boundaries.shp")) +pad_geodata +pad_geodata2 +getijrivieren <- st_read(str_c(pad_geodata2, "getij_afh_zones.shp")) +buurlanden <- st_read(str_c(pad_geodata2, "buurlanden.shp")) +``` + +```{r beverkaartdata} +(soort_nUTM1 <- + zoogdier_data %>% + filter(str_detect(status, "Goedg")) %>% + group_by(Jaar = year(datum), naam_nl) %>% + summarise(n = n_distinct(utm1), + .groups = "drop")) +write_csv(soort_nUTM1, file = str_c(pad_data, "soort_nUTM1.csv")) +``` + +```{r mapbackground} +bbox <- st_bbox(utm1_c) + c(-500, -500, 500, 500) +map_basis <- + tm_shape(buurlanden, bbox = bbox) + tm_borders() + tm_fill(col = "lightyellow") + + tm_shape(Schelde_boundaries) + + tm_borders(col = "blue", col.alpha = 0.5) + + tm_fill(col = "dodgerblue") + + tm_shape(getijrivieren) + tm_lines(col = "blue", col.alpha = 0.5) + + tm_shape(utm1) + + tm_borders(lwd = 0.25, col = "grey30") +``` + +```{r maps-nieuw-valid, eval=FALSE} +# make list of tibbles each tibble has unique naam_nl en Jaar, voor gevalideerde waarnemingen van bever en otter. +zoogd_grouped <- + zoogdier_data %>% + filter(str_detect(status, "Goedg"), + naam_nl %in% c("Europese Bever", "Europese Otter")) %>% # enkel gevalideerde waarnemingen + group_by(naam_nl, Jaar = year(datum), TAG = utm1) %>% + summarise(aantal = sum(aantal), radius = sum(aantal)^0.5, + .groups = "drop") %>% + group_by(naam_nl, Jaar) + +# make list of tibbles for each group in zoogd_grouped +utm_n_list <- + zoogd_grouped%>% + group_split(.keep = TRUE) +groupkeys <- # get names of eacht tibble ("naam-nl_jaar") + group_keys(zoogd_grouped) %>% + mutate(naam_jaar = str_c(naam_nl, "_", Jaar)) %>% + select(naam_jaar) +names(utm_n_list) <- groupkeys$naam_jaar # names tiblles in list + +# make list of simple features +utm_n_list2 <- map(utm_n_list, merge, utm1_c) # merge to utm centroid +utm_n_list_sf <- map(utm_n_list2, st_as_sf, sf_column_name = "geometry") # make sf + +# function to make list of tmaps +mapf <- function(x){ + title <- str_c(x[[2]][1], "_", x[[3]][1]) + m <- + map_basis + + tm_shape(x) + + tm_symbols(fill = "red", col = "black", + size = "radius", + size.scale = + tm_scale_continuous(limits = c(0,7), + outliers.trunc = c(FALSE, TRUE), + ticks = c(1, 2, 3, 5, 7), + labels = c("1", "4", "9", "49", ">=49")), + size.legend = tm_legend(title = title, + bg.color = "white", bg.alpha = 0.5, + position = tm_pos_in(pos.h = "right"), + title.size = 1.2, text.size = 0.8) + ) + return(m) +} + +# test +# mapf(utm_n_list_sf[[16]]) +# mapf(utm_n_list_sf[["Europese Otter_2012"]]) + +utm_tmmap_list <- map(utm_n_list_sf, mapf) # make tmap objects + +# utm_tmmap_list[[2]] +# utm_tmmap_list[[8]] +# utm_tmmap_list[["Europese Bever_2019"]] +# utm_tmmap_list[["Grijze Zeehond_2019"]] + +# save all maps +for(x in names(utm_tmmap_list)){ + a <- utm_tmmap_list[[x]] + tmap_save(a, filename = str_c(pad_figuren, x, ".png")) +} +# utm_tmmap_list[["Zeehond onbekend_2021"]] %>% +# tmap_save(filename = str_c(pad_figuren, "Zeehond onbekend_2021", ".png")) +# hieronder een poging om bovenstaand for-loop met purrr::map te doen, maar deze code (allebeid) bewaart herhaaldelijk "Zeehond onbekend_2021" +# map(utm_tmmap_list[], tmap_save, filename = str_c(pad_figuren, x, ".png")) +# map(utm_tmmap_list, tmap_save, filename = str_c(pad_figuren, x, ".png")) + +``` + +```{r maps-nieuw-notvalid, eval=FALSE} +# make list of tibbles each tibble has unique naam_nl en Jaar, met alle gevalideerde waarnemingen van gewone zeehond, grijze zeehond, bruinvis en zeehond onbekend +zoogd_grouped <- + zoogdier_data %>% + filter(!naam_nl %in% c("Europese Bever", "Europese Otter")) %>% # alle waarnemingen van zeehonden en bruikvis + group_by(naam_nl, Jaar = year(datum), TAG = utm1) %>% + summarise(aantal = sum(aantal), radius = sum(aantal)^0.5, + .groups = "drop") %>% + group_by(naam_nl, Jaar) + +# make list of tibbles for each group in zoogd_grouped +utm_n_list <- + zoogd_grouped%>% + group_split(.keep = TRUE) +groupkeys <- # get names of eacht tibble ("naam-nl_jaar") + group_keys(zoogd_grouped) %>% + mutate(naam_jaar = str_c(naam_nl, "_", Jaar)) %>% + select(naam_jaar) +names(utm_n_list) <- groupkeys$naam_jaar # names tiblles in list + +# make list of simple features +utm_n_list2 <- map(utm_n_list, merge, utm1_c) # merge to utm centroid +utm_n_list_sf <- map(utm_n_list2, st_as_sf, sf_column_name = "geometry") # make sf + +# function to make list of tmaps +mapf <- function(x){ + title <- str_c(x[[2]][1], "_", x[[3]][1]) + m <- + map_basis + + tm_shape(x) + + tm_symbols(fill = "red", col = "black", + size = "radius", + size.scale = + tm_scale_continuous(limits = c(0,7), + outliers.trunc = c(FALSE, TRUE), + ticks = c(1, 2, 3, 5, 7), + labels = c("1", "4", "9", "49", ">=49")), + size.legend = tm_legend(title = title, + bg.color = "white", bg.alpha = 0.5, + position = tm_pos_in(pos.h = "right"), + title.size = 1.2, text.size = 0.8) + ) + return(m) +} + +# test +# mapf(utm_n_list_sf[[16]]) +# mapf(utm_n_list_sf[["Europese Otter_2012"]]) + +utm_tmmap_list <- map(utm_n_list_sf, mapf) # make tmap objects + +# utm_tmmap_list[[2]] +# utm_tmmap_list[[8]] +# utm_tmmap_list[["Europese Bever_2019"]] +# utm_tmmap_list[["Grijze Zeehond_2019"]] + +# save all maps +for(x in names(utm_tmmap_list)){ + a <- utm_tmmap_list[[x]] + tmap_save(a, filename = str_c(pad_figuren, x, ".png")) +} +# utm_tmmap_list[["Zeehond onbekend_2021"]] %>% +# tmap_save(filename = str_c(pad_figuren, "Zeehond onbekend_2021", ".png")) +# hieronder een poging om bovenstaand for-loop met purrr::map te doen, maar deze code (allebeid) bewaart herhaaldelijk "Zeehond onbekend_2021" +# map(utm_tmmap_list[], tmap_save, filename = str_c(pad_figuren, x, ".png")) +# map(utm_tmmap_list, tmap_save, filename = str_c(pad_figuren, x, ".png")) + +``` + +```{r mapbever2019, fig.cap="Fig xxx: Aantal waarnemingen van Europese bever per UTM-km-hok in 2019."} +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2019.png")) +``` + +```{r mapbever2020, fig.cap="Fig xxx: Aantal waarnemingen van Europese bever per UTM-km-hok in 2020."} +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2020.png")) +``` + +```{r mapbever2021, fig.cap="Fig xxx: Aantal waarnemingen van Europese bever per UTM-km-hok in 2021."} +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2021.png")) +``` + +```{r mapbever2022, fig.cap="Fig xxx: Aantal waarnemingen van Europese bever per UTM-km-hok in 2022."} +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2022.png")) +``` + +```{r mapbever2023, fig.cap="Fig xxx: Aantal waarnemingen van Europese bever per UTM-km-hok in 2023."} +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2023.png")) +``` + +```{r bezette utm-hokken} +soort_nUTM1 %>% + filter(naam_nl == "Europese Bever") %>% + ggplot(aes(x = Jaar, y = n)) + + geom_point() + + geom_line() + + labs(y = "aantal bezette km-hokken") + + scale_x_continuous(breaks = seq(2010, 2022, by = 2)) +ggsave(filename = paste0(pad_figuren, "bever_utm.png")) +``` + +```{r recente-utm} +bever_evol <- + zoogdier_data %>% + filter(naam_nl == "Europese Bever") %>% + mutate(Jaar = year(datum)) %>% + group_by(utm1) %>% + summarise(EersteJaar = min(Jaar), AantalJaar = n_distinct(Jaar)) %>% + mutate(EersteJaarf = factor(EersteJaar, levels = c(2010:2023))) %>% + arrange(desc(EersteJaar)) + +map_basis + + (utm1 %>% + left_join(bever_evol, by = c("TAG" = "utm1")) %>% + filter(EersteJaar > 2020) %>% + tm_shape() + + tm_fill(fill = "EersteJaar", + fill.scale = + tm_scale_categorical(values = c("red", "orange", "yellow"), + labels = c("2021", "2022", "2023")))) +``` + + +```{r utm-evol} +pal <- cols4all::c4a("-brewer.yl_or_br", n = 14) +kolononisatie_fig <- + map_basis + + (utm1 %>% + left_join(bever_evol, by = c("TAG" = "utm1")) %>% + filter(!is.na(EersteJaar)) %>% + tm_shape() + + tm_fill(fill = "EersteJaarf", + fill.scale = + tm_scale_categorical(values = pal, labels = c(2010:2023)), + fill.legend = tm_legend_hide()) + + tm_add_legend(labels = c(2010:2016), fill = pal[1:7], type = "polygons", + title = "Eerste jaar", bg.color = "white") + + tm_add_legend(labels = c(2017:2023), fill = pal[8:14], type = "polygons", + title = " ", stack = "horizontal")) + + tm_place_legends_inside() + +tmap_save(tm = kolononisatie_fig, + filename = paste0(pad_figuren, "bever_kolonisatie.png")) +``` + + +# Verspreidingskaartjes otter + +```{r mapotter2020, fig.cap="Fig xxx: Aantal waarnemingen van Europese otter per UTM-km-hok in 2020."} +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2020.png")) +``` + +```{r mapotter2021, fig.cap="Fig xxx: Aantal waarnemingen van Europese otter per UTM-km-hok in 2021."} +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2021.png")) +``` + +```{r mapotter2022, fig.cap="Fig xxx: Aantal waarnemingen van Europese otter per UTM-km-hok in 2022."} +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2022.png")) +``` + +```{r mapotter2023, fig.cap="Fig xxx: Aantal waarnemingen van Europese otter per UTM-km-hok in 2023."} +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2023.png")) +``` + +Bij merendeel van de waarnemingen is methode niet ingevuld. Waarschijnlijk zijn meeste waarnemingen van Joris Everaert met cameraval, maar is dit uit veiligheidsoverwegingen niet ingegeven. + +```{r methode} +zoogdier_data %>% + filter(str_detect(status, "Goedg"), + naam_nl == "Europese Otter") %>% + count(Jaar = year(datum), methode) +``` + +```{r bezette utm-hokken_otter} +soort_nUTM1 %>% + filter(naam_nl == "Europese Otter") %>% + ggplot(aes(x = Jaar, y = n)) + + geom_point() + + geom_line() + + labs(y = "aantal bezette km-hokken") + + scale_x_continuous(breaks = seq(2010, 2022, by = 2)) + + scale_y_continuous(breaks = seq(0, 14, by = 5), minor_breaks = seq(0, 14, by =2)) +ggsave(filename = paste0(pad_figuren, "otter_utm.png")) +``` + +# Gewone zeehond + + +```{r tabel gewone zeehond} +GewoneZeehond2023 <- + zoogdier_data %>% + filter(naam_nl == "Gewone Zeehond", + year(datum) == 2023) %>% + select(Datum = datum, Aantal = aantal, Gedrag = gedrag, Gebied = gebied, + Gemeente = gemeente, Deelgemeente = deelgemeente) %>% + arrange(Datum) +GewoneZeehond2023 %>% + kbl(align = "lcllll", caption = "Tabel XX: overzicht van alle waarnemingen van gewone zeehond in 2023 in de Zeeschelde en haar bijrivieren.") %>% + kable_styling(full_width = TRUE, bootstrap_options = c("condensed")) %>% + column_spec(1, width = "2.5cm") %>% + column_spec(2, width = "1.5cm") %>% + column_spec(3, width = "2.5cm") + +GewoneZeehond2023 %>% + write_csv(paste0(pad_tabellen, "/zeehond2023.csv")) +``` +
+ +```{r make sf} +# zeehond_data_sf <- +# zoogdier_data %>% +# filter(naam_nl == "Gewone Zeehond", +# year(datum) == 2022) %>% +# select(datum, aantal, gedrag, methode, x, y) %>% +# st_as_sf(coords = c("x", "y"), crs =31370) %>% +# st_transform(crs = 4326) +``` + + +```{r map zeehond} +# leaflet() %>% + # addTiles() %>% + # addCircleMarkers(data = zeehond_data_sf, + # radius = 3, label = ~datum) +``` +
+
+ + + +# Grijze zeehond + +```{r tabel grijze zeehond} +GrijzeZeehond2023 <- + zoogdier_data %>% + filter(naam_nl == "Grijze Zeehond", + year(datum) == 2023) %>% + select(Datum = datum, Aantal = aantal, Gedrag = gedrag, Gebied = gebied, + Gemeente = gemeente, Deelgemeente = deelgemeente) %>% + arrange(Datum) +GrijzeZeehond2023 %>% + kbl(align = "lcllll", caption = "Tabel XX: overzicht van alle waarnemingen van grijze zeehond in 2023 in de Zeeschelde en haar bijrivieren.") %>% + kable_styling(full_width = TRUE, bootstrap_options = c("condensed")) %>% + column_spec(1, width = "2.5cm") %>% + column_spec(2, width = "1.5cm") %>% + column_spec(3, width = "2.5cm") + +GrijzeZeehond2023 %>% + write_csv(paste0(pad_tabellen, "/grijzezeehond2023.csv")) +``` +
+ +```{r make sf2} +# grijzezeehond_data_sf <- +# zoogdier_data %>% +# filter(naam_nl == "Grijze Zeehond", +# year(datum) == 2022) %>% +# select(datum, aantal, gedrag, methode, x, y) %>% +# st_as_sf(coords = c("x", "y"), crs =31370) %>% +# st_transform(crs = 4326) +``` + + +```{r map grijzezeehond} +# leaflet() %>% +# addTiles() %>% +# addCircleMarkers(data = grijzezeehond_data_sf, +# radius = 3, label = ~datum) +``` +
+ +```{r tabel bruinvis} +Bruinvis2023 <- + zoogdier_data %>% + filter(naam_nl == "Gewone Bruinvis", + year(datum) == 2023) %>% + select(Datum = datum, Aantal = aantal, Gedrag = gedrag, Gebied = gebied, + Gemeente = gemeente, Deelgemeente = deelgemeente) %>% + arrange(Datum) +Bruinvis2023 %>% + kbl(align = "lcllll", caption = "Tabel XX: overzicht van alle waarnemingen van bruinvis in 2023 in de Zeeschelde en haar bijrivieren.") %>% + kable_styling(full_width = TRUE, bootstrap_options = c("condensed")) %>% + column_spec(1, width = "2.5cm") %>% + column_spec(2, width = "1.5cm") %>% + column_spec(3, width = "2.5cm") + +Bruinvis2023 %>% + write_csv(paste0(pad_tabellen, "/bruinvis2023.csv")) +``` +
+ + +```{r make sf3} +# bruinvis_data_sf <- +# zoogdier_data %>% +# filter(naam_nl == "Gewone Bruinvis", +# year(datum) == 2022) %>% +# select(datum, aantal, gedrag, methode, x, y) %>% +# st_as_sf(coords = c("x", "y"), crs =31370) %>% +# st_transform(crs = 4326) +``` + + +```{r map bruinvis} +# leaflet() %>% +# addTiles() %>% +# addCircleMarkers(data = bruinvis_data_sf, +# radius = 3, label = ~datum) +``` +
diff --git a/moneos_2024/150_geintegreerd_rapport/000_abstract.Rmd b/moneos_2024/150_geintegreerd_rapport/000_abstract.Rmd new file mode 100644 index 0000000..e080447 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/000_abstract.Rmd @@ -0,0 +1,102 @@ +# Dankwoord/Voorwoord {.unnumbered} + +Het INBO monitoringsprogramma wordt uitgevoerd met de financiële steun van de Vlaamse Waterweg nv, Maritieme Toegang (MT) en het Agentschap voor Natuur en Bos (ANB). +Waarvoor dank. +De monitoring zou niet mogelijk geweest zijn zonder de bemanning van de schepen SCALDIS I, Scheldewacht II, Veremans, Henry de Vos en de Parel. +Dank aan Erwin De Backer (Waterbouwkundig laboratorium) voor de uitstekende planning van de bootcampagnes. + +De zoogdierengegevens werden met toestemming ontleend uit de databank van Waarnemingen.be (Natuurpunt VZW). + +De superdeluxe dataverzameling en het laboratoriumwerk voor watervogels, hyperbenthos, macrozoöbenthos en de hoogteraaien werden uitgevoerd door Dimitri Buerms, Ada Coudenys, Nico De Regge, Kenny Hessel, Charles Lefranc, Vincent Smeekens, Jan Soors en Frederic Van Lierop. +Topteam Estuaria! + +De vismonitoring en data aanlevering werden voor ons verzorgd door INBO team MHAF (Monitoring Herstel Aquatische Fauna). +Medewerkers van team MHAF leverden opnieuw prachtig werk: Olja Bezdenjesnji, Franky Dens, Marc Dewit, Linde Galle, Isabel Lambeens, Yves Maes, Thomas Terrie, Grim Boddez en Laura Van de Meersche. +Voor de ankerkuilvisserij konden we rekenen op Sjaak, Job en Davy. +Dankzij hun professionele vaardigheid zijn de campagnes in 2022 vlot verlopen en kon ons onderzoek in de beste omstandigheden worden uitgevoerd, dank u wel. +Mevrouw Cabradilla (de Vlaamse Waterweg nv) verleent ons altijd vlot de nodige aanmeertoelatingen, hartelijk dank. + +We zijn ook de mensen van BMK en in het bijzonder Els Lommelen erkentelijk voor de technische ondersteuning en begeleiding bij het uitwerken van de rapportering via rmarkdown, bookdown en github. + +# Samenvatting {.unnumbered} + +Deze rapportage geeft toelichting bij de datarapportage van de geïntegreerde systeemmonitoring van het Schelde-estuarium, kortweg MONEOS (= MONitoring Effecten OntwikkelingsSchets), uitgevoerd door het INBO. +De nadruk ligt op de resultaten van het monitoringsjaren 2022-2023 voor de aspecten leefomgeving voor flora en fauna en ecologie. + +We lichten de langjarige trends toe en we voeren de Evaluatiemethodiek Schelde-estuarium (EMSE) uit voor verschillende hoofdstukken. + +We bespreken de ecotopenkaart van 2022 van de Beneden-Zeeschelde. +Het globale plaatje over de lange termijn is een uitruiming van de vaargeul met steiler wordende oevers als gevolg. De schoroppervlakte neemt ook verder toe, vooral in nieuwe Sigmagebieden. +In het tot nu toe toegepaste Zeeschelde ecotopenstelsel 1.0 werden subtidale (water) en litorale (slik) ecotopen vooralsnog uitsluitend op basis van diepte en overspoelingsregime onderscheiden, zonder ecologische validatie. +Op basis van recent onderzoek werd het ecotopenstelsel Zeeschelde 2.0 voorgesteld. +In deze rapportage wordt de ecotopenkaart voor de Beneden‐Zeeschelde 2021 volgens beide ecotopenstelsels voorgesteld en vergeleken. +Zo kunnen we nu in het sublitoraal de ecologisch meest waardevolle zones identificeren. +8.5% van het sublitoraal blijkt laagdynamisch waardevol habitat en situeert zich grotendeels in het ondiep subtidaal. +De klassificatie resulteert verder vooral in een verschuiving van middelhoog naar hoog slik zacht substraat of hard antropogeen (op hoog slik). De steile slikken zijn in hoofdzaak antropogeen verstevigde breuksteenzones. + +Op basis van een statistische verkenning tonen de sedimentdata verzameld bij de macrozoöbenthosstalen significant slibrijker wordende bodems. Dit is opvallend voor de intertidale habitats van de zijrivieren en de Zeeschelde. Opvallend is dat ook de geul van de zone met sterke saliniteitsgradiënt (Beneden-Zeeschelde) significant slibrijker wordt. Nochtans is de variatie in sedimentsamenstelling hier net groot. De geul in zone met korte verblijftijd lijkt anderzijds minder slibrijk te worden (nog niet significant). + +De soortenrijkdom van het macrozoöbenthos (exclusief Oligochaeta) lijkt de laatste jaren licht te stijgen in de meeste zones van de Zeeschelde.De shannondiversiteit in het intertidaal neemt toe in vrijwel alle zones sinds 2015. +In het subtidaal zijn er veel diversiteitsschommelingen. +In de zone met sterke saliniteitsgradiënt is er een sterke toename te noteren van schelpdieren. Vooral van de brakwaterkorfschelp (*Potamocorbula amurensis*) in het laag intertidaal en subtidaal en de platte slijkgapper (*Scrobicularia plana*) in het intertidaal. +Door de bemonstering op kleine oppervlakte is de kans op een toevalstreffer bij grotere organismen te groot (en de fout op de biomassaberekening te groot). Dit verklaart wellicht de lagere biomassaberekening voor de zone met sterke saliniteitsgradiënt in 2022. Om dit te verbeteren hebben we onze monitoringsmethodiek aangepast hebben naar een aanvullende staalname, gericht op bivalven, met grotere core en levend zeven. In de Boven-Zeeschelde werd een belangrijk deel van de systeembiomassa gerealiseerd in de zone zoet korte verblijftijd, meer bepaald in de Scheldemeander tussen Melle en Gentbrugge. We zien dat de bodemdierbiomassa hier de laatste jaren daalt. Deze daling stuurt ook mee de algemene patronen van de bodemdierbiomassa in de Zeeschelde. + + +De soortenrijkdom van het hyperbenthos schommelt van jaar tot jaar. +Biomassa vertoont een patroon met in de zones stroomopwaarts van Antwerpen een gestage +toename na juni tot het einde van het jaar. Dit bevestigt de aanname dat dit voor veel hyperbenthische +soorten en vooral voor garnalen, aasgarnalen en vissen, een opgroeigebied is. De evolutie van densiteiten +en biomassa overheen de monitoringsjaren is onderhevig aan grote schommelingen die samen hangen +met goede en slechte jaren van specifieke soorten. Sinds 2022 zien we bijzonder lage hyperbenthosdensiteiten en dalende totale hyperbenthosbiomassa in het systeem. Vooral de grijze garnaal en de langneussteurgarnaal zijn, na elk +een eigen bloeiperiode, nu al enkele jaren in lagere aantallen aanwezig. Dit resulteert in een lagere predatiedruk door deze groep in het trofische voedselweb. + +In deze rapportage wordt de vismonitoring in 2023 op de Zeeschelde met behulp van de ankerkuil en fuiken besproken. 2023 was net als 2022 een bodemjaar voor het aantal spieringen in de Zeeschelde. Dit geldt zowel voor de ankerkuil als voor de fuikvangsten, waardoor het beeld van de absolute dominantie van deze soort zelfs in het pelagiaal vervaagt. Grondels (brakwatergrondel en ook dikkop) zijn dominant in de aantallen in de oligohaliene en zoete zones. Sinds 2022 duikt de visindex voor de zoete zone, met een ontoereikende kwaliteitsbeoordeling, voor het eerst sinds 2009 onder die van de brakke en oligohaliene zones. Deze situatie moet nauw opgevolgd worden. +Naar estuarien habitatgebruik overheersen de trekvissen de visgemeenschappen van de Zeeschelde in aantal en biomassa. +Het estuarium heeft dus weer zijn functie opgenomen in de levenscyclus van deze soorten. +Om te evalueren of de populaties echt gevestigd en duurzaam zijn is echter een cohorte-analyse van de betrokken soorten in tijd en ruimte nodig. Naar dieet overheersen omnivore soorten, een normale opportunistische dieetkeuze in een estuarium met wisselende levensomstandigheden. Toch wordt het voedselweb stilaan complexer. Dit uit zich in een toename van benthivore en piscivore soorten. Om dit beter te evalueren moet voor de belangrijkste soorten rekening gehouden worden met de dieetshift die ze maken in de overgang van juveniel naar adult. In de rapportage wordt naast een evaluatie volgens de EMSE een alternatieve beoordelingsmethode voorgesteld bruikbaar als insteek voor een toekomstige herwerking van de methodiek. + +Opvallend is dat we veel schommelingen zien in het hyperbenthos en de vissen. De vraag kan gesteld worden in hoeverre +de sterk wisselende densiteiten een natuurlijk fenomeen zijn in het bovendeel van +een estuarium, en dus als negatief beoordeeld moet worden. Het is waarschijnlijk deels eigen aan een +opgroeigebied als de Zeeschelde dat er extreem succesvolle recruteringsjaren zijn waarin alle factoren +mee zitten, en waarin één of enkele soorten de gemeenschap domineren. Anderzijds is meer ecologische +kennis nodig over waarom soorten goede en slechte jaren afwisselen, en om natuurlijke en door de mens +beïnvloede oorzaken te kunnen onderscheiden. Concluderend is er een noodzaak om onderzoek op te starten om met innovatieve monitoring (bijvoorbeeld met echosounding) continue data te verzamelen en/of om ruimtelijk een beter beeld te krijgen van het habitatgebruik. Dit onderzoek moet helpen om de variaties in het waterleven in ruimte en tijd te verklaren. + +Over de periode 2009-2023 bekeken is er op het niveau van de Zeeschelde een dalende trend te zien in het aantal overwinterende watervogels. +De trendindex toont wel een toename in de sterke saliniteitsgradiënt. Dit is vooral te wijten aan de toename van scholeksters, bergeenden en in 2023 ook tureluurs. De toename van de scholekster is vermoedelijk het gevolg van de toename aan schelpdieren (zie hoofdstuk Macrozoöbenthos). Bovendien trok de ontpoldering van Hedwige-Prosper sinds 2021 heel wat watervogels aan die ook gebruik maken van de slikken van de Zeeschelde. +Opvallend is de negatieve trend van de zone zoet lang, vooral veroorzaakt door een zeer sterke afname van de wilde eend. +De diversiteit is het grootst in de zone met een sterke saliniteitsgradiënt en laag in de Durme en de zone zoet lang. +De afname van de vogelaantallen langsheen de Zeeschelde wordt gecompenseerd door de toename van de vogelaantallen in de estuariene natuurontwikkelingsgebieden. In de ontpoldering van het Groot Schoor te Hamme verbleven zeer hoge aantallen wintertalingen en bergeenden. +Dit resulteert tot vandaag niet in een totale toename van de watervogelaantallen binnen het estuarium (de vallei buiten beschouwing gelaten). + +De evoluties in de broedvogelaantallen voor een selectie van goed te inventariseren soorten binnen IHD-gebied (wetlands en estuariene gebieden) worden besproken in deze rapportage. +Verscheidene soorten met doelstellingen komen tot 2023 nog steeds zelden tot broeden in het IHD‐gebied Schelde‐estuarium (grote karekiet, kwak, kwartelkoning, roerdomp en paapje), of werden nog nooit vastgesteld als broedvogel (purperreiger). +Grote karekiet en lepelaar lijken zich wel te vestigen als regelmatige broedvogel. +De zomertaling, baardman, woudaap en snor vertonen de laatste jaren een stijgende trend in de vallei van de Zeeschelde en haar tijgebonden zijrivieren. Voor het eerst wordt het doel van de zomertaling bereikt. Het valt op te merken dat het gebied Wal-Zwijn met een tussentijdsbeheer als wetland bijzonder succesvol was in het aantrekken van doelsoorten zoals roerdomp, woudaap, zomertaling, snor, grote karekiet en dodaars. +De predatiewerende omheiningen in het noordelijk gebied hebben duidelijk een effect met hogere broedaantallen sinds 2021 van kluut, tureluur en een beperkte toename van grutto. +De bruine kiekendief blijft stabiel (maar laag). +Behalve voor zomertaling, blauwborst, rietzanger en dodaars worden de doelstellingen voor geen enkele soort gehaald. + +De bever koloniseerde ondertussen bijna alle geschikte habitats in het Zeeschelde-estuarium en neemt nu opvallend toe langsheen de Grote Nete. +Het geschatte aantal beverterritoria in de vallei van de Zeeschelde en tijgebonden zijrivieren wordt geschat op ca. +73. +Dit stemt overeen met 44 families. +De IHD-doelstelling voor bever is daarmee gerealiseerd. +Het aantal waarnemeningen van otters is stabiel. +De instandhoudingsdoelstellingen zijn echter zeker nog niet vervuld. +Het aantal waargenomen gewone zeehonden was lager dan voorgaande jaren. Er waren slechts twee waarnemingen van bruinvis en grijze zeehond. + + +De detail-hoogtemetingen op raaien langsheen de Zeeschelde illustreren en onderbouwen de waargenomen ontwikkelingen in de ecotopenkaarten en zijn een indicatief als early warning voor morfologische veranderingen in het systeem. Algemeen kunnen we stellen dat er in de Beneden-Zeeschelde relatief weinig gewijzigd is ten opzichte van de langjarige trend. De trends zijn eerder doorgaand. Ter hoogte van Lillo Haven (LH) is nu voor het eerste jaar sterke erosie met vorming van erosieklif op het slik vastgesteld. +De zone rond Antwerpen en Hoboken (GW en HO) wordt gekenmerkt door sterke morfodynamiek (zandmobiliteit) toe tussen de jaren erosie of sedimentatie van zand ter hoogte van de Galgenweel‐raai (GW). Hier verliest het slik wel het grootste deel van het +slib waarbij meer harde substraat komt bloot te liggen. Dit illustreert de hoge dynamiek in deze zone. +Daarnaast zijn er opvallend veel aanwijzingen voor trendbreuken in 2022 en2023 in hoog en middelhoog slik in de +Boven‐Zeeschelde met plotse erosie of stagnatie van de sedimentatie. In de zone tussen Rupel- en de Durmemonding wordt de stagnatie van sedimentatie en omslag naar erosie bevestigd. Hier is een trend tot verruiming van de vaargeul met gevolgen voor de slikken (minder sedimentatie tot trendbreuk naar erosie). +Een verband met de bathymetrische veranderingen en de bagger- en zandwinningshoeveelheden in het kader van de duurzame bathymetrie van de Boven-Zeeschelde en Durme kan niet worden uitgesloten. +Het lijkt daarom raadzaam om deze evoluties en de mogelijke link met de duurzame bathymetrie nauw op te volgen om sterke irreversibele morfologische veranderingen zo ver stroomopwaarts te voorkomen. +Verder onderzoek naar de recente veranderingen in deze zone en mogelijke impact van huidige rivierbeheermaatregelen is dus zeer wenselijk. + +Ook de oevererosie werd gemonitord op basis van de bathymetrische verschilkaart (2023 versus 2022, 2021 en 2020). +Deze kaarten dienen voornamelijk ter ondersteuning van de interpretatie van erosie van het hoger slik en schorrand als monitoring in functie van het oeverbeheer. Er wordt als signaalfunctie een erosie (en sedimentatie) van meer dan 50 cm gehanteerd. Zowel in de Boven‐ als Beneden‐Zeeschelde zijn grote dynamieken waargenomen in enkele zones. +De waargenomen erosiezones vergen geen directe ingrepen, maar kunnen de voorbode zijn van toenemende erosieve druk op de hogere slikken en schorren zoals ook vastgesteld op de raaimetingen en zijn zones van aandacht. Vooral de erosie in de ondiepwaterzones van bochten in de Boven-Zeeschelde is opvallend. diff --git a/moneos_2024/150_geintegreerd_rapport/010_Inleiding.Rmd b/moneos_2024/150_geintegreerd_rapport/010_Inleiding.Rmd new file mode 100644 index 0000000..9479ec0 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/010_Inleiding.Rmd @@ -0,0 +1,141 @@ + +\mainmatter + + +```{r 010-hoofdstuk, include=FALSE} + +hoofdstuk <- "010_inleiding" + +``` + +```{r 010-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 010-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad +``` + +```{r 010-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + + +# Inleiding + +De voorliggende datarapportage omvat een eerstelijnsanalyse en toelichting van de onderdelen van de geïntegreerde systeemmonitoring van het Schelde-estuarium, kortweg MONEOS (= MONitoring Effecten OntwikkelingsSchets) (Meire & Maris, 2008), uitgevoerd door het INBO in 2022 en/of 2023 afhankelijk van het thema. MONEOS levert basisdata voor de evaluatierapporten over de effecten van de verruiming en het baggeronderhoud, evenals voor de evaluatie van de evolutie van het systeem (EMSE, 2021). + +Het onderzoeksteam Estuaria van het INBO staat, voor wat de Zeeschelde betreft, reeds geruime tijd in voor de monitoring van diverse onderdelen die vallen onder de thema's morfodynamiek, diversiteit soorten en diversiteit habitats. +Het onderzoeksteam Monitoring en Herstel Aquatische Fauna van het INBO staat in voor de vismonitoring. + +Het INBO levert data aan voor volgende thema's en indicatoren: + +Thema leefomgeving + +- Overzicht Estuariene Natuurontwikkelingsprojecten +- Ecotopen +- Vegetatiekaart +- Sedimentkenmerken +- Sedimentatie en erosie op punten en raaien +- Monitoring slik en schorrand + +Thema diversiteit soorten en thema ecologisch functioneren + +- Hogere planten +- Macrozoöbenthos +- Hyperbenthos +- Vissen +- Watervogels +- Broedvogels +- Zoogdieren + + +De aangeleverde data omvatten enkel gegevens van de Zeeschelde en getijgebonden zijrivieren. +Tenzij anders vermeld kunnen ze gebruikt worden tot op niveau 3 van de Evaluatiemethodiek wat overeenkomt met de saliniteitszones aangevuld met de getijdenzijrivieren (Durme, Netes, Dijle en Zenne (Tabel \@ref(tab:010-tabel-indeling-schelde-estuarium). +Deze indeling valt samen met de indeling in waterlichamen van de Kaderrichtlijn Water (KRW) (Figuur \@ref(fig:010-figuur-waterlichamen)). + +Bij elk hoofdstuk is er een verwijzing naar de datafiches waarin de metadata beschreven zijn. +Zie hiervoor op ([https://rshiny.scheldemonitor.org/datafiches/)](https://rshiny.scheldemonitor.org/datafiches/)). + +Deze INBO MONEOS data (hydromorfologie, macrozoöbenthos, vis en macrofyten) is ook de basis voor de ecologische toestandsbepaling van de Zeeschelde in het kader van de Kaderrichtlijn Water (KRW) en voor de vaststelling van de staat van instandhouding en de evaluatie van de instandhoudingsdoelstellingen van de relevante Natura 2000-gebieden. + +```{r 010-tabel-indeling-schelde-estuarium} + +tabel_indeling_schelde_estuarium <- read_excel(paste0(pad_tabellen, "010_Inleiding_tabellen.xlsx"), + sheet = "indeling-schelde-estuarium2", .name_repair = "minimal") %>% + mutate_all(~replace_na(., "")) %>% + select(-`Model-eenheid`) + +cap_indeling_schelde_estuarium <- "Ruimtelijke indeling van het Schelde-estuarium volgens de Evaluatie methodiek (EM), KRW en saliniteitszones." + +footnote_text <- "n.v.t. : Deel van Zeeschelde niet beschouwd in Evaluatiemethodiek. Zou onderdeel kunnen worden van Z7. Ook wordt het traject Tijarm Merelbeke-Zwijnaarde (getijde Zeeschelde) niet gerekend tot Zeeschelde I in de KRW indeling. Dit zou beter wel deel worden van deze zone." + +tabel_indeling_schelde_estuarium %>% + mutate_all(~replace_na(., "")) %>% + mutate_all(~cell_spec(., color = "black")) %>% + {.[nrow(.)-1,c(1,2,3)] <- map(.[nrow(.)-1,c(1,2,3)], + ~paste0(.x, footnote_marker_symbol(1))) + .} %>% + {.[nrow(.),c(1,2,3,5)] <- map(.[nrow(.),c(1,2,3,5)], + ~paste0(.x, footnote_marker_symbol(1))) + .} %>% + knitr::kable(# "latex", + escape = FALSE, + booktabs = T, + caption = cap_indeling_schelde_estuarium) %>% + kable_styling(latex_options = c("scale_down"), + font_size = 15) %>% + # column_spec(1:3,width = "1in") %>% + collapse_rows(columns = 1:6, latex_hline = "full", valign = "middle") %>% + footnote(symbol = footnote_text, + # %>% + # cell_spec(color = "black"), + escape = FALSE, + threeparttable = TRUE) + +``` + +
+ +\newpage + +```{=tex} +\begin{landscape} +``` +```{r 010-figuur-waterlichamen, fig.cap = "Overzicht van de deelzones (niveau 3) en de estuariene Sigmagebieden."} + +knitr::include_graphics(paste0(pad_figuren, "010_kaart_gebiedsindeling.png")) +``` + +```{=tex} +\end{landscape} +``` +\newpage + +## Referenties + +EMSE (2021). +Evaluatiemethodiek Schelde-estuarium: Update 2021. +Antea, Bureau Waardenburg, Deltares, UAntwerpen, UGent, INBO en NIOZ. + +Meire, P., and T. +Maris. +(2008). +MONEOS: Geïntegreerde monitoring van het Schelde-estuarium. diff --git a/moneos_2024/150_geintegreerd_rapport/020_Overzicht.Rmd b/moneos_2024/150_geintegreerd_rapport/020_Overzicht.Rmd new file mode 100644 index 0000000..ab1323c --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/020_Overzicht.Rmd @@ -0,0 +1,176 @@ +```{r 020-hoofdstuk, include=FALSE} + +hoofdstuk <- "020_overzicht" + +``` + +```{r 020-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.showtext = TRUE, dpi = 300) +knitr::opts_knit$set(eval.after = "fig.cap") + + +``` + +```{r 020-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad +library(lubridate, warn.conflicts = FALSE) +library(INBOtheme) + +``` + +```{r 020-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +#source("../pad.R") +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +# Overzicht Estuariene Natuurontwikkelingsprojecten + +**Gunther Van Ryckegem** + +## Overzicht + +In dit hoofdstuk wordt een overzicht gegeven van de natuurontwikkelingsprojecten die reeds uitgevoerd zijn in de Zeeschelde (Tabel \@ref(tab:020-tabel-natuurontwikkelingsprojecten)). + +Voor details over de uitvoering en de initiele evoluties in de ontpolderingen wordt verwezen naar Van de Neucker et al., (2007) en Speybroeck et al. (2011). +De evoluties in de GGG's[^overzicht-1] worden opgevolgd door Universiteit Antwerpen (Maris et al., 2023). +Voor de gebieden waar ecotopenkaarten beschikbaar zijn, werd de oppervlakte estauriene natuur afgeleid uit de laatst beschikbare habitatkaart. Dit is exclusief de dijken of hoge zones die geen schor zijn (zie definities hoofdstuk ecotopen). Deze hogere zones kunnen eventueel wel nog een veiligheidsfunctie vervullen. + +[^overzicht-1]: Gecontroleerd Gereduceerd Getijdengebied + +```{r 020-tabel-natuurontwikkelingsprojecten} + +tabel_natuurontwikkelingsprojecten <- read_excel(paste0(pad_tabellen, "020_Overzicht_tabellen.xlsx"), + sheet = "natuurontwikkelingsprojecten", .name_repair = "minimal") + +tabel_natuurontwikkelingsprojecten$Realisatie <- format(tabel_natuurontwikkelingsprojecten$Realisatie, format="%Y-%m") + +tabel_natuurontwikkelingsprojecten <- tabel_natuurontwikkelingsprojecten %>% + select('Deelzone niveau 3','Gebied','Getij', 'Oppervlakte estuarien (ha)', 'Realisatie', 'Sigmaplan Estuarien gebied') + +options(knitr.kable.NA = '') + +tabel_natuurontwikkelingsprojecten[c(9,12),3] <- sapply(tabel_natuurontwikkelingsprojecten[c(9,12),3], + function(x) paste0(x, footnote_marker_number(1))) + +tabel_natuurontwikkelingsprojecten[c(20),4] <- sapply(tabel_natuurontwikkelingsprojecten[c(20),4], + function(x) paste0(x, footnote_marker_number(2))) + +tabel_natuurontwikkelingsprojecten[c(20),4] <- sapply(tabel_natuurontwikkelingsprojecten[c(20),4], + function(x) paste0(x, footnote_marker_number(3))) + +tabel_natuurontwikkelingsprojecten[c(20),4] <- sapply(tabel_natuurontwikkelingsprojecten[c(20),4], + function(x) paste0(x, footnote_marker_number(4))) + +tabel_natuurontwikkelingsprojecten[c(20),4] <- sapply(tabel_natuurontwikkelingsprojecten[c(20),4], + function(x) paste0(x, footnote_marker_number(5))) + + +tabel_natuurontwikkelingsprojecten %>% + knitr::kable(caption = "Overzicht van de uitgevoerde estuariene natuurontwikkelingsprojecten langsheen de Zeeschelde en zijrivieren. De gebieden staan gerangschikt van grens BE-NL stroomopwaarts. Gebieden opgenomen in het MWeA - Meest Wenselijk Alternatief (Synthesenota, 2005) inclusief KBR. Habitatoppervlakte bepaald op basis van de laatste ecotopenkaarten (indien reeds ecotopenkaart beschikbaar is voor gebied)", + # "latex", + booktabs = T, + escape = F) %>% + kable_styling(latex_options = c("scale_down"), + font_size = 12) %>% + footnote(number = c("met koker verbonden (natuurlijk getijpatroon en dynamiek is beïnvloed)", + "in de loop van 2017 werd nog een grondstock opgeruimd en toegevoegd aan de ontpoldering (+ 2.2 ha)", + "in de zomer van 2019 werd een geul gegraven in het westelijk deel van de Wijmeers en ging estuariene oppervlakte tijdelijk verloren door de aanleg van een zandstock", + "ontpoldering afgesloten voor getij tussen maart 2020 en april 2021 voor de aanleg van een vloedschaar in oostelijk deel", + "december 2023 oostelijke bres gedicht en voorzien van buis met terugslagklep, tijdelijke compartimenteringsdijk aangelegd om gebied te verdrogen (knijten)."), + threeparttable = TRUE) + +``` + +
+ +```{r 020-figuur-oppervlakte-estuariene-natuurontwikkeling, fig.cap=cap_oppervlakte, out.width="80%"} + +tabel_natuurontwikkelingsprojecten <- read_excel(paste0(pad_tabellen, "020_Overzicht_tabellen.xlsx"), + sheet = "natuurontwikkelingsprojecten", .name_repair = "minimal") +tabel_natuurontwikkelingsprojecten$Realisatie <- format(tabel_natuurontwikkelingsprojecten$Realisatie, format="%Y-%m") +fig_natuurontwikkeling_opp <- tabel_natuurontwikkelingsprojecten %>% + select('Deelzone niveau 3','Gebied','Getij', 'Opp_graph', 'Realisatie', 'Sigmaplan Estuarien gebied') + + + +# fig_natuurontwikkeling_opp$Realisatie <- format(tabel_natuurontwikkelingsprojecten$Realisatie, format="%Y-%m") +# fig_natuurontwikkeling_opp$Realisatie <- as.Date(fig_natuurontwikkeling_opp$Realisatie) + + + +fig_natuurontwikkeling_opp$Sigmaplan <- as.factor(fig_natuurontwikkeling_opp$`Sigmaplan Estuarien gebied`) +fig_natuurontwikkeling_opp$Opp <- fig_natuurontwikkeling_opp$`Opp_graph` +fig_natuurontwikkeling_opp$zone <- fig_natuurontwikkeling_opp$`Deelzone niveau 3` + + + +fig_natuurontwikkeling_opp %>% + mutate(date = lubridate::ym(Realisatie)) %>% + # dplyr::filter(Sigmaplan == 1) %>% + dplyr::filter(zone != "Mesohalien") %>% + arrange(Realisatie) %>% + mutate(cs = cumsum(Opp)) %>% + ggplot(aes(date, cs)) + + geom_point(size = 2)+ + xlab("Datum realisatie project")+ + ylab("Cumulatieve oppervlakte (ha)")+ + theme(axis.text.x = element_text(angle = 0), + legend.position = "bottom", + legend.title = element_blank()) +ggsave(paste0(pad_figuren, "10_figuur_oppervlakte_estuariene_natuurontwikkeling.jpg")) + +rapport <- fig_natuurontwikkeling_opp %>% + # dplyr::filter(Sigmaplan == 1) %>% + dplyr::filter(zone != "Mesohalien") %>% + arrange(Realisatie) %>% + mutate(cs = cumsum(Opp)) + +cap_oppervlakte <- "Cumulatieve oppervlakte gerealiseerde estuariene natuurontwikkelingsgebieden, estuariene oppervlakte bepaald op basis van ecotopenkaarten indien beschikbaar - exclusief Hedwige (NL)" + +# knitr::include_graphics(paste0(pad_figuren, "10_figuur_oppervlakte_estuariene_natuurontwikkeling.jpg")) +``` + +In totaal werd er sinds 2003 ruim 660 ha aan estuariene natuur (slik+schor) gerealiseerd. Hiervan werd 600 ha gerealiseerd in het kader van het MWeA (inclusief KBR). De doelstelling is om 2000 ha estuarien habitat (slik (500 ha) en schor (1500 ha)) te realiseren. Er zijn al grote stappen gezet maar voor het behalen van de doelstellingen is het nodig om extra estuariene natuur te ontwikkelen. + +## Recente ontwikkelingen + +Sinds 2021 werden verschillende estuariene Sigmaprojecten opgeleverd. +In juni 2021 werd de ontpoldering/dijkverlegging te Fort Filip gerealiseerd. Het Groot Schoor te Hamme werd als ontpoldering gerealiseerd in juli 2021. Het GGG Grote Vijver Noord langsheen de Beneden Nete trad in werking in maart 2022. Enkele maanden later in oktober 2022 werd definitief Prosper- en Hedwigepolder gebrest. Zo kwam er ruim 450 ha estuariene natuur in één klap bij. In het laatste monitoringsjaar werd het Klein Broek langsheen de Durme uitgevoerd. Dit resulteerde in ongeveer 35 ha extra estuariene natuur. + + +## Referenties + +Maris T., Baeten S., Van den Neucker T., van den Broeck T., Oosterlee L. & Meire P. (2023). Onderzoek naar de gevolgen van het Sigmaplan, baggeractiviteiten en havenuitbreiding in de Zeeschelde op het milieu. Geïntegreerd eindverslag van het onderzoek verricht in 2022, deelrapport Intergetijdengebieden. ECOSPHERE 024-RES022 Universiteit Antwerpen, Antwerpen. + +Speybroeck J., Van Ryckegem G., Vandevoorde B. +& Van de Bergh E. +(2011). +Evaluatie van natuurontwikkelingsprojecten in het Schelde-estuarium. +2de rapportage van de projectmonitoring periode 2006-2009. +Rapport INBO.R.2011.21. +160pp. +Instituut voor Natuur-en Bosonderzoek, Brussel. + +Synthesenota (2005). +Geactualiseerd Sigmaplan voor veiligheid en natuurlijkheid in het bekken van de Zeeschelde. +Waterwegen en Zeekanaal NV. + +Van den Neucker T., Verbessem I., Van Braeckel A., Stevens M., Spanoghe G., Gyselings R., Soors J., De Regge N., De Belder W & Van den Bergh E. +(2007). +Evaluatie van natuurontwikkelingsprojecten in het Schelde-estuarium. +INBO.R.2007.54. diff --git a/moneos_2024/150_geintegreerd_rapport/030_ecotopen.Rmd b/moneos_2024/150_geintegreerd_rapport/030_ecotopen.Rmd new file mode 100644 index 0000000..ccf2f69 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/030_ecotopen.Rmd @@ -0,0 +1,590 @@ +--- +editor_options: + markdown: + wrap: sentence + chunk_output_type: inline +--- + +```{r 030-hoofdstuk, include=FALSE} + +hoofdstuk <- "030_ecotopen" + +``` + +```{r 030-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 030-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) ## workaround pad + +``` + +```{r 030-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 030-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 030-meta_data} + +meta_data <- + read_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +# Ecotopen + +**Fichenummer: S-DH-V-004 - Ecotopen** **Amber Mertens & Alexander Van Braeckel** + +## Inleiding + +Om de evolutie van de diversiteit van estuariene habitats in de Zeeschelde op te volgen vormt de ecotopenkaart, samen met haar basiskaarten de fysiotopenkaart en een geomorfologische kaart, het belangrijkste instrument. +Deze kaarten worden jaarlijks gemaakt voor de Beneden-Zeeschelde en 3-jaarlijks voor de Boven-Zeeschelde, Rupel en Durme. +In de ecotopenkaart worden habitatoppervlakten in natuurontwikkelingsprojecten (NOP's) zoals ontpolderingen, GGG's en dijkverleggingen mee opgenomen wanneer deze een open aansluiting hebben met de Zeeschelde. + +De essentie van een goed ecotopenstelsel is dat de juiste fysische grenzen bepaald zijn voor het potentieel voorkomen van specifieke levensgemeenschappen. +In het tot nu toe toegepaste Zeeschelde ecotopenstelsel 1.0 werden subtidale (water) en litorale (slik) ecotopen vooralsnog uitsluitend op basis van diepte en overspoelingsregime onderscheiden, zonder ecologische validatie. +Van Braeckel *et al* (2018; 2020) onderzochten ondertussen de relatie tussen abiotische omgevingskenmerken, zoals hoogte in het getijvenster en stroomsnelheid, en het voorkomen van ongewervelde bodemdiergemeenschappen. +Op basis van hun bevindingen werd het ecotopenstelsel Zeeschelde 2.0 voorgesteld. +Deze nieuwe indeling van de ecotopen weerspiegelt beter de leefgebieden van verschillende levensgemeenschappen. +Het wordt uitgebreid besproken in Van Braeckel et al. (2018) voor de sublitorale zone en in Van Braeckel et al. (2020) voor de litorale zone. + +In deze rapportage wordt de ecotopenkaart voor de Beneden-Zeeschelde vooralsnog volgens beide ecotopenstelsels voorgesteld. +De kaart van het ecotopenstelsel *Zeeschelde 1.0* bestaat van `r vroegste_jaar` tot `r laatste_jaar`, terwijl de kaart van het ecotopenstelsel *Zeeschelde 2.0* teruggerekend is tot en met 2019. +De ecotopenkaart Zeeschelde 2.0 werd voor het eerst gerapporteerd in het MONEOS rapport van 2022 (kaart van toestand 2020) (Mertens & Van Braeckel, 2022). + +In dit MONEOSrapport wordt de ecotopenkaart van `r laatste_jaar` van de Beneden-Zeeschelde besproken. +De kaarten van de Boven-Zeeschelde van `r laatste_jaar` zullen gerapporteerd worden in de volgende MONEOS rapportage, wegens vertraging in de aangeleverde data. + +## Methodologie {#ECTM} + +De ecotopenkaart wordt samengesteld uit enerzijds een geomorfologische kaart en anderzijds een fysiotopenkaart (Tabel \@ref(tab:030-tabel-klassen-E1)). +Beiden worden hier kort beschreven. +Voor een uitgebreidere bespreking van materiaal en methode wordt verwezen naar Van Braeckel & Elsen (2018). + +### Geomorfologische kaart + +De geomorfologische kaart onderscheidt volgende subtraattypes: + +- schor- en dijkvegetatie (met hogere vegetatie begroeid substraat) +- getijdeplas (water) +- hard natuurlijk substraat (veen- en kleibanken) +- hard antropogeen substraat (breuksteen, schanskorven) +- verhard (volledig verharde zones zonder enige ecologische waarde: geen algen- noch plantengroei) +- onbepaald (zacht onbegroeid substraat: slik en potentiële pionierzone) + +De kaart wordt gemaakt aan de hand van false colour beelden bij laagwater, die eens in de drie jaar gemaakt worden in opdracht van De Vlaamse Waterweg. +Voor de tussenliggende jaren wordt ook gebruik gemaakt van orthofotomozaïeken van Vlaanderen, die echter niet altijd bij laag water genomen zijn. +Voor de huidige Beneden-Zeeschelde kaart is gebruikt gemaakt van het meest recente false color beeld van 2022 en de orthofotomozaïek van `r laatste_jaar`. +De grenzen worden hierop ingetekend door personen met een uitgebreide terreinkennis, vertrekkende van de grenzen van het voorgaande jaar. +Figuur \@ref(fig:030-figuur-geomorfkaart) toont een voorbeeld van de geomorfologische kaart 2021 ter hoogte van schor Ouden Doel met links het false color beeld van 2019 bij laag water en rechts de orthofotomozaïek van 2021. + +
+ +```{r 030-figuur-geomorfkaart, fig.cap=figuur_geomorfkaart, out.width="100%"} + +figuur_geomorfkaart <- "Geomorfologische kaart 2021 voorbeeld ter hoogte van schor van Ouden Doel met als achtergrond false color beeld 2019 (links) en orthofotomozaïek Vlaanderen 2021 (rechts)." + +knitr::include_graphics(paste0(pad_figuren, "030_voorbeeld_geomorf_2021.png")) +``` + +
+ +### Fysiotopenkaart + +De fysiotopenkaart bakent abiotische eenheden af op basis van overspoelingsregime in het litoraal en op basis van diepte (ecotopenstelsel *Zeeschelde 1.0)* en maximale stroomsnelheid bij vloed (ecotopenstelsel *Zeeschelde 2.0)* in het sublitoraal*.* De basisgegevens zijn een digitaal hoogtemodel, getijdata en berekende stroomsnelheden. + +- Het digitaal hoogtemodel wordt samengesteld en aangeleverd door afdeling Maritieme Toegang. + Het is een gecombineerd grid van lidar hoogtemetingen en multibeam bathymetriemetingen. + +- Overspoelingsfrequenties en droogvalduren worden berekend door interpolatie van waterstandsmetingen per tijpost en over een periode van 4 jaar. + De tijdata van het Waterbouwkundig Laboratorium worden via HIC webservices geleverd. + Voor de Durme, Rupel en delen van de Boven-Zeeschelde wordt de Scaldis gemodelleerde tijdata gebruikt afkomstig van het Waterbouwkundig Laboratorium. + Om de litorale fysiotopen af te bakenen worden doorsnedes gemaakt van waterhoogtes met het digitaal hoogtemodel. + +- Maximale stroomsnelheden bij vloed worden berekend volgens het Scaldis 3D-model van het Waterbouwkundig Laboratorium. + +In de **sublitorale zone** worden in het ecotopenstelsel *Zeeschelde 1.0* 'diepte' fysiotopen onderscheiden onder het referentieniveau van het 30e percentiel van alle laagwaters over een periode van de laatste 4 jaar (LW30). +Dit komt overeen met het gemiddeld laagwater bij springtij. + +- Zeer diep subtidaal: \>10m onder LW30 + +- Diep subtidaal: 5-10m onder LW30 + +- Matig diep subtidaal: 2-5m onder LW30 + +- Ondiep subtidaal: 0-2m onder LW30 + +In het ecotopenstelsel *Zeeschelde 2.0* blijven dezelfde dieptegrenzen gehandhaafd. +Daarin worden telkens hoog- en laagdynamische habitats onderscheiden op basis van maximale stroomsnelheid bij vloed, berekend volgens het Scaldis 3D-model van het Waterbouwkundig Laboratorium. +Voor de jaren 2019 - 2021 is steeds hetzelfde Scaldis 2019 model gebruikt. +In 2022 werd een nieuwe model-run uitgevoerd met de bathymetrie van 2022 als input. + +De grenswaarden zijn gebaseerd op het voorkomen van ongewervelde bodemdiergemeenschappen (Van Braeckel et al, 2018) en verschillen per diepteklasse (Tabel \@ref(tab:030-tabel-dynamiek-ecotopen) ). +In het ondiep subtidaal is de maximale stroomsnelheid voor laagdynamisch habitat 1.01 m/s. +In het matig diep subtidaal is dit 0.92 m/s en in het diep subtidaal wordt 0.83 m/s gehanteerd. +Het zeer diep subtidaal (\> 10 m onder LW30) wordt volledig als hoogdynamisch geklasseerd. + +
+ +```{r 030-tabel-dynamiek-ecotopen, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- "Afbakening van hoogdynamisch habitat op basis van maximale stroomsnelheid bij vloed, per diepteklasse (waterdiepte onder het gemiddeld laagwater bij springtij volgens de 30\\% laagwaterfrequentie)." + +img_file <- paste0(pad_tabellen, "030_tabel_dynamiek_ecotopen.png") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +
+ +De **litorale zone** ligt tussen gemiddeld laagwater en gemiddeld hoogwater bij springtij (GLWS-GHWS). +De gebruikte referentie niveaus zijn de waterstand bij LW30 (het 30e percentiel van alle laagwaters) en bij HW85 (het 85e percentiel van alle hoogwaters). + +In het ecotopenstelsel *Zeeschelde 1.0* worden 3 litorale fysiotopen onderscheiden op basis van percentages droogvalduur (DD): + +- Laag slik: tussen LW 30% en DD 25% +- Middelhoog slik: tussen DD 25% en DD 75% +- Hoog slik: tussen DD 75% en HW 85% + +In het ecotopenstelsel *Zeeschelde 2.0* worden op basis van de verspreiding van bodemdiergemeenschappen andere droogvalduurgrenzen gehanteerd. +Deze zijn niet overal dezelfde (Tabel \@ref(tab:030-tabel-slik-ecotopen)). +In de saliniteitszones "Mesohalien" en "Zone met sterke saliniteitsgradiënt" (brakke zone) blijft de grens tussen laag en middelhoog slik op 25% DD, maar in de saliniteitszones "Oligohalien" en de zones "Zoet lange/korte verblijftijd" verschuift deze grens naar 35% DD. +De verspreiding van de saliniteitszones is te zien op de kaart in Hoofdstuk 1. +De overgang van middelhoog naar hoog slik wordt 60%DD in plaats van 75%DD in de volledige Zeeschelde. + +
+ +```{r 030-tabel-slik-ecotopen, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- "Grenzen voor slik fysiotopen Zeeschelde 1.0 en Zeeschelde 2.0 op basis van verschillende percentielen van laagwater (LW), hoogwater (HW), en droogvalduur (DD)." + +img_file <- paste0(pad_tabellen, "030_tabel_slik_ecotopen.png") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +
+ +De **supralitorale zone** is de zone boven het referentieniveau van de 85e percentiel van alle hoogwaters (HW85). +Stroomafwaarts Dendermonde komt dat overeen met het gemiddeld hoogwater bij doodtij. +De bovengrens van deze zone is ook de bovengrens van het estuarium en werd theoretisch vastgelegd als de hoogte die op basis van tijdata gemiddeld vier maal per jaar overspoelt. +Deze buitengrens wordt in principe niet steeds aangepast, tenzij de estuariene grens door ingrepen is verlegd. + +In het supralitoraal worden twee fysiotopen onderscheiden: + +- supralitoraal (s.s.) +- hoog supralitoraal + +Het supralitoraal (s.s.) is de zone waar het overspoelingsregime geschikt is voor de ontwikkeling van estuariene schorvegetaties. +Het hoog supralitoraal is de zone die hoger ligt dan de functionele schorren. +Deze zone overspoelt niet bij elk springtij maar enkel bij extreme hoogwaters zoals bij stormtij of hoge bovenafvoer. +Dat is onvoldoende om estuariene schorvegetaties te ontwikkelen. +Het hoog supralitoraal is dus de overgangszone tussen het schor en de dijkvegetatie alsook de opgehoogde delen midden in het schor. + +De grens tussen het hoog supralitoraal en het supralitoraal (s.s) of het schor verandert met het getijregime langs de longitudinale estuariene gradiënt. +Van de Belgisch-Nederlandse grens tot de Roggeman en Vlassenbroek werd deze vastgelegd op 6,4m TAW. +Stroomopwaarts Roggeman/Vlassenbroek en in Durme en Rupel wordt 6,2m TAW aangehouden en in de Ringvaart en Tijarm Zwijnaarde 5.75m TAW. +Voor de zoete zijrivieren (Dijle, Zenne, Nete) werd nog geen grens bepaald. +Deze hoogtes zijn vastgesteld op basis van expertise en worden voorlopig toegepast. +Momenteel wordt een ecologisch gevalideerde grens gedefinieerd op basis van voorkomende plantengemeenschappen. +Op basis van de resultaten van dit onderzoek zal in de toekomst gebruik gemaakt worden van een grens gebaseerd op de overspoelingsfrequenties, momenteel aangeduid met vraagtekens in Tabellen \@ref(tab:030-tabel-klassen-E1) en @ref(tab:030-tabel-klassen-E2)). + +### Ecotopenkaart + +De geomorfologische kaart en de fysiotopenkaart worden samengevoegd om de ecotopen te bekomen (Tabel \@ref(tab:030-tabel-klassen-E1) en Tabel @ref(tab:030-tabel-klassen-E2)). + +In de **sublitorale zone** zijn de ecotopen gelijk aan de fysiotopen. + +- In het ecotopenstelsel *Zeeschelde 1.0* worden het "Zeer diep subtidaal" en "Diep subtidaal" samengenomen in het ecotoop "Diep subtidaal". + +- In het ecotopenstelsel *Zeeschelde 2.0* wordt telkens onderscheid gemaakt in hoog- en laagdynamisch. + +In de **litorale zone** worden de slikfysiotopen gecombineerd met de geomorfologie tot zachte slikken, natuurlijk harde slikken en antropogeen harde slikken (Tabel \@ref(tab:030-tabel-klassen-E1)). + +In het *ecotopenstelsel 2.0* wordt ook slik met steile en vlakke helling onderscheiden met 25% als grenswaarde. +Deze worden niet als apart ecotoop gekarteerd, maar de oppervlaktes worden wel berekend. + +In de **supralitorale zone** worden volgende ecotopen onderscheiden: + +- Potentiële pionierzone: de onbegroeide zone op zacht substraat boven HW85. In deze zone zou, op basis van de hoogteligging in het getijvenster, schoruitbreiding met kenmerkende schorvegetatie mogelijk zijn. Aangezien deze zone onbegroeid blijft, zijn de hydrodynamische omstandigheden en/of de waterverzadiging er niet geschikt voor vegetatievestiging; +- Schor: zone boven HW85, maar lager dan de grens voor het hoog supralitoraal, begroeid met vegetatie kenmerkend voor estuariene of fluviatiele omstandigheden; +- Getijdeplas: grote waterplas binnen de schorzone; +- Supralitoraal (s.s.) hard natuurlijk: zone van klei of veen, vaak door erosie vrijgekomen, gelegen tussen HW85 en de ondergrens van het hoog supralitoraal; +- Supralitoraal (s.s.) hard antropogeen: zone tussen HW85 en de ondergrens van het hoog supralitoraal met antropogeen hard substraat, meestal breuksteen of schanskorven, waartussen beperkte vegetatieontwikkeling mogelijk is en dus ook met beperkt ecologisch potentieel; +- Hoog supralitoraal (hoog supralitorale vegetatie): Met hogere planten begroeide zone boven de functionele schorren; +- Antropogeen: Dit ecotoop beschrijft de volledig verharde zones zonder enige ecologische waarde (geen algen noch plantengroei). + +In het verleden werd de categorie hoog supralitoraal ingevuld op basis van gekende hogere zones in combinatie met de vegetatiekaart. +Vanaf 2019 tot en met `r laatste_jaar` is het hoog supralitoraal ingevuld op basis van hoogtewaarden in het DTM zoals hierboven bij het deel over fysiotopen vermeld (6,4/6,2/5,75 - 7m TAW). +Dit heeft in alle kaarten een verschuiving veroorzaakt van schor of supralitoraal hard antropogeen naar hoog supralitoraal van 2019 naar het daaropvolgend jaar. +De grote toename in hoog supralitoraal is dus het resultaat van een wijziging in de afbakeningsmethode en weerspiegelt geen natuurlijke evolutie. +Vanaf 2019 weerspiegelen de wijzigingen in het hoog supralitoraal opnieuw de natuurlijke evoluties. + +
+ +```{r 030-tabel-klassen-E1, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- "Ecotopenstelsel Zeeschelde 1.0." + +img_file <- paste0(pad_tabellen, "030_tabel_klassen_E1.png") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +
+ +```{r 030-tabel-klassen-E2, results="asis", fig.show='hide', out.width="100%"} + +caption_tab2 <- "Ecotopenstelsel Zeeschelde 2.0." + +img_file2 <- paste0(pad_tabellen, "030_tabel_klassen_E2.png") + +figtab(knitr::opts_current$get()$label, + img_file2, + caption_tab2) + +``` + +\newpage + +## Ecotopen in de Zeeschelde + +### Ecotopen van de Beneden-Zeeschelde in `r laatste_jaar` {#BEZ} + +#### Zeeschelde ecotopen 1.0 + +De ecotopenkaart methode 1.0 van de Beneden-Zeeschelde in `r laatste_jaar` is te zien in Figuur \@ref(fig:030-figuur-kaart-bez). + +Tabel \@ref(tab:030-tabel-oppervlakte-BEZ) toont de oppervlaktes per ecotoop in de Beneden-Zeeschelde voor elk jaar vanaf `r vroegste_jaar` in hectare (ha) en als percentage (%) van de totale oppervlakte. + +De korte en lange termijn evolutie van de ecotopen is beschreven in Tabel \@ref(tab:030-tabel-evolutie-BEZ) via de absolute verandering (ha) en de procentuele verandering (%) tussen de aangegeven jaren. +Voor de korte termijn evolutie wordt het huidige jaar vergeleken met het jaar ervoor, terwijl voor de lange termijn evolutie de vergelijking van het huidig jaar gemaakt wordt met het eerste rapportage jaar (`r vroegste_jaar`). + +Na een kleine toename van 0,7 hectare van het **sublitoraal** bij de vorige rapportage (Mertens & Van Braeckel, 2022), is dit ecotoop in `r laatste_jaar` terug in oppervlakte gedaald met 0,8 hectare (Tabel \@ref(tab:030-tabel-evolutie-BEZ)). +Het diep subtidaal is anderzijds gestegen met 9,3 hectare en dit vooral ten koste van het matig diep subtidaal. +Het ondiep subtidaal bleef vrij stabiel (Tabel \@ref(tab:030-tabel-oppervlakte-BEZ)). + +In het **litoraal** is de totale oppervlakte aan zacht substraat met 6 hectare gestegen sinds `r laatste_jaar - 1`. +Deze stijging vond vooral plaats in het laag slik zacht substraat. +Het hoog slik zacht substraat is daarentegen licht gedaald in oppervlakte (3,4 hectare). +Het natuurlijk hard substraat in het litoraal is licht gedaald in `r laatste_jaar` ten opzichte van `r laatste_jaar - 1`. + +De nieuwe slikken net ten noorden van Fort Filip bestonden in `r laatste_jaar - 1` vooral uit hard substraat, maar in `r laatste_jaar` is hier een zachte sliblaag opgekomen (Figuur \@ref(fig:030-figuur-kaart-ff)). +Net achter de strekdam bevindt zich wel nog een verharde zone. + +In het **supralitoraal** is de potentiële pionierzone opnieuw afgenomen en heeft met een oppervlakte van 17,2 hectare de laagste waarde bereikt sinds 2010. +Het schor is verder blijven toenemen, in `r laatste_jaar` met 14,8 hectare ten opzichte van `r laatste_jaar - 1`. +Beide verschijnselen worden deels verklaard doordat op de potentiële pionierzone op verschillende plaatsen schorvorming is ontstaan of uitgebreid in 2022. +Voorbeelden zijn in de Lillo ontpoldering (Figuur \@ref(fig:030-figuur-kaart-lillo)), de heraangelegde zone stroomopwaarts van Fort Filip (Figuur \@ref(fig:030-figuur-kaart-ff) in de hoek rechts onderaan) en eveneens in de Fasseit ontpoldering (Figuur \@ref(fig:030-figuur-kaart-fasseit)). +Ook in de Burchtse Weel GGG zette de trend van verschorring zich voort (zie ook Mertens & Van Braeckel, 2022). +Het hoog supralitoraal is licht gedaald met 3,6 hectare. + +Een voorbeeld van lokale schorvermindering is te zien in Figuur \@ref(fig:030-figuur-kaart-cauwelaertsluis) net voorbij de Van Cauwelaertsluis waar er schor verwijderd is door menselijke ingrepen. + +Het antropogeen hard substraat (breuksteen) is over alle ecotopen afgenomen met 10,8 hectare. + +De totale oppervlakte estuarien gebied in de Beneden-Zeeschelde is met 1,9 hectare gedaald. +Dit na een stijging van 5,3 hectare in `r laatste_jaar - 1` door de heraanleg rond Fort Filip. +Deze 'verloren' oppervlakte betreft voor een deel de nieuwe hoge breuksteen zone rond Fort Filip, waarbij de zone die hoger dan de estuariene bovengrens ligt uit de kaart is verwijderd. +Verder zijn er ook enkele zones van hoog supralitoraal die inmiddels duidelijk buiten de estuariene grens vallen uit de kaart verwijderd. + +
+ +\newpage + +```{r 030-figuur-kaart-bez, fig.cap=figuur_ecotopenkaart_bez, out.width="100%"} +# kaart wordt gemaakt in sjabloon_bez.mxd met schaal 1 : 97 000 + +figuur_ecotopenkaart_bez <- str_c("Ecotopenkaart ", laatste_jaar, " Beneden-Zeeschelde 1.0") + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Ecotoop_BEZ_", laatste_jaar, "_10.png")) +``` + +\newpage + +
+ +```{=tex} +\begin{landscape} +``` +```{r 030-tabel-oppervlakte-BEZ, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Oppervlaktes en oppervlaktepercentages van ecotopen Zeeschelde 1.0 in de Beneden-Zeeschelde in de laatste 6 jaar voor ", laatste_jaar, ", inclusief het startjaar ", vroegste_jaar, ".") + +img_file <- paste0(pad_tabellen, "030_tabel_Oppervlakte_BEZ_", vroegste_jaar, "_", laatste_jaar, "_10.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +```{=tex} +\end{landscape} +``` +\newpage + +```{r 030-tabel-evolutie-BEZ, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Absolute verandering en procentuele verandering van de lange termijn evolutie (tussen ", vroegste_jaar, " en ", laatste_jaar, ") en de korte termijn evolutie (tussen ", laatste_jaar - 1, " en ", laatste_jaar, ") in de Beneden-Zeeschelde 1.0.") + +img_file <- paste0(pad_tabellen, "030_tabel_evolutie_BEZ_", vroegste_jaar, "_", laatste_jaar, "_10.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +
+ +(ref:figff) Ecotopenkaart Zeeschelde 1.0 2022 rond Fort Filip (centraal onder), overzichtskaart met rode kader als indicator detailkaart (linksboven), ecotopenkaart 2021 1.0 (rechtsboven). Zie Figuur \@ref(fig:030-figuur-kaart-bez) voor legende. + +```{r 030-figuur-kaart-ff, fig.cap='(ref:figff)', out.width="100%"} + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_FortFilip_2022.png")) + +``` + +
+ +(ref:figlillo) Ecotopenkaart Zeeschelde 1.0 2022 Lillo (centraal onder), overzichtskaart met rode kader als indicator detailkaart (linksboven), ecotopenkaart 2021 1.0 Lillo (rechtsboven). Zie Figuur \@ref(fig:030-figuur-kaart-bez) voor legende. + +```{r 030-figuur-kaart-lillo, fig.cap='(ref:figlillo)', out.width="100%"} + +# figuur_kaart_lillo <- "Ecotopenkaart Zeeschelde 1.0 2022 Lillo (centraal onder), overzichtskaart met rode kader als indicator detailkaart (linksboven), ecotopenkaart 2021 1.0 Lillo (rechtsboven). Zie Figuur \\@ref(fig:030-figuur-kaart-bez) voor legende." + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Lillo_2022.png")) + +``` + +
+ +(ref:figfasseit) Ecotopenkaart Zeeschelde 1.0 2022 Fasseit ontpoldering (centraal onder), overzichtskaart met rode kader als indicator detailkaart (linksboven), ecotopenkaart 2021 1.0 (rechtsboven). Zie Figuur \@ref(fig:030-figuur-kaart-bez) voor legende. + +```{r 030-figuur-kaart-fasseit, fig.cap='(ref:figfasseit)', out.width="100%"} + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Fasseit_2022.png")) + +``` + +
+ +(ref:figcauw) Ecotopenkaart Zeeschelde 1.0 2022 voorbij Van Cauwelaertsluis (centraal onder), overzichtskaart met rode kader als indicator detailkaart (linksboven), ecotopenkaart 2021 1.0 (rechtsboven). Zie Figuur \@ref(fig:030-figuur-kaart-bez) voor legende. + +```{r 030-figuur-kaart-cauwelaertsluis, fig.cap='(ref:figcauw)', out.width="100%"} + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Cauwelaertsluis_2022.png")) + +``` + +
+ +Om de veranderingen beschreven in Tabel \@ref(tab:030-tabel-oppervlakte-BEZ) en Tabel \@ref(tab:030-tabel-evolutie-BEZ) goed te begrijpen is het relevant om naast het bespreken van het geheel estuarien gebied met laterale uitbreidingen ook naar de 'enge' planimetrie van het estuarium te kijken (zie bijvoorbeeld Van Braeckel & Elsen, 2020), met name het estuariene deel van de Beneden-Zeeschelde zonder de laterale uitbreidingen van de natuurontwikkelingsprojecten. +Deze aanpak beschrijft beter de evolutie van de ecotopen in de Beneden-Zeeschelde onder rechtstreekse invloed van veranderingen in de vaargeul en van het hydraulisch regime. +De gebieden die dus niet in rekening worden gebracht onder de 'enge' planimetrie van de Beneden-Zeeschelde zijn nieuwe Sigmagebieden of natuurontwikkelingsprojecten in KRWzone IV en III tot aan de Rupelmonding. +De oppervlaktes van de ecotopen binnen de 'enge' planimetrie zijn weergegeven in Tabel \@ref(tab:030-tabel-eng-BEZ) en het verschil in evolutie binnen het gehele estuarien gebied en enkel de 'enge' planimetrie is te zien in Figuur \@ref(fig:030-figuur-evolutie-bez). + +Zowel op korte als lange termijn volgen de evoluties in het laag en middelhoog slik dezelfde tendensen in de 'enge' planimetrie als in de volledige planimetrie. +Het laag slik zacht substraat kent vooral schommelingen van stijgende en dalende oppervlakte in de enge planimetrie en is meest recentelijk gestegen. +Het middelhoog slik zacht substraat is licht gestegen. +De zeer geleidelijke afname van de oppervlakte hoog slik zacht substraat zoals die zich voordoet in de volledige planimetrie is pas sinds `r laatste_jaar - 1` ook zichtbaar in de enge planimetrie, daarvoor bleef deze oppervlakte eerder stabiel. + +De oppervlakte potentiële pionierzone is zowel in het volledige gebied als binnen de 'enge' planimetrie gedaald ten opzichte van `r laatste_jaar -1`, maar het grootste deel van de daling heeft plaatsgevonden binnen de laterale uitbreidingen. + +Het grootste verschil in de vergelijking tussen de enge en volledige planimetrie vinden we in het schor waar de verdubbeling in oppervlakte sinds 2010 nagenoeg volledig is toe te schrijven aan toename in de laterale uitbreidingen. +Op korte termijn vinden we hier een toename in zowel de enge als de volledige planimetrie. + +De afname van het hoog supralitoraal vond voornamelijk plaats binnen de 'enge' planimetrie. + +De afname van antropogeen hard substraat gebeurde eveneens hoofdzakelijk binnen de enge planimetrie. + +
+ +```{r 030-tabel-eng-BEZ, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Ecotooparealen Zeeschelde 1.0 in de ‘enge planimetrie’ van de Beneden‐Zeeschelde zonder de NOP’s of ontpolderingen, dijkverleggingen en aantakkingen tussen ", vroegste_jaar, " en ", laatste_jaar, ".") + +img_file <- paste0(pad_tabellen, "030_tabel_Oppervlakte_EngePlanimetrie_BEZ_", laatste_jaar, "_10.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +```{r 030-figuur-evolutie-bez, fig.cap=figuur_evolutie_bez, out.width="100%"} + +figuur_evolutie_bez <- "Temporele evolutie van de oppervlakte van de ecologisch belangrijke ecotopen Zeeschelde 1.0 in de Beneden-Zeeschelde met en zonder NOP's (natuurontwikkelingsprojecten zoals ontpolderingen, GGG’s en dijkverleggingen)" + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Evolution_NOPs_BEZ_", laatste_jaar, "_10.png")) + +``` + +
+ +#### Zeeschelde ecotopen 2.0 + +De ecotopenkaart methode 2.0 van de Beneden-Zeeschelde in `r laatste_jaar` is te zien in Figuur \@ref(fig:030-figuur-kaart-bez-20). + +Tabel \@ref(tab:030-tabel-oppervlakte-BEZ-20) toont de oppervlaktes per ecotoop in de Beneden-Zeeschelde voor elk jaar vanaf 2019 in hectare (ha) en als percentage (%) van de totale oppervlakte. + +De korte en lange termijn evolutie van de ecotopen is opnieuw beschreven in Tabel \@ref(tab:030-tabel-evolutie-BEZ-20) via de absolute verandering (ha) en de procentuele verandering (%) tussen de aangegeven jaren. +Voor de korte termijn evolutie wordt het huidige jaar vergeleken met het jaar ervoor, terwijl voor de lange termijn evolutie de vergelijking van het huidig jaar gemaakt wordt met het eerste rapportage jaar (2019 voor Zeeschelde 2.0). + +In het **sublitoraal** is een onderverdeling gemaakt tussen hoog- en laagdynamisch subtidaal, op basis van de maximale stroomsnelheid bij vloed. +De tabel toont dat de diepere delen (diep en matig diep subtidaal) grotendeels hoogdynamisch zijn. +In het ondiep subtidaal is het aandeel laagdynamisch iets groter dan het aandeel hoogdynamisch. +Tegenover `r laatste_jaar - 1` heeft er in alle diepteklassen een verschuiving plaatsgevonden van hoogdynamisch naar laagdynamisch. + +Bij de berekening van het **litoraal** zijn aangepaste grenzen gebruikt ten opzichte van ecotopen 1.0, afhankelijk van de saliniteitszone. +Hierdoor is het aandeel middelhoog slik kleiner en het aandeel hoog slik groter dan bij het ecotopenstelsel 1.0. +Verder volgen de evoluties van het litoraal in ecotopenstelsel 2.0 eenzelfde patroon als bij 1.0, met een stijging in het laag slik zacht substraat en een kleinere daling in het hoog slik zacht substraat. +Beiden patronen zijn iets sterker in het ecotopenstelsel 2.0. + +In de aangepaste methode wordt ook de helling van de slikken in rekening gebracht. +De oppervlaktes per slikecotoop met een steile (\>25%) en zwakke (\<=25%) helling zijn beschreven in Tabel (\@ref(tab:030-tabel-oppervlakte-helling-BEZ-20)). +Zowel het litoraal zacht substraat als het litoraal hard natuurlijk hebben vrijwel geen steile hellingen. +In het litoraal antropogeen hard substraat is wel een redelijk aandeel steil, namelijk ongeveer 39% van het totaal oppervlak litoraal hard antropogeen, wat iets meer is dan in `r laatste_jaar-1` toen het ongeveer 33% was. +De overige 61% litoraal hard antropogeen heeft dus nog steeds een hellingsgraad van kleiner dan of gelijk aan 25%. + +
+ +\newpage + +```{r 030-figuur-kaart-bez-20, fig.cap=figuur_ecotopenkaart_bez_20, out.width="100%"} +# kaart wordt gemaakt in sjabloon_bez.mxd met schaal 1 : 97 000 + +figuur_ecotopenkaart_bez_20 <- str_c("Ecotopenkaart ", laatste_jaar, " Beneden-Zeeschelde 2.0") + +knitr::include_graphics(paste0(pad_figuren, "030_figuur_Ecotoop_BEZ_", laatste_jaar, "_20.png")) +``` + +\newpage + +```{r 030-tabel-oppervlakte-BEZ-20, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Oppervlaktes en oppervlaktepercentages van ecotopen in de Beneden-Zeeschelde in ", laatste_jaar, " volgens de Zeeschelde ecotopen 2.0.") + +img_file <- paste0(pad_tabellen, "030_tabel_Oppervlakte_BEZ_2019_", laatste_jaar, "_20.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +```{r 030-tabel-evolutie-BEZ-20, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Absolute verandering en procentuele verandering van de lange termijn evolutie (tussen 2019 en ", laatste_jaar, ") en de korte termijn evolutie (tussen ", laatste_jaar - 1, " en ", laatste_jaar, ") in de Beneden-Zeeschelde 2.0.") + +img_file <- paste0(pad_tabellen, "030_tabel_evolutie_BEZ_2019_", laatste_jaar, "_20.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +```{r 030-tabel-oppervlakte-helling-BEZ-20, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- str_c("Oppervlaktes en percentages van steile en vlakke slikken in de Beneden-Zeeschelde in ", laatste_jaar, ", volgens de Zeeschelde ecotopen 2.0.") + +img_file <- paste0(pad_tabellen, "030_tabel_Oppervlakte_HellingSlik_BEZ_", laatste_jaar, "_20.PNG") + +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + +## Referenties + + + +Mertens, A. +& Van Braeckel A. +(2022). +Ecotopen *in* Van Ryckegem, G., Vanoverbeke, J., Van de Meutter, F., Vandevoorde, B., Mertens, W., Mertens, A., Van Braeckel, A., Smeekens, V., Thibau, K., Bezdenjesnji, O., Buerms, D., De Regge, N., Hessel, K., Lefranc, C., Soors, J., Van Lierop, F. +(2022). +MONEOS ‐ Geïntegreerd datarapport INBO: Toestand Zeeschelde 2021. +Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur‐ en Bosonderzoek 2022 (Rapporten van het Instituut voor Natuur‐ en Bosonderzoek 2022 (26)). +Instituut voor Natuur‐ en Bosonderzoek, Brussel. +DOI: [https://doi.org/10.21436/inbor.85928183](https://doi.org/10.21436/inbor.52484672){.uri} + +Van Braeckel, A., Vanoverbeke, J., Van de Meutter, F., De Neve, L., Soors, J., Speybroeck, J., Van Ryckegem, G., & Van den Bergh, E. +(2020). +Habitatmapping Zeeschelde Slik: habitatkarakteristieken van bodemdieren en garnaalachtigen & slikecotopen Zeeschelde 2.0. +(Rapporten van het Instituut voor Natuur- en Bosonderzoek; Nr. 31). +Instituut voor Natuur- en Bosonderzoek. + + +Van Braeckel A. +& Elsen R. +(2018). +Ecotopen *in* Van Ryckegem, G., Van Braeckel, A., Elsen, R., Speybroeck, J., Vandevoorde, B., Mertens, W., Breine, J., Spanoghe, G., Bezdenjesnji, O., Buerms, D., De Beukelaer, J., De Regge, N., Hessel, K., Lefranc, C., Soors, J., Terrie, T., Van Lierop, F., & Van den Bergh, E. +(2018). +MONEOS -- Geïntegreerd datarapport INBO: Toestand Zeeschelde 2017: Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +(Rapporten van het Instituut voor Natuur en Bosonderzoek; Nr. 74). +Instituut voor Natuur- en Bosonderzoek. + + +Van Braeckel, A., Speybroeck, J., Vanoverbeke, J., Van Ryckegem, G., & Van den Bergh, E. +(2018). +Habitatmapping Zeeschelde subtidaal: Relatie tussen bodemdieren en hydro- en morfodynamiek. +(Rapporten van het Instituut voor Natuur- en Bosonderzoek; Nr. 91). +Instituut voor Natuur- en Bosonderzoek. + + +
diff --git a/moneos_2024/150_geintegreerd_rapport/040_vegetatiekaart.Rmd b/moneos_2024/150_geintegreerd_rapport/040_vegetatiekaart.Rmd new file mode 100644 index 0000000..6d24df7 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/040_vegetatiekaart.Rmd @@ -0,0 +1,52 @@ +# Vegetatiekaart + +Fichenummer: S-DH-V-003 -- Vegetatiekartering + +Bart Vandevoorde, Frederik Van Lierop, Vincent Smeekens & Koen Thibau + +## Inleiding + +Met behulp van schorvegetatiekaarten kan de evolutie van de habitatdiversiteit binnen het schorecotoop nader geëvalueerd worden. De basiseenheid van deze vegetatiekaart, is een homogene vegetatie-eenheid waaraan volgens een hiërarchisch systeem een habitat, formatie en vegetatietype zijn toegekend. + +In Tabel \@ref(tab:Tabel1) is een overzicht gegeven van de vegetatiekaarten die van de schorren zijn gemaakt de voorbije decennia. De gebruikte methode, ruimtelijke afbakening en detailgraad zijn niet voor alle kaarten gelijk. Zo zijn de kaarten van 1992, 1996, 2003, 2013 en 2019 gemaakt aan de hand van de fotogeleide veldmethode. Remote sensing-technieken zijn gebruikt in 2007 om het hele Zeeschelde-estuarium te karteren (Bertels *et al*., 2008) en in 2011 voor de vegetatiekartering van de Beneden-Zeeschelde (Eurosense, 2012). Voor een overzicht van de historische kaarten en een toelichting bij de gebruikte codes verwijzen we naar Vandevoorde (2011). + +Table: (#tab:Tabel1) Overzicht van de jaren waarvan vegetatiekaarten beschikbaar zijn. De verschillende deelgebieden zijn gekarteerd volgens de klassieke karteringsmethode (A) of door middel van remote sensing-technieken (B). + + ------------------------------------------------------------------------------------------------- + **Deelgebied** **1992** **1996** **2003** **2007** **2011** **2013** **2019** + -------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- + Beneden-Zeeschelde A A A B B A A + + Boven-Zeeschelde A A A B A A + + Durme A A B A A + + Rupel A B A A + + Zenne A B A + + Dijle A B A + + Kleine Nete A B A + + Grote Nete A B A + ------------------------------------------------------------------------------------------------- + +Momenteel is de vegetatiekaart van 2019 in opmaak. Deze kaart zal de schorren van de volledige Zeeschelde, Durme en Rupel omvatten, inclusief de getijdenafhankelijke delen van de Ringvaart en Tijarm in het meest stroomopwaartse deel van het estuarium (regio Gent). Ook de ontpolderingen gerealiseerd in 2019 of ervoor maken deel uit van deze kaart (bijv. Wijmeers, Fasseit, Burchtse Weel, Potpolder Lillo). Naast deze ontpolderingen zijn ook de verschillende functionele gecontroleerd gereduceerd getijdengebieden (GGG's) in deze vegetatiekaart opgenomen (Bergenmeersen, Lippenbroek, Polders van Kruibeke). Van de verschillende GGG's is de vegetatiekaart overgenomen uit de OMES-rapportage (Maris *et al*., 2020). + +In de zomer van 2019 zijn falsecolour infrared-beelden (FCIR) gemaakt van het volledige projectgebied, inclusief de nieuw aangelegde gebieden (GGG's en ontpolderingen). Met behulp van deze beelden is in 2020, 2021, 2022 en 2023 veldwerk verricht om grondwaarheidsgegevens te verzamelen. + +In Van Ryckegem *et al*. (2022) is een voorlopige versie van de vegetatiekaart van 2019 van de Zeeschelde, Durme en Rupel gepubliceerd. In deze rapportage wordt geen nieuwe versie van deze vegetatiekaart ter beschikking gesteld. De definitieve versie van de kaart zal gepubliceerd worden in het datarapport van 2025 of in een aparte rapportage. + +## Referenties + +Bertels L., Houthuys R., Deronde B., Knaeps E., Vandevoorde B. & Van den Bergh E. (2008). Automatische kartering voor opvolging areaal slikken en schorren. Rapport VITO 2008/TAP/R/076, 137 p. + +Eurosense (2012). Hyperspectraalmetingen en kartering van slikken en schorren van de Zeeschelde afwaarts Wintam in het kader van de geïntegreerde monitoring van het Schelde-estuarium (MONEOS-programma). Eindrapport 01/10/2012. In opdracht van W&Z Afdeling Zeeschelde. + +Maris T., Baeten S., Van den Neucker T., van den Broeck T. & Meire P. (2020). Onderzoek naar de gevolgen van het Sigmaplan, baggeractiviteiten en havenuitbreiding in de Zeeschelde op het milieu. Geïntegreerd eindverslag van het onderzoek verricht in 2019, deelrapport Intergetijdengebieden. ECOBE 020-R266 Universiteit Antwerpen, Antwerpen. + +Vandevoorde B. (2011). Systeemmonitoring vegetatiekartering. In Van Ryckegem G., (red.) (2011). MONEOS --Geïntegreerd datarapport Toestand Zeeschelde tot 2009. Datarapportage ten behoeve van de VNSC voor het vastleggen van de uitgangssituatie anno 2009. Rapporten van het Instituut voor Natuur- en Bosonderzoek INBO.R.2011.8. Instituut voor Natuur‐ en Bosonderzoek, Brussel. + +Van Ryckegem G., Vanoverbeke J., Van de Meutter F., Vandevoorde B., Mertens W., Mertens A., Van Braeckel A., Smeekens V., Thibau K., Bezdenjesnji O., Buerms D., De Regge N., Hessel K., Lefranc C., Soors J. & Van Lierop F. (2022). MONEOS ‐ Geïntegreerd datarapport INBO: Toestand Zeeschelde 2021. Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. Rapporten van het Instituut voor Natuur‐ en Bosonderzoek 2022 (26). Instituut voor Natuur‐ en Bosonderzoek, Brussel. + diff --git a/moneos_2024/150_geintegreerd_rapport/050_hogere_planten.Rmd b/moneos_2024/150_geintegreerd_rapport/050_hogere_planten.Rmd new file mode 100644 index 0000000..0cebd50 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/050_hogere_planten.Rmd @@ -0,0 +1,199 @@ + +```{r 050-hoofdstuk, include=FALSE} + +hoofdstuk <- "050_hogere_planten" + +``` + + +```{r 050-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + + +```{r 050-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + + +```{r 050-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + + +```{r 050-table_from_figure-function} +figtab_landscape <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\newpage\n\\begin{landscape}\n\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}\n\\end{landscape}\n\\newpage\n', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } +``` + +# Hogere planten + +Fichenummers: S-DS-V-001 -- Hogere planten; P-DS-V-001a - Hogere planten) + +**Bart Vandevoorde, Frederik Van Lierop, Vincent Smeekens & Wim Mertens** + +## Inleiding + +Op de schorren van het Zeeschelde-estuarium wordt de diversiteit aan hogere planten opgevolgd door middel van vegetatieopnames. Deze worden gemaakt van de bestaande permanente kwadraten (PQ) en aangevuld met losse vegetatieopnames welke stratified random worden gelokaliseerd in functie van de huidige vegetatietypes of doelvegetatietypes (Leyssen *et al*., 2006; Meire & Maris, 2008). + +In Tabel \@ref(tab:050-tabel-vegetatieopnames) is per jaar een overzicht gegeven in welke gebieden vegetatieopnames zijn gemaakt, al dan niet van permanente kwadraten. + + +```{r 050-tabel-vegetatieopnames, results="asis", fig.show='hide', out.width="100%"} + +caption_tab <- + "Per gebied en per jaar is een overzicht gegeven van de beschibare vegetatieopnames. Met een letter is aangegeven of het een vegetatieopname is van een permanent kwadraat (PQ) of een losse locatie: A: PQ INBO, A*: PQ INBO Zomerklokje, A**: PQ INBO LSVI 91E0\\_sf, B: losse vegetatieopname INBO, C: PQ ANB en D: PQ UA." +img_file <- paste0(pad_figuren, "media/image1.jpeg") +figtab_landscape(knitr::opts_current$get()$label, + img_file, + caption_tab) + +``` + + +## Materiaal en methode + +### Vegetatieopnames van permanente kwadraten + +Vegetatieopnames worden gemaakt volgens de principes van de Frans-Zwitserse school (Schaminée *et al*., 1995). Dit houdt in dat de vegetatie in een proefvlak homogeen moet zijn en dat ze een representatieve weergave moet zijn van de aanwezige vegetatie. Het proefvlak moet met andere woorden groot genoeg zijn om de floristische samenstelling van de vegetatie weer te geven (i.e. minimumareaal). + +Bij het installeren van de permanente kwadraten is rekening gehouden met deze twee voorwaarden (homogeniteit, minimumareaal) in functie van het toen aanwezige vegetatietype. Maar na verloop van tijd kan het gebeuren dat de vegetatie in het permanent kwadraat niet langer homogeen is. Een PQ, oorspronkelijk gelegd in bijvoorbeeld een homogene ruigte, kan ingegroeid geraken door een struweel, waardoor het voor een deel uit ruigte en voor een ander deel uit struweel bestaat. Dit is eigen aan permanente kwadraten en hoeft geen probleem te zijn. De vegetatieopnames die gemaakt zijn van permanente kwadraten, kunnen dus uit heterogene vegetaties bestaan. Als vegetatieopnames worden gemaakt van niet-permanente proefvlakken is steeds voldaan aan het principe van homogeniteit. + +Bovendien wordt volgens de principes van de Frans-Zwitserse school de vegetatie in zijn geheel beschouwd. Dit wil zeggen dat bij het maken van een vegetatieopname alle plantensoorten, mossen, lichenen en (macro)algen verdeeld over de verschillende vegetatielagen (boomlaag, struiklaag, kruidlaag, moslaag[^1], algenlaag) in rekening worden gebracht. De planten moeten wel rechtstreeks in contact staan met de bodem; epifyten worden bijvoorbeeld niet meegeteld. + +In functie van het (initiële) vegetatietype varieert de oppervlakte van de permanente kwadraten. De grootte van een permanent kwadraat is zodanig gekozen dat het een representatieve weergave is van de aanwezige vegetatie (i.e. minimumareaal). In bossen en struwelen zijn bijvoorbeeld grotere proefvlakken afgebakend in vergelijking met andere vegetatietypes als biezen- en pioniersvegetaties. Bij het maken van een vegetatieopname van het permanent kwadraat wordt steeds de initiële grootte van het proefvlak gerespecteerd, onafhankelijk van de vegetatie die er zich heeft ontwikkeld. Bij vergelijking van vegetatieopnames met verschillende grootte wordt hier best rekening mee gehouden door te standaardiseren per oppervlakte-eenheid. + +Kaderend binnen de systeemmonitoring van het Schelde-estuarium werd tot 2013 3-jaarlijks een vegetatieopname gemaakt van de permanente kwadraten. Deze meetfrequentie is evenwel gewijzigd naar 6-jaarlijks. De laatste opnamesessie dateert van 2019. De vegetatieopnames die toen gemaakt zijn van de permanente kwadraten, zijn gepubliceerd in Van Ryckegem *et al*. (2020). + +Tot 2013 werden de natuurontwikkelingsgebieden (Paardeschor, Ketenisseschor, Paddebeek en Heusden) jaarlijks bemeten maar vanaf 2013 is deze meetfrequentie aangepast naar 3-jaarlijks. De proefvlakken of permanente kwadraten, waarvan vegetatieopnames worden gemaakt, zijn gelegen langs transecten die loodrecht op de rivieras gesitueerd zijn. In 2022 zijn de laatste keer vegetatieopnames gemaakt van deze PQ's welke gepubliceerd zijn worden in Van Ryckegem *et al*. (2020). + +De laatste jaren zijn nieuwe permanente kwadraten geïnstalleerd ter opvolging en evaluatie van recent aangelegde natuurontwikkelingsgebieden zoals de Potpolder Lillo en Fort St.-Filips. In 2022 en 2023 zijn vegetatieopnames gemaakt van de permanente kwadraten van Fort St.-Filips die in dit rapport worden gepubliceerd worden. Ook de vegetatieopnames van de Potpolder Lillo gemaakt in 2013, 2016, 2017, 2018, 2019 en 2021 worden in dit rapport gepubliceerd. + +Een 30-tal PQ's van de systeemmonitoring worden ook aangewend ter evaluatie van het habitattype 91E0_sf Zachthoutooibos (wilgenvloedbos, *Salicetum albae*). Om dit habitattype betrouwbaar te evalueren zijn echter 77 PQ's nodig. Negen hiervan liggen langs de Maas en worden verder buiten beschouwing gelaten, de resterende 38 PQ's zijn afgebakend langs het Schelde-estuarium (Westra *et al*., 2014). De plots worden bemonsterd met een retourperiode van 6 jaar. Jaarlijks wordt een vegetatieopname gemaakt van een zesde van de plots. De eerste opnamereeks is afgewerkt. De vegetatieopnames van de 30 PQ's van de systeemmonitoring zijn reeds gepubliceerd in Van Ryckegem *et al*. (2020). De resterende 38 worden in dit rapport gepubliceerd. + +### Databankstructuur 'VegetatieopnamesPQ_Zeeschelde_2023.accdb' {#DBstruct} + +De vegetatieopnames zijn opgeslagen in de INBO-databank INBOVEG onder de survey Schelde-estuarium; de opnames ter evaluatie van het habitattype 91E0_sf Zachthoutooibos (wilgenvloedbos, *Salicetum albae*) onder de survey N2000meetnet_Bos_91E0_sf. + +De vegetatieopnames zijn geëxporteerd uit de INBOVEG-databank als een access-databank: VegetatieopnamesPQ_Zeeschelde_2023.accdb. + +![(#fig:Figuur1) Structuur van de relationele databank VegetatieopnamesPQ_Zeeschelde_2023.accdb.](G:/.shortcut-targets-by-id/0B0xcP-eNvJ9dUVZJLVE1U2RobWs/INBODATA/PROJECTEN/PRJ_SCHELDE/VNSC/Rapportage_INBO/2024/050_hogere_planten/figuren/media/image2.jpg){width="5.90625in" height="2.6909722222222223in"} + +Deze databank bevat 5 tabellen, die onderling gekoppeld zijn (Figuur \@ref(fig:Figuur1)). In de tabel 'ivRecording2023' zijn kopgegevens van de vegetatieopname gegeven zoals datum, lengte, breedte, auteur, etc. (Tabel \@ref(tab:Tabel3)). Deze tabel is eveneens de basistabel van de aangeleverde vegetatieopnames. Deze tabel is gekoppeld aan de tabel 'ivRLQualifier2022' waarin de code van het permanent kwadraat (PQ) gegeven is, waarvan de vegetatieopname is gemaakt (Tabel \@ref(tab:Tabel4)). + +De tabel 'ivRLLayer2023' is eveneens direct gekoppeld aan de basistabel 'ivRecording2023' en bevat de verschillende vegetatielagen die aangetroffen zijn in elke vegetatieopname (Tabel \@ref(tab:Tabel5)). Ook is per vegetatielaag de procentuele bedekking gegeven in deze tabel. Op zijn beurt is deze tabel gekoppeld aan de tabel 'ivRLTaxonOccurrence2023' waarin per vegetatielaag de bedekkingen van de aangetroffen plantensoorten gegeven zijn (Londoschaal) (Tabel \@ref(tab:Tabel6)). De naam van de overeenkomstige plantensoort is gegeven in de gekoppelde tabel 'ivRLIdentification2023' (Tabel \@ref(tab:Tabel7)). + +\newpage + +| Tabel 'ivRecording2023' | | +|:------------------|-----------------------------------------------------| +| ID | Uniek volgnummer | +| RecordingGivid | Unieke code van de vegetatieopname in de databank INBOVEG | +| LocationCode | Naam van het schor waar het PQ gelegen is | +| Length | Lengte van het proefvlak in cm | +| Width | Breedte van het proefvlak in cm | +| Area | Oppervlakte van het proefvlak in vierkante meter | +| UserReference | Unieke waarnemerscode van de vegetatieopname. 'BV' verwijst naar de auteur (Bart Vandevoorde), met aansluitend een oplopend volgnummer (WM: Wim Mertens, VS: Vincent Smeekens) | +| Observer | Auteur van de vegetatieopname | +| VagueDateBegin | Datum wanneer de vegetatieopname is gemaakt | + +: (#tab:Tabel3) Overzicht met een beschrijving van de kolommen opgenomen in de tabel 'ivRecording2023' van de Access-databank VegetatieopnamesPQ_Zeeschelde_2023.accdb. + + +| Tabel 'ivRLQualifier2023' | | +|:-----------------------|------------------------------------------------| +| ID | Uniek volgnummer | +| RecordingID | ID corresponderend met tabel 'ivRecording2023' | +| QualifierCode | Nummer of code van het PQ waarvan de vegetatieopname is gemaakt | + +: (#tab:Tabel4) Overzicht met een beschrijving van de kolommen opgenomen in de tabel 'ivRLQualifier2023' van de Access-databank VegetatieopnamesPQ_Zeeschelde_2023.accdb. + + +| Tabel 'ivRLLayer2023' | | +|:-----------------|------------------------------------------------------| +| ID | Uniek volgnummer | +| RecordingID | ID corresponderend met tabel 'ivRecording2023' | +| LayerCode | Deze code verwijst naar de verschillende vegetatielagen binnen de vegetatieopname (TOT: totale bedekking; BH: boomlaag; SH: struiklaag; KH: kruidlaag; MO: moslaag; AL: algenlaag; NB: naakte bodem; STR: strooisellaag). | +| CoverCode | Deze waarde is de procentuele bedekking die de betreffende vegetatielaag inneemt in het plot. 'x-1' betekent een bedekking van minder dan 1% | + +: (#tab:Tabel5) Overzicht met een beschrijving van de kolommen opgenomen in de tabel 'ivRLLayer2023' van de Access-databank VegetatieopnamesPQ_Zeeschelde_2023.accdb. + + +\newpage + +| Tabel 'ivRLTaxonOccurrence2023' | | +|:-------------------|----------------------------------------------------| +| ID | Uniek volgnummer | +| LayerID | ID corresponderend met tabel 'ivRLLayer2023' | +| CoverageCode | Bedekkingen (Londo-schaal) van de verschillende plantensoorten die in de overeenkomstige lagen zijn aangetroffen | + +: (#tab:Tabel6) Overzicht met een beschrijving van de kolommen opgenomen in de tabel 'ivRLTaxonOccurrence2023' van de Access-databank VegetatieopnamesPQ_Zeeschelde_2023.accdb. + +| Tabel 'ivRLIdentification2023' | | +|:--------------------------|---------------------------------------------| +| ID | Uniek volgnummer | +| OccurrenceID | ID corresponderend met tabel 'ivRLTaxonOccurence2023' | +| TaxonFullText | Wetenschappelijke naam van de plantensoort | +| TaxonGroup | VP: vaatplant; !!: wier | + +: (#tab:Tabel7) Overzicht met een beschrijving van de kolommen opgenomen in de tabel 'ivRLIdentification2023' van de Access-databank VegetatieopnamesPQ_Zeeschelde_2023.accdb. + + +### Coördinaten + +In het Moneos-rapport van 2023 zijn de coördinaten van de PQ's aangeleverd (Van Ryckegem *et al*., 2023). In dit rapport wordt de lijst van de coördinaten herhaald maar aangevuld met de coördinaten van de PQ's ter evaluatie van habitattype 91E0_sf Zachthoutooibos (ZSCPQ328 t.e.m. ZSCPQ356; ZSCPQ370 t.e.m. ZSCPQ378). Deze coördinaten worden aangeleverd als bijlage onder de vorm van een excel-bestand (CoordinatenPQ_ZeescheldeINBO_2024.xlsx) waarin de volgende kolommen zijn opgenomen in het enige werkblad 'Coördinaten': + +- **PQnummer**: het unieke nummer van het permanent kwadraat. Het acroniem ZSC verwijst naar Zeeschelde, PQ verwijst naar permanent kwadraat en vervolgens is een nummer gegeven. Dit nummer is ook aangegeven in de kolom 'QualifierCode' in tabel 'ivRLQualifier2023' (zie \@ref(DBstruct)). + +- **Lam72-X-coördinaat**: de X-coördinaat in Lambert 72 van het middelpunt tussen de markeringspalen of van de diagonaal. + +- **Lam72-Y-coördinaat**: de Y-coördinaat in Lambert 72 van het middelpunt tussen de markeringspalen of van de diagonaal. + +- **Functioneel**: als er in de deze kolom een 0 staat, is het PQ heden niet meer functioneel en wordt het niet meer opgenomen. Indien er een 1 staat, is het PQ wel nog functioneel en wordt het recurrent opgenomen. + +- **Coördinaat**: Bij een hele reeks PQ\'s staat een 0 en ontbreken de coördinaten omdat deze coördinaten niet beschikbaar zijn. Deze PQ\'s zijn geïnstalleerd in de vorige eeuw toen nog geen RTK-GPS beschikbaar was. De PQ\'s zijn pas jaren later ingemeten en een deel van de PQ\'s kon helaas niet teruggevonden worden. Dit zijn PQ\'s waarvan er opnames zijn in 1995 en 1997 maar later niet meer. Van enkele PQ's is wel een coördinaat gegeven maar schuilt er een onbetrouwbaarheid in. Ook bij deze PQ's is een 0 gegeven in deze kolom. Indien er een 1 staat in deze kolom is de coördinaat wel betrouwbaar. + +## Referenties + +Meire P. & Maris T. (2008). MONEOS: Geïntegreerde monitoring van het Schelde‐estuarium. + +Leyssen A., Denys L., Schneiders A., Van Looy K., Packet J. & Vanhecke L. (2006). Afstemmen van referentiecondities en evaluatiesystemen voor de biologische kwaliteitselementen macrofyten en fytobenthos en uitwerken van een meetstrategie in functie van de Kaderrichtlijn Water. Rapport van het Instituut voor Natuurbehoud IN.R.2006.09 in opdracht van VMM, Brussel. + +Schaminée J.H.J., Stortelder A.H.F. & Westhoff V. (1995). De vegetatie van Nederland. Deel 1 Inleiding tot de plantensociologie: grondslagen, methoden en toepassingen. Opulus Press, Uppsala, Leiden, 296 p. + +Van Ryckegem G., Van Braeckel A., Elsen R., Vanoverbeke J., Van de Meutter F., Vandevoorde B., Mertens W., Breine J., Speybroeck J., Bezdenjesnji O., Buerms D., De Beukelaer J., De Regge N., Hessel K., Soors J. & Van Lierop F. (2020). MONEOS -- Datarapport INBO: toestand Zeeschelde 2018-2019. Monitoringsoverzicht en 1ste lijnsrapport Geomorfologie, diversiteit Habitats en diversiteit Soorten. Rapporten van het Instituut voor Natuur- en Bosonderzoek 2020 (38). Instituut voor Natuur- en Bosonderzoek, Brussel. + +Van Ryckegem G., Vanoverbeke J., Van de Meutter F., Vandevoorde B., Mertens A., Mertens W., Van Braeckel A., Van Thyune G., Smeekens V., Thibau K., Bezdenjesnji O., Buerms D., De Regge N., Hessel K., Lefranc C., Soors J. & Van Lierop F. (2023). MONEOS ‐ Geïntegreerd datarapport INBO: Toestand Zeeschelde 2022. Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. Rapporten van het Instituut voor Natuur‐ en Bosonderzoek 2023 (45). Instituut voor Natuur‐ en Bosonderzoek, Brussel. + +Westra T., Oosterlynck P., Van Calster H., Paelinckx D., Denys L., Leyssen A., Packet J., Onkelinx T., Louette G., Waterinckx M. & Quataert P. (2014). Monitoring Natura 2000 - habitats: meetnet habitatkwaliteit. Rapporten van het Instituut voor Natuur- en Bosonderzoek 2014 (1414229). Instituut voor Natuur- en Bosonderzoek, Brussel. + +[^1]: De bedekking van de moslaag is ingeschat, net als de bedekking van de individuele mossoorten maar deze zijn niet toegevoegd aan de dataset omdat de determinatie nog gecontroleerd moet worden. + diff --git a/moneos_2024/150_geintegreerd_rapport/060_sedimentkenmerken.Rmd b/moneos_2024/150_geintegreerd_rapport/060_sedimentkenmerken.Rmd new file mode 100644 index 0000000..01d1661 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/060_sedimentkenmerken.Rmd @@ -0,0 +1,312 @@ +--- +editor_options: + markdown: + wrap: sentence + chunk_output_type: inline +--- + +```{r 060-hoofdstuk, include=FALSE} + +hoofdstuk <- "060_sedimentkenmerken" + +``` + +```{r 060-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H", out.extra = '') +knitr::opts_knit$set(eval.after = "fig.cap") + + +``` + +```{r 060-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) + +``` + +```{r 060-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +# source("../pad.R") + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") +``` + +```{r 060-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +# Sedimentkenmerken + +Fichenummer: S-MD-V004a – Sedimentkenmerken (in functie van benthos) + +**Gunther Van Ryckegem** + +## Inleiding + +Op elke locatie waar stalen voor het macrozoöbenthos worden genomen (zie Hoofdstuk 7), wordt een begeleidend sedimentstaal genomen. +Van deze stalen worden de granulometrische karakteristieken bepaald door laserdiffractie (LDIF) en wordt het gehalte aan organisch materiaal (OM%) bepaald door verassing (LOI). +De korrelgrootte en hoeveelheid organisch materiaal geven respectievelijk informatie over de fysische structuur van de bodem en de mogelijke voedselrijkdom in het sediment – rechtstreeks als voedsel of onrechtstreeks als proxy voor potentiële bacteriële activiteit. +Hiermee zijn het interessante factoren voor het verklaren van trends in de bodemdierengemeenschappen en algemeen indicatief voor het functioneren van het benthisch ecosysteem als matrix voor bodemprocessen. +De aangeleverde data omvatten de outputvariabelen mediane korrelgrootte (D50), het slibgehalte (percentage van het staalvolume dat een korrelgrootte heeft die kleiner is dan 63µm) en organisch materiaal (percentage van het droog staalgewicht, na verhitting tot 550°C). + +## Materiaal en methode + +De data werden geanalyseerd in R (R Core Team, 2019). + +Het aantal sedimentstalen per campagne is weergegeven in Tabel \@ref(tab:060-tabel-sediment). + +In het veld wordt net naast elk macrozoöbenthosstaal een sedimentstaal verzameld met een steekbuis (diameter 2cm) tot op 10 cm diepte. +De jaarlijkse campagnes vallen steeds in september – oktober. +Het organische stofgehalte van het sediment wordt bepaald door een hoeveelheid sediment te drogen (bij 105°C tot constante massa), te wegen en vervolgens gedurende 2 uur te verassen bij 550°C. +Het bekomen verlies aan massa ten gevolge van het verbranden van de organische component, het asvrij drooggewicht, wordt uitgedrukt als percentage van de oorspronkelijke droge massa van het deelstaal. +In Van Ryckegem et al. (2017) wordt uitvoerig de analyseprocedure en de datacorrectie besproken naar aanleiding van veranderingen in protocol en meettoestellen. +De geleverde data is de gecorrigeerde data. +In 2015 en 2013 bleken de korrelgrootte analyses voor de intertidale batch Zeeschelde IV en in 2013 voor de subtidale batch Zeeschelde I onbetrouwbaar. +Deze data werd niet aangeleverd en is buiten de analyse gelaten. +In Van de Meutter et al. (2022) een uitgebreide kwaliteitscontrole gepresenteerd van de INBO analysemethode voor korrelgrootteverdeling (adhv een Coultern counter). +De herhaalbaarheid van de metingen is hoog (mediaan verschil: ca. -1 tot 4µm; gemiddelde verschil: ca. -5 tot 7µm; standaarddeviatie (SD) \~ 15µm). +Afwijkende metingen (\> 2 keer SD) kunnen voorkomen in circa 7% van de stalen. + +```{r 060-tabel-sediment} + +# inlezen tabel +tabel_x_waarden <- + read_excel(paste0(pad_tabellen, "sediment_tabellen.xlsx"), + sheet = "jaar_waarden", + .name_repair = "minimal") + +# hoofding tabel +caption_x_waarden <- "Aantal sedimentstalen per jaar." + +# opmaak tabel +tabel_x_waarden %>% + # dplyr::mutate_all(~replace_na(., "")) %>% + kable(caption = caption_x_waarden, + booktabs = TRUE) %>% + kable_styling(latex_options = "HOLD_position") + +``` + + + +

+ +Om de lange termijn trends te onderzoeken bepalen we welke lineaire regressiemodellen per waterloop en fysiotoop een significante trend tonen over de periode 2008-`r recentste_jaar` (p-waarde genomen \< 0.01). +De dataset werd genest binnen fysiotoop en waterloop. +Slibpercentage is de responsvariabele en jaar de predictorvariabele. + + +## Resultaten + +In deze eerstelijnsrapportage wordt de nadruk gelegd op de resultaten van de outputvariabele slibgehalte voor de periode 2008-`r recentste_jaar`. +In slibrijke bodems (\> 25% slib) vertonen de drie beschouwde variabelen in de dataset (mediane korrelgrootte, slibgehalte en organisch materiaal) een sterk onderling verband. +Daarom beperken we de eerstelijnsbespreking tot het slibgehalte van de sedimenten. +De andere metingen werden gevalideerd. + +Doorheen het estuarium is er een grotere spreiding op de metingen van slibgehalte binnen het subtidale in vergelijking met het intertidale gebied (Figuur \@ref(fig:060-figuur-slib-Zeeschelde-boxplotfysiotopen)). +In het intertidaal is er een consistent patroon van slibrijke (fijnere) bodems in het hoog slik fysiotoop naar minder slibrijke (grovere) sedimenten lager. +Dit patroon zet zich globaal door in het subtidaal. + +```{r 060-figuur-slib-Zeeschelde-boxplotfysiotopen, fig.cap=slib_Zeeschelde_boxplotfysiotopen, out.width="80%"} + +slib_Zeeschelde_boxplotfysiotopen <- paste0("Boxplot van het slibpercentage per fysiotoop in het intertidaal en subtidaal van de Zeeschelde (data 2008-",recentste_jaar,").") + + + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_slib_Zeeschelde_boxplotfysiotopen.jpg")) + +``` + +
+ +We stellen een aantal duidelijke veranderingen in sedimentsamenstelling vast in de Zeeschelde inclusief de zijrivieren. + +De selectie van de meest significante modellen is weergegeven in Tabel \@ref(tab:060-tabel-modeloutput). De regressiefiguren worden getoond in +De trendanalyses worden verduidelijkt door de data weer te geven met boxplots gegroepeerd in twee tijdsreeksen vóór 2015 en vanaf 2015. +Deze opdeling is gebaseerd op de knikpunt analyse uitgevoerd door Meire et al. (2021). +Deze auteurs vonden in 2014 een trendbreuk in de SPM concentraties in het opwaartse turbiditeitsmaximum (van Temse tot Dendermonde). + +```{r 060-tabel-modeloutput} + +# inlezen tabel +tabel_x_waarden <- + read_excel(paste0(pad_tabellen, "modeloutput_slib.xlsx"), + sheet = "modeloutput", + .name_repair = "minimal") + +# hoofding tabel +caption_x_waarden <- "Significante (<0.01) lineare regressiemodellen voor slibpercentage voor de waterloop zones per fysiotoop." + +# opmaak tabel +tabel_x_waarden %>% + dplyr::filter(p.value < 0.01) %>% + dplyr::arrange(p.value) %>% + # dplyr::mutate_all(~replace_na(., "")) %>% + kable(caption = caption_x_waarden, + booktabs = TRUE) %>% + kable_styling(latex_options = "HOLD_position") + +``` + + + +
+ +Het slibpercentage langsheen de Beneden-Nete neemt significant toe (Tabel \@ref(tab:060-tabel-modeloutput)). +Deze trend kan mogelijk gelinkt worden aan de sterk verhoogde sedimentimport uit de Grote Nete waar het rivierbed zandiger werd en er dus slibrijk materiaal uitspoelde naar afwaarts (Meire et al., 2021). +De veranderingen in de Grote Nete zijn mogelijk veroorzaakt door de activiteit van de Chinese wolhandkrab (Schoelynck et al., 2020). Een lozing met het afsterven van de waterplanten tot gevolg is ook een hypothese. +Hoewel niet alle modellen sterk significant zijn, is deze tendens tot verhoogde intertidale 'verslibbing' ook zichtbaar langs de andere zijrivieren (Zenne, Rupel, Dijle) en langs de Zeeschelde (Figuur \@ref(fig:060-figuur-slib-zijrivieren-intertidaalboxplotperiodes) en (Figuur \@ref(fig:060-figuur-slib-Zeeschelde-intertidaalboxplotperiodes)). +Er zijn andere factoren (naast Chinese wolhandkrab, die een stabiele trend toont in de monitoringperiode 2012-2017 - Van Ryckegem et al., 2018) die elk een ander gewicht kunnen hebben langsheen de estuariene gradiënt (zie Meire et al., 2021). +Het aantal jaren met data in Nete, Zenne en Dijle is wel beperkt. +In de periode 2015 en later zijn er enkel gegevens in 2015, 2016, 2017 en 2020. +Hierdoor kunnen we voor de zijrivieren geen uitspraak doen over de recente trends. + +De hydrodynamica van de Zeeschelde zal de verhoogde slibfractie (als SPM) in de waterkolom in principe preferentieel sorteren en sedimenteren naar (de hogere delen van) het intertidaal. +De significante toename van het slibpercentages in de intertidale zones van de Beneden-Zeeschelde liggen daarmee in de lijn der verwachtingen, maar het is opvallend dat er zich ook een grote en significante habitatwijziging voordoet (significant hoger slibpercentage en ook kleinere mediane korrelgrootte) van de diepe onderwaterbodems van de Beneden-Zeeschelde - Zeeschelde IV (Figuur \@ref(fig:060-figuur-slib-Zeeschelde-subtidaalboxplotperiodes). Nadere analyse is wenselijk om te bekijken of deze toename indicatief is voor 'fluid mud' lagen in de diepe delen. + + +De regressie analyse en databeschrijving wijst op geleidelijke habitatveranderingen die gaande zijn, waarschijnlijk onder invloed van de verhoogde SPM gehaltes. +Dit verhoogd slibgehalte wordt afgezet op de intertidale habitats én de onderwaterbodem. +Er zijn duidelijke aanwijzingen dat dit gerelateerd is aan de toegenomen baggeractiviteit. +Dit in combinatie met veranderingen in de debieten en het veranderde systeemvolume zorgt voor een toename van het opwaarts transport in droogteperiodes. +Deze sedimentpaketten worden bij hoge (winter) debieten opnieuw afwaarts getransporteerd (Meire et al., 2021). +In Zeeschelde I is er een tendens tot het zandiger worden van het matig diep (maar niet significant in datareeks). + +In de gekozen ruimtelijke afbakening (KRW-zones) van deze verkennende analyse komen geen significante veranderingen aan het licht in Zeeschelde III. Deze zone is sedimentologisch/morfologisch heterogeen, mogelijk loont het om ruimtelijk homogenere eenheden af te bakenen voor analyses (bv. stroomopwaarts en stroomafwaarts Rupel). +Een diepgaandere analyse van de data is nodig om correlaties te zoeken met mogelijk verklarende factoren. +De verandering in het slibgehalte (of de mediane korrelgrootte) is (vaak) subtiel in de absolute cijfers. +Er zijn geen aanwijzingen dat het gehalte in organisch materiaal wijzigde (analyse niet getoond). +Bijkomend onderzoek is nodig om de effecten op de benthische gemeenschap te duiden. + + + +```{r 060-figuur-regressieZS-mud, fig.cap=slib_Zeeschelde_regressie, out.width="80%"} + +slib_Zeeschelde_regressie <- paste0("Lineaire regressiefits voor slibgehalte (\\%) – Zeeschelde. Data genest binnen Zeeschelde zones en fysiotopen. (data 2008-",recentste_jaar,").") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_regressieZS_mud.jpg")) + +``` + +
+ + +```{r 060-figuur-regressie-zijrivier-mud, fig.cap=slib_zijrivier_regressie, out.width="80%"} + +slib_zijrivier_regressie <- paste0("Lineaire regressiefits voor slibgehalte (\\%) – Zijrivieren. Data genest binnen waterloop en fysiotopen. (data 2008-",recentste_jaar,").") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_regressie_zijrivier_mud.jpg")) + +``` + +
+ +```{r 060-figuur-slib-Zeeschelde-intertidaalboxplotperiodes, fig.cap=slib_Zeeschelde_intertidaal, out.width="80%"} + +slib_Zeeschelde_intertidaal <- paste0("Slibgehalte (\\%) – Zeeschelde intertidaal. Boxplots data voor periode voor 2015 en 2015 en later. Zeeschelde I is exclusief de sedimentstalen genomen in de tijarm Zwijnaarde en de Scheldemeander tussen Melle en Gentbrugge (data 2008-",recentste_jaar,").") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_slib_Zeeschelde_intertidaalboxplotperiods.jpg")) + +``` + +
+ +```{r 060-figuur-slib-Zeeschelde-subtidaalboxplotperiodes, fig.cap=slib_Zeeschelde_subtidaal, out.width="80%"} + +slib_Zeeschelde_subtidaal <- paste0("Slibgehalte (\\%) – Zeeschelde subtidaal. Boxplots data voor periode voor 2015 en 2015 en later. Zeeschelde I is exclusief de sedimentstalen genomen in de tijarm Zwijnaarde en de Scheldemeander tussen Melle en Gentbrugge (data 2008-",recentste_jaar,").") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_slib_Zeeschelde_subtidaalboxplotperiods.jpg")) + +``` + +
+ +```{r 060-figuur-slib-zijrivieren-intertidaalboxplotperiodes, fig.cap=slib_zijrivieren_intertidaal, out.width="80%"} + +slib_zijrivieren_intertidaal <- paste0("Slibgehalte (\\%) – zijrivieren intertidaal. Na 2017 enkel nog data van 2020 langsheen de zijrivieren Nete, Dijle en Zenne. Boxplots tonen data voor periode voor 2015 en 2015 en later (data 2008-",recentste_jaar,").") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_slib_zijrivieren_intertidaalboxplotperiods.jpg")) + +``` + +
+ +```{r 060-figuur-slib-zijrivieren-subtidaalboxplotperiodes, fig.cap=slib_zijrivieren_subtidaal, out.width="80%"} + +slib_zijrivieren_subtidaal <- paste0("Slibgehalte (\\%) – zijrivieren subtidaal. Na 2017 enkel nog data van 2020 langsheen de zijrivieren Nete, Dijle en Zenne. Boxplots tonen data voor periode voor 2015 en 2015 en later (data 2008-",recentste_jaar,"). Het fysiotoop 'diep' komt niet voor langsheen de Nete, Dijle en Zenne") + +knitr::include_graphics(paste0(pad_figuren, "060_figuur_slib_zijrivieren_subtidaalboxplotperiods.jpg")) + +``` + +
+ +## Algemene conclusie + +In de Zeeschelde en zijrivieren worden de intertidale habitats (vaak significant) slibrijker. +Dit verandert de leefgebieden van het macrozoöbenthos. +Bijkomend onderzoek is nodig om de mogelijke effecten op de benthische gemeenschap te duiden. +In de diepere geul is de variatie groot en vaak zonder duidelijk patroon. +Des te opvallender is dan ook de significante trend uit de random staalname dat de diepe geul van de Beneden-Zeeschelde slibrijker wordt. + +## Referenties + +Meire P., Plancke Y., Govaerts A., Cox T., Gelsomi P., Horemans D., Meire D., Meire L., Zetsche E. +and Maris T. +(2021). +Synthesis note: SPM dynamics and trends in the Scheldt estuary. +ECOBE Report 021-R267 Universiteit Antwerpen, Antwerpen. + +R Core Team (2019). +R: A Language and Environment for Statistical Computing. +R Foundation for Statistical Computing, Vienna, Austria. +. + +Schoelynck J., Wolters J. W., Teuchies J., Brion N., Puijalon S.,Horemans D.M.L., Keirsebelik H., Bervoets L., Blust R. +& Meire P. (2020). +Experimental evidence for the decline of submerged vegetation in freshwater ecosystems by the invasive Chinese mitten crab (*Eriocheir sinensis*). +Biological Invasions, 22(2), 627–641. + +Van de Meutter F., Smeekens V. & Buerms D. +(2022). +Beschrijvend datarapport: sedimentkarakteristieken en sedimentatie-erosie langsheen vaste raaien voor benthosmonitoring in de Zeeschelde 2018-2020.Rapporten van het Instituut voor Natuur- en Bosonderzoek 2022 (34). +Instituut voor Natuur- en Bosonderzoek, Brussel. + +Van Ryckegem G., Van Braeckel A., Elsen R., Speybroeck J., Vandevoorde B., Mertens W., Breine J., Spanoghe G., Buerms D., De Beukelaer J., De Regge N., Hessel K., Soors J., Terrie T., Van Lierop F. +& Van den Bergh E. +(2017). +MONEOS – Geïntegreerd datarapport INBO: Toestand Zeeschelde 2016: monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2017 (37). +Instituut voor Natuur- en Bosonderzoek, Brussel. + +Van Ryckegem G., Van Braeckel A., Elsen R., Speybroeck J., Vandevoorde B., Mertens W., Breine J., Spanoghe G., Bezdenjesnji O., Buerms D., De Beukelaer J., De Regge N., Hessel K., Lefranc C., Soors J., Terrie T., Van Lierop F. +& Van den Bergh E. +(2018). +MONEOS – Geïntegreerd datarapport INBO: Toestand Zeeschelde 2017: monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2018 (74). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.15000892 diff --git a/moneos_2024/150_geintegreerd_rapport/070_macrozoobenthos.Rmd b/moneos_2024/150_geintegreerd_rapport/070_macrozoobenthos.Rmd new file mode 100644 index 0000000..efa2ebc --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/070_macrozoobenthos.Rmd @@ -0,0 +1,450 @@ +--- +editor_options: + markdown: + wrap: sentence + chunk_output_type: inline +--- + +```{r 070-hoofdstuk, include=FALSE} + +hoofdstuk <- "070_macrozoobenthos" + +``` + +```{r 070-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 070-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) ## workaround pad + +``` + +```{r 070-pad} + +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") +``` + +```{r 070-meta_data} +##metadata nog niet aangepast in 2022, wat moet dat zijn? +meta_data <- + read_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} +``` + +# Macrozoöbenthos + +Fichenummer: S_DS_V_002_benthos + +**Frank Van de Meutter**, Jan Soors, Dimitri Buerms, Charles Lefranc, Olja Bezdenjesnji, Ada Coudenys, Vincent Smeekens + +## Inleiding + +Een beschrijving van de historische benthosgegevens in de Zeeschelde (1999, 2002, 2005) is te vinden in Speybroeck et al. (2014). +Deze gegevens zijn verzameld met het oog op een systeemmonitoring, maar volgen een andere methodologie dan de moderne MONEOS monitoring. +Sinds 2008 wordt jaarlijks op basis van een random stratified design benthos bemonsterd. +De gegevens van 2008 tot en met 2022 worden geleverd in een Excel-bestand (benthos_data2008-2022_rapportage2024.xlsx) met volgende werkbladen. + +- macrobenthos –- densiteit en biomassa per staalnamelocatie uitgedrukt per m² +- locaties –- de Lambert72-coördinaten van de bemonsterde locaties + +## Materiaal en methode + +### Strategie + +Sinds de intrede van de moneos methodologie in 2008 wordt een stratified random sampling design toegepast. +Als hoogste hiërarchisch niveau binnen de stratificatie worden de 7 waterlichamen genomen, zoals deze voor monitoring en beoordeling in de context van de Kaderrichtlijn Water (KRW) worden onderscheiden (EMSE niveau 3). +De benaming verschilt echter van de vorige rapportages en refereert nu aan de saliniteit en verblijftijd in de verschillende zones. +In de Oligohaliene zone wordt de Rupel echter apart beschouwd en ook de Dijle en Zenne worden als aparte eenheden behandeld. +Sinds 2014 worden twee tijarmen die aantakken op de zone Zoet kort verblijf, de tijarm Zwijnaarde en de tijarm traject Melle-Gentbrugge, apart beschouwd in de sampling design als aparte levels in het stratum waterlichaam. +Tot hiertoe werden deze gegevens samen gerapporteerd onder de zone Zoet kort verblijf, het grotere waterlichaam waartoe ze behoren, maar wegens hun aparte dynamiek geven we ze vanaf dit rapport voor de meeste parameters apart weer. +Per waterlichaam wordt vervolgens een opdeling gemaakt per fysiotoop, met de uitzondering dat hoog slik en slik in het supralitoraal (potentiële pionierzone) samen genomen worden. +Dit resulteert in een gelijkmatige spreiding van de staalnamelocaties. +Als basis bij de randomisatie werd de fysiotopenkaart van 2021 gebruikt. +De fysiotoop per waterlichaam fungeert als kleinste eenheid van informatie. +De stalen van verschillende locaties binnen een zelfde fysiotoop x waterlichaam worden als replica's voor dat fysiotoop beschouwd. +In de Zeeschelde en de Rupel werden de antropogene harde zones (steenbestortingen) afzonderlijk onderscheiden. + +Tot en met 2017 werd het volledige estuarium jaarlijks bemonsterd. +Vanaf 2018 worden de zijrivieren Dijle, Nete en Zenne slechts 3-jaarlijks bemonsterd. +Een volledige staalname gebeurde sindsdien in 2020 en 2023; deze laatste zal in 2025 gerapporteerd worden. +Jaarlijks worden nieuwe random vastgelegde staalnamelocaties gekozen binnen elk van de strata. +In principe worden 5 locaties per stratum (combinatie van fysiotoop en waterlichaam) bemonsterd. +Dit aantal wordt aangepast in sommige gevallen in functie van de relatieve en absolute areaalgrootte van de fysiotopen binnen de waterlichamen. +Zo worden er in de zone sterke Saliniteitsgradiënt in het intertidaal ongeveer dubbel zoveel stalen genomen als in de andere zones (9), omdat in deze zone de slikoppervlaktes veel groter zijn, terwijl in de overige zones er vaak minder dan 5 stalen genomen worden (3-5). +Het overtal aan stalen in Saliniteitsgradiënt dient niet enkel om een (eventuele) grotere ruimtelijke variatie in rekening te brengen, maar vooral ook om de precisie hier groter te maken (of de foutenmarge op de schatting kleiner) aangezien deze bij het berekenen van de systeembiomassa een veel groter gewicht krijgt. +In het benthosarmere subtidaal worden er minder stalen genomen dan in het intertidaal (5 in Saliniteitsgradiënt, meestal 3 in de overige zones). + +Hoewel tijdens het nemen van de stalen veel aandacht gaat naar het zo volledig mogelijk uitvoeren van de vooropgezette design, kan doorgaans een klein aantal stalen niet genomen worden door technische problemen of onvoorziene omstandigheden (bijvoorbeeld grote ongekende velden breuksteen subtidaal die de staalname onmogelijk maken). +In de meeste gevallen worden punten over een kleine afstand verlegd, waarbij erop gelet wordt dat ze in dezelfde strata-combinatie blijven. +In 2022 werden uiteindelijk 208 stalen genomen, hetzelfde aantal als in 2021. +Een overzicht van de stalen per stratum is weergegeven in Tabel \@ref(tab:070-staalnamelocaties). +Omdat de getijkarakteristieken in de zijrivieren minder goed gekend zijn, wordt hier vaak geen onderscheid gemaakt tussen hoog en middelhoog slik. +In de tabel wordt voor de eenvormigheid het hoog en middelhoog slik overal als 1 klasse weergegeven. +In de zone Zoet kort verblijf worden de extra stalen uit de tijarmen meegerekend. + +```{r 070-staalnamelocaties} + +# inlezen tabel +tabel_x_waarden <- + read_excel(paste0(pad_tabellen, "070_Macrobenthos_tabellen.xlsx"), + sheet = "staalnamelocaties", + .name_repair = "minimal") + +# naam van de tabel om weg te schrijven en uit te lezen in .png file +naam_tabel <-"tabel_staalnamelocaties" + +# hoofding tabel +caption_staalnamelocaties <- "Aantal stalen per stratum in 2022." + +# lege tabel om de hoofding weer te geven (trukje om hoofding en kruisverwijzingen correct weer te geven in Word) +#knitr::kable(NULL, caption = caption_staalnamelocaties) + +# opmaak tabel en opslaan als .png +tabel_x_waarden %>% + # mutate_all(~replace_na(., "")) %>% + knitr::kable(booktabs = TRUE, + caption = caption_staalnamelocaties) %>% + kable_styling(latex_options = "scale_down") + + +# weergeven van de tabel +#knitr::include_graphics(paste0(naam_tabel,".png")) +#knitr::include_graphics(paste0(pad_figuren, "070-figuur-gewogengemiddeldebiomassa.jpg")) +``` + + + +
+ +### Staalname + +We onderscheiden twee soorten benthosstalen. + +**basisstaal (BS)**: jaarlijks + +- intertidaal: 1 steekbuisstaal (diameter: 4,5cm) tot op een diepte van 15cm + +- subtidaal: 1 steekbuisstaal uit een Reineck box-corer staal (diameter: 4,5cm) tot op een diepte van 15cm (in het box-corer staal). + + In de campagne van 2022 (deze rapportage) is er alleen een basisstaal genomen. + +**Oligochaetenidentificatiestaal (OID)**: elke drie jaar (2008, 2011, 2014, 2017) werd tot en met 2017 (dus *niet* meer in 2020 en 2023) aanvullend een tweede benthosstaal genomen. +Dit staal wordt genomen in functie van de identificatie van oligochaeten (OID). +Vanaf 2020 gebeurt de determinatie echter op de oligochaeten die verzameld werden in het basisstaal. +Wanneer de oligochaeten apart getrieerd zijn voor determinatie noemen we deze oligochaetenfractie wel opnieuw het OID staal. +Het staal werd op dezelfde manier genomen als het basisstaal. +Beide benthosstalen (BS, OID) worden gefixeerd (F-Solv 50%). +Bij elk benthosstaal wordt jaarlijks ook een **sedimentstaal** genomen met een sedimentcorer (diameter 2cm zie ook hoofdstuk 6.2) tot 10 cm diepte in het substraat (intertidaal) of in het box-corer sample (subtidaal). +Dit wordt vervolgens ter bewaring ingevroren. +Deze gepaarde sedimentstalen worden gebruikt om te rapporteren over sedimentkwaliteit (zie elders in dit rapport). + +### Verwerking + +Hieronder geven we de chronologie van handelingen bij de verwerking van elk type staal. + +**BS** + +- spoelen en zeven over twee zeven met maaswijdtes 1mm en 500µm =\> twee zeeffracties. Elke fractie ondergaat de hierna volgende stappen: +- uitselecteren van fauna +- determineren van alle individuen tot op het laagst mogelijke taxonomische niveau + tellen (maar de Oligochaeta worden als 1 taxon gerekend) +- biomassabepaling = verassing ('*loss on ignition*'): + - per taxon (= soort of een hoger niet nader te determineren taxonomisch niveau) + - drogen (12h bij 105°C) =\> drooggewicht (DW) + - verassen (2h bij 550°C) =\> asgewicht (AW) + - biomassa: asvrij drooggewicht AFDW = DW -- AW + +**OID** + +- spoelen en zeven over twee zeven met maaswijdtes 1mm en 500µm =\> 2 zeeffracties +- uitselecteren van fauna +- determineren van 25 individuen Oligochaeta per zeeffractie tot op het laagst mogelijke taxonomische niveau + tellen totaal aantal wormen in het staal +- geen biomassabepaling per soort; totale oligochaetenbiomassa wordt bepaald in BS ! Dit staal dient dus enkel voor het determineren van oligochaeten! Het bepalen van de soortspecfieke biomassa en densiteit gebeurt door de totale biomassa Oligochaeta in het BS staal te alloceren aan de verschillende taxa volgens hun relatieve aantallen in het OID staal. Deze methode houdt geen rekening met soortspecifieke biomassa's en is dus benaderend. + +## Resultaten + +We bespreken hieronder de verkennende analyses van de jaarlijkse standaard monitoringsinspanning (BS stalen) voor het jaar 2022. + +### Resultaten macrozoöbenthos 2022 + +#### Densiteit en biomassa + +De densiteit van het macrozoöbenthos in het Zeeschelde estuarium is in de recente periode relatief stabiel (Figuur \@ref(fig:070-figuur10-soorten)). +Omdat deze parameter voor een deel van de soorten inherent grote fluctuaties ondergaat, wordt deze beoordeeld op zijn logaritmisch verloop. +Bovendien is ze relatief minder betekenisvol en consistent dan de biomassa (zie verder). +De veranderingen in 2022 vallen binnen de langjarige variatie. +In de vorige rapportages stipten we aan dat 2019 een recordjaar was in de zone Zoet kort verblijf. +In 2020 en 2021 daalden de waarden twee jaar op rij, maar ze bleven wel de hoogste in het Zeeschelde estuarium. +In deze rapportage worden voor het eerst de tijarmen onderscheiden van de hoofdbedding van de zone Zoet kort verblijf. +In deze nieuwe zienswijze blijkt niet 2019 maar 2018 het piekjaar in deze zone. +Wel zien we een grote piek in densiteiten in de tijarm Gentbrugge-Melle in 2019, waaruit we afleiden dat de in eerdere rapportages vermelde piek in de zone Zoet kort verblijf volledig op het conto kwam van het traject Gentbrugge-Melle. +In beide gebieden is er na 2019 een continue afname. +De zijrivieren Durme en Rupel vertoonden matig hoge densiteiten, die valt binnen de variatie van het laatste decennium. +Subtidale densiteiten liggen doorgaans een stuk lager, en vertonen een meer erratisch verloop, vermoedelijk doordat macrozoöbenthos subtidaal meer heterogeen verspreid voorkomt. + +De biomassa dichtheid (g AFDW per m²) (Figuur \@ref(fig:070-figuur11-soorten)) van het macrozoöbenthos in 2022 was eerder hoog in de zijrivieren Durme en Rupel, met waardes op of nabij de 10g AFDW per m², maar eerder laag in de Zeeschelde, met de uitzonderingen van de zone Saliniteitsgradiënt en het traject Gentbrugge-Melle, aan beide uitersten van het Vlaams deel van het estuarium. +De opvallende stijging in de zone Saliniteitsgradiënt (Zeeschelde IV, ongeveer Antwerpen tot de Nederlandse grens) die startte in 2019 zette niet door in 2022 in het intertidaal, maar wel in het subtidaal. +De verspreiding van grote organismen met relatief lage aantalsdichtheid, wordt met de toen toegepaste staalnametechniek (kleine steekbuis) niet optimaal in beeld gebracht. +Dit gaat met name op voor de bivalven, die verantwoordelijk zijn voor de biomassastijging (zie verder). +Vanaf 2023 besliste INBO daarom om in de zone Saliniteitsgradiënt aanvullend op de kleine steekbuis (4.5cm diameter) ook een grotere steekbuis (15cm diameter) in te zetten, om zo een verbeterde schatting te kunnen maken van bivalven en andere grote organismen. +De eerste resultaten hiervan zullen in 2025 gerapporteerd worden. +In de zone Zoet kort verblijf lijkt een einde gekomen aan een periode van zeer hoge biomassa dichtheid sinds 2015. +Voor het eerst wordt dit patroon nu uitgesplitst voor de hoofdbedding en de twee grote tijarmen van Zwijnaarde en tussen Melle en Gentbrugge. +Daaruit blijkt dat in tijarm Zwijnaarde relatief lage biomassa (en aantallen) benthos voorkomen, maar dat in de hoofdbedding en vooral in het traject Gentbrugge-Melle hogere tot zeer hoge biomassadichtheden voorkomen. +Het piekverloop van macrozoöbenthos kende een vrij gelijkaardig tijdsverloop in beide delen, en in zowel het intertidaal als het subtidaal. +De benthosbiomassa in deze zone bestaat vrijwel volledig uit Oligochaeta. +Na de piek in 2018-2019 volgde een algemene biomassa afname die ook in 2022 verder doorzette. +Enkel in het traject Gentbrugge-Melle is de biomassadichtheid nog beduidend hoger dan in de overige zoete en oligohaliene delen van de Zeeschelde, waar Oligochaeta dominant zijn. + +Het aandeel lege stalen viel voor alle zones ruim binnen de langjarige variatie (Figuur \@ref(fig:070-figuur12-soorten)). + +```{r 070-figuur10-soorten, fig.cap=caption_regressie10, out.width="100%"} +caption_regressie10 <- "Gemiddelde densiteit (lijn) aan macrozoöbenthos per waterlichaam opgedeeld in subtidaal en intertidaal. De spreiding rond de lijn wordt begrensd door het 1ste quartiel en 3de quartiel. De zone Zoet kort verblijf is hier exclusief de tijarmen." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-densiteitgemiddeldeTA.png")) + +``` + +
+ +```{r 070-figuur11-soorten, fig.cap=caption_regressie11, out.width="100%"} +caption_regressie11 <- "Gemiddelde biomassa (lijn) aan macrozoöbenthos per waterlichaam opgedeeld in subtidaal en intertidaal. Met weergave van spreiding 1ste quartiel en 3de quartiel. De zone Zoet kort verblijf is hier exclusief de tijarmen." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-biomassagemiddelde-waterlichaam-alternatiefTA.jpg")) +``` + +
+ +```{r 070-figuur12-soorten, fig.cap=caption_regressie12, out.width="70%"} +caption_regressie12 <- "Aandeel aan lege stalen per waterlichaam doorheen de tijd. De zone Zoet kort verblijf is hier inclusief de tijarmen." + +pad_figuren + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-aandeel-lege-stalen.jpg")) +``` + +
+ +Door de vastgestelde biomassa dichtheidswaarden (in g AFDW per m²) te vermenigvuldigen met de aanwezige oppervlakte aan verschillende intertidale fysiotopen, kunnen we de totale intertidale biomassa macrozoöbenthos in de Zeeschelde berekenen. +Voor de berekening werden de ecotoopoppervlaktes gebruikt van de jaargangen waarvoor gebiedsdekkende ecotoopkaarten voorhanden waren. +De oppervlaktes uit kaartjaar 2010 werden gelinkt aan de benthosjaren vóór 2012. +De oppervlaktes uit kaartjaar 2013 werden gelinkt aan de benthosjaren 2012-2014, de oppervlaktes uit kaartjaar 2016 werden gelinkt aan de benthosjaren 2015-2017 en de oppervlaktes uit kaartjaar 2019 werden gelinkt aan de benthosjaren 2018-2020. +Voor 2021 werden de fysiotoopoppervlaktes voor 2021 gebruikt. +Omdat bij het schrijven van dit deelrapport de fysiotoopoppervlaktes voor 2022 nog niet beschikbaar waren, gebruikten we voor dat jaar de oppervlaktes van 2021. +Ter illustratie worden ook de totale biomassa's macrozoöbenthos voor de Durme en Rupel getoond; deze maken echter geen deel uit van de totale systeembiomassa van de Zeeschelde. +De systeembiomassa Zeeschelde (Figuur \@ref(fig:070-figuur13)) kende een dip in 2017 voor het stroomafwaartse deel van het estuarium vanaf Durme, Rupel en de zone Saliniteitsgradiënt, waarna deze sterk opveerden met als gevolg dat van 2019 tot 2021 de systeembiomassa meer dan 40 ton droge stof bedroeg. +In 2022 daalde de systeembiomassa fors tot iets minder dan 23 ton droge stof, waarmee de vooropgestelde kwaliteitsgrens van 30 ton droge stof niet gehaald werd. + +```{r 070-figuur13, fig.cap=caption_regressie13, out.width="70%"} +caption_regressie13 <- "Gesommeerd totaal van de gemiddelden per stratum van de systeembiomassa per waterlichaam en voor de totale Zeeschelde, uitgedrukt in ton asvrij drooggewicht. +Doelstelling systeemniveau is 30 ton; doelstellingen per deelzones zijn op de figuur weergegeven door een horizontale lijn met bij het waterlichaam passende kleur (Saliniteistgradiënt=14.2, Oligohalien=8.3, Zoet lang verblijf=5, Zoet kort verblijf=2.5)." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-intertidalesysteembiomassa.jpg")) +``` + +
+ +De aanhoudend hoge systeembiomassa van de Zeeschelde tussen 2019-2021 was grotendeels toe te schrijven aan de zone Saliniteitsgradiënt. +Voorheen, en vooral in 2018-2019, was er nog een grote bijdrage aan de systeembiomassa vanuit de zone Zoet kort verblijf (inclusief de tijarm Melle-Gentbrugge), maar deze nam sterk af na 2019. +De toename in de zone Saliniteitsgradiënt komt helemaal op het conto van de Bivalvia (zie Figuur \@ref(fig:070-figuur13b)). +In de eerste plaats is er de vestiging van een exotische nieuwkomer, de brakwaterkorfschelp (*Potamocorbula amurensis*) die in 2018 voor het eerst is vastgesteld in de Zeeschelde (meteen ook de eerste vondst in Europa, Dumoulin & Langeraert, 2020). +De soort breidt sindsdien sterk uit hoewel ze in 2021 en 2022 niet meer voorkwam in de intertidale stalen, maar wel nog talrijker werd in het subtidaal (zie Figuur \@ref(fig:070-figuur13d)). +Het zwaartepunt van de niche van de brakwaterkorfschelp ligt waarschijnlijk vooral in de (ondiepe?) subtidale zone, en minder in het (laag) intertidaal. +Zoals eerder aangehaald is de standaard staalnamemethode met kleine steekbuis in het intertidaal niet aangepast aan het bemonsteren van bivalven en het bepalen van hun densiteiten, zeker in de zones waar de dichtheden lager zijn. +Vanaf 2023 worden ook grotere steekbuis stalen genomen en zullen de schattingen betrouwbaarder worden. +We zijn daarom terughoudend bij de interpretatie van de - voorlopig éénjarige - terugval in intertidale biomassa in de zone Saliniteitsgradiënt, vooral omdat we subtidaal wel nog steeds een verdere toename zien van bivalven. +Naast de brakwaterkorfschelp deden ook andere bivalven het opvallend goed de laatste jaren, met hoge aantallen van het Nonnetje (*Macoma balthica*) in 2020, en vooral een hoge biomassa dichtheid van de Platte slijkgaper in 2021 (*Scrobicularia plana*) (zie Figuur \@ref(fig:070-figuur13c)). +In hoeverre dit een toevalstreffer was zal hopelijk duidelijker worden nadat we de stalen van 2023 verwerkt hebben. +Zowel in 2021 als 2022 vinden we kleine aantallen van de Amerikaanse strandschelp, (*Mulinia lateralis*), een andere recent gevestigde exoot die waarschijnlijk uitbreidt. + +De evaluatiegrenswaarde, 30 ton AFDW in het intertidaal van de Zeeschelde (EMSE 2021), werd in 2022 (22.81 ton droge stof) niet meer gehaald. +Sinds 2019 is er een sterke afname van de biomassa van voornamelijk Oligochaeta in de zone Zoet kort verblijf. +In het Oligohalien was de biomassa tijdelijk hoger in de periode 2011-2017, maar is sindsdien ook structureel laag. +In 2022 is er geen enkele zoete of oligohaliene zone waar nog een hoge biomassa gehaald wordt, behalve in de tijarm Gentbrugge-Melle (al is de piek ook hier voorbij). +Geen van de zoete of oligohaliene deelgebieden halen hun gebiedsspecifieke kwaliteitsgrens. +Ook de globale evaluatieparameter wordt dit jaar niet gehaald, wat echter vooral te wijten is aan de plotse terugval in biomassa van de zone sterke Saliniteitsgradiënt. +Dit is veruit de grootste zone in fysiotoopoppervlaktes, zodat toevalseffecten hier sterk uitvergroot worden. +INBO heeft haar staalnamestrategie hierop al aangepast, dus het is vooral uitkijken nu of deze trend in 2023 met betere data kan bevestigd of weerlegd worden. + +```{r 070-figuur13b, fig.cap=caption_regressie13b, out.width="70%"} +caption_regressie13b <- "Jaarlijkse systeembiommassa (ton droge stof) voor de 7 belangrijkste Taxon groepen in de Zeeschelde. Deze groepen bevatten jaarlijks samen meer dan 95\\% van de systeembiomassa in de Zeeschelde. De toename van de Bivalvia is vrijwel volledig te wijten aan de de brakwaterkorfschelp " + +knitr::include_graphics(paste0(pad_figuren, "PopTaxgroep_ZS.jpg")) +``` + +
+ +```{r 070-figuur13c, fig.cap=caption_regressie13c, out.width="70%"} +caption_regressie13c <- "Jaarlijkse systeembiommassa (ton droge stof) voor de belangrijkste tweekleppigen (Bivalvia) in het intertidaal van de Zeeschelde. Deze soorten bevatten jaarlijks samen meer dan 95\\% van de systeembiomassa in de intertidale Zeeschelde. " + +knitr::include_graphics(paste0(pad_figuren, "BIVsoortenINTER_ZS.jpg")) +``` + +
+ +```{r 070-figuur13d, fig.cap=caption_regressie13d, out.width="70%"} +caption_regressie13d <- "Jaarlijkse systeembiommassa (ton droge stof) voor de belangrijkste tweekleppigen (Bivalvia) in het subtidaal van de Zeeschelde. Deze soorten bevatten jaarlijks samen meer dan 95\\% van de systeembiomassa in de subtidale Zeeschelde." + +knitr::include_graphics(paste0(pad_figuren, "BIVsoortenSUB_ZS.jpg")) +``` + +
+ +#### Soortenrijkdom + +Volledige determinatie aan de hand van BS- en OID-stalen gebeurt elke drie jaar (2008, 2011, 2014, 2017, 2020). +De soortenrijkdom lijkt daarom cyclisch hoger, behalve na 2018 in de zijrivieren omdat hier enkel nog driejaarlijks bemonsterd wordt in de OID-jaren (niet in Durme en Rupel - deze worden wel jaarlijks bemonsterd), en de soortenrijkdom dus structureel hoger lijkt.\ +Een overzicht van de soortenrijkdom voor de verschillende waterlichamen en de verschillende jaren per tidale zone (inter-, sub-) staat in de figuren \@ref(fig:070-figuur15) en \@ref(fig:070-figuur15b). +Het onderzoeksjaar 2022 was geen OID jaar, dus de de soortenrijkdom is exclusief de soortenrijkdom van Oligochaeta. + +In vrij veel zones ligt de soortenrijkdom de laatste 2-3 onderzoeksjaren iets hoger dan in vergelijkbare jaren (zonder OID) de voorbije periode. +Mogelijke oorzaken zijn het steeds toenemend aantal exotische soorten en de uitzonderlijke droogteperioden die mogelijks marinisatie van de Zeeschelde veroorzaakten. +Vooral in de zone Saliniteitsgradiënt zien we vrij consistent een hogere soortenrijkdom. +Apart onderzoek is nodig om het relatief belang van exoten in de Zeeschelde te duiden. +Opvallend is dat enkel in het Oligohalien en de Rupel de taxa rijkdom vaak hoger is in het subtidaal dan in het intertidaal (Oligochaeta niet meegeteld). +Dit patroon is stabiel in de tijd maar een reden ervoor is niet gekend. + +```{r 070-figuur15, fig.cap=caption_regressie15, out.width="100%"} +caption_regressie15 <- "Staalgemiddelde soortenrijkdom (boxplots; mediaan, IQrange) per waterlichaam doorheen de tijd. De Oligochaeta worden niet steeds gedetermineerd en werden als 1 taxon beschouwd, behalve in de jaren 2008, 2011, 2014, 2017 en 2020. De jaren onderling vergelijken kan dus enkel tussen deze opgesomde jaren, en tussen de tussenliggende jaren." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-soortenrijkdom-Zeeschelde.jpg")) +``` + +```{r 070-figuur15b, fig.cap=caption_regressie15b, out.width="100%"} +caption_regressie15b <- "Soortenrijkdom per waterlichaam doorheen de tijd. De Oligochaeta worden niet steeds gedetermineerd en werden als 1 taxon beschouwd, behalve in de jaren 2008, 2011, 2014, 2017 en 2020. De jaren onderling vergelijken kan dus enkel voor deze opgesomde jaren, en voor de tussenliggende jaren. De zone Zoet kort verblijf wordt hier getoond exlusief de tijarmen." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-soortenrijkdom-lijn-Zeeschelde.jpg")) +``` + +
+ +#### Soortendiversiteit Shannon-index + +De Shannon diversiteit is een relatief nieuwe evaluatieparameter (EMSE 2021). +Ze wordt berekend op zowel biomassa (g droge stof AFDW/m²) als op aantallen van het macrozoöbenthos. +De Oligochaeta werden overheen alle jaren als één taxon beschouwd. +We berekenden de Shannon diversiteit voor de vier saliniteitszones van de Zeeschelde (niveau 3) en voor de totale Zeeschelde. +De evolutie van deze parameter overheen de jaren per tidale zone (inter-, sub-) staat in de figuren \@ref(fig:070-figuur16) en \@ref(fig:070-figuur17). + +De Shannon indices voor het intertidaal zijn vrij stabiel doorheen de tijd. +De Zeeschelde als geheel en de zone sterke Saliniteitsgradiënt hebben intertidaal een hogere Shannon diversiteit dan de overige zones, die vrij laag scoren. +Voor Oligohalien biomassa en densiteiten en voor de overige zones enkel voor de densiteiten, is er grosso-modo een toenemende trend sinds 2015 van de Shannon-diversiteit. + +De patronen in het subtidaal zijn behoorlijk erratisch in vergelijking met deze voor het intertidaal. +Door de veel lagere densiteit en biomassadichtheid in het subtidaal is de invloed van toeval op de Shannon diversiteit er vermoedelijk relatief groter. +Met wat goede wil is ook hier een opvering van de Shannon index in de deelgebieden merkbaar sinds 2015, maar variatie tussen de jaren is groot. +Een opmerkelijk patroon is te zien subtidaal in de zone sterke Saliniteitsgradiënt: bij densiteiten is er een toename, terwijl er voor biomassa een sterke afname van de Shannon diversiteit is. +Waarschijnlijk is dit te wijten aan de opkomst en tegenwoordig dominantie van de brakwaterkorfschelp (Dumoulin & Langeraert, 2020). +In 2022 vertoonden de overige subtidale Shannon-indices overwegend een neerwaartse trend, maar evaluatie gebeurt best op langjarige tijdsreeksen bij deze variabele parameter. + +```{r 070-figuur16, fig.cap=caption_regressie16, out.width="100%"} +caption_regressie16 <- "Shannon diversiteit per waterlichaam en voor de volledige Zeeschelde voor het intertidaal doorheen de tijd. De Shannon diversiteit werd zowel berekend op densiteiten (aantallen/m²) als voor biomassa (g/m²). De Oligochaeta worden niet steeds gedetermineerd en werden als 1 taxon beschouwd." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-Shannondiv-intert-Zeeschelde.jpg")) +``` + +```{r 070-figuur17, fig.cap=caption_regressie17, out.width="100%"} +caption_regressie17 <- "Shannon diversiteit per waterlichaam en voor de volledige Zeeschelde voor het subtidaal doorheen de tijd. De Shannon diversiteit werd zowel berekend op densiteiten (aantallen/m²) als voor biomassa (g/m²). De Oligochaeta worden niet steeds gedetermineerd en werden als 1 taxon beschouwd." + +knitr::include_graphics(paste0(pad_figuren, "070-figuur-Shannondiv-subt-Zeeschelde.jpg")) +``` + +
+ +## Algemene conclusie + +**De soortenrijkdom** + +De soortenrijkdom (exclusief Oligochaeta) lijkt de laatste paar jaren licht te stijgen in verschillende waterlichamen van de Zeeschelde, met name de zone Zoet kort verblijf en sterke Saliniteitsgradiënt. +In de laatste zone zijn recent een aantal soorten (deels exotische) tweekleppigen toegenomen en is er mogelijk marinisatie gaande, waardoor soorten die normaal in de Westerschelde voorkomen nu meer in de Zeeschelde opduiken. +Verder is nader onderzoek nodig om het toenemend belang van exoten in de Zeeschelde in kaart te brengen. + +**De Shannon diversiteit** + +De Shannon diversiteit is een nieuwe EMSE evaluatieparameter die in 2022 voor het eerst gerapporteerd werd (Van Ryckegem et al. 2022). +Het gedrag van deze parameter en hoe deze best te interpreteren is nog onderhevig aan voortschrijdend inzicht. +Een eerste beoordeling gaf aan dat deze parameter vrij sterke fluctuaties vertoont en mogelijk minder goed bruikbaar is in de subtidale zone, door het erratisch verloop van de parameter overheen de jaren. +Waarschijnlijk is dit gelinkt aan de lagere densiteiten macrozoöbenthos in deze zone, en grotere toevalseffecten bij de standaard bemonstering. +De Shannon diversiteit in het intertidaal is in de meeste zones behalve sterke Saliniteitsgradiënt heel laag. +Dit is te wijten aan de dominantie van 1 taxon (Oligochaeta). +Omdat Oligochaeta slechts om de drie jaren tot op soort gedetermineerd worden, wordt deze diversiteit niet in rekening gebracht, en dus onderschat. +Sinds 2015 zien we dat de Shannon-diversiteit overal is toegenomen en de verschillen tussen deelgebieden kleiner worden. +Dit is het meest duidelijk in de oligohaliene zone. +Subtidaal is er in de zone met sterke Saliniteitsgradiënt recent een duidelijke toename in diversiteit gebaseerd op aantallen, maar een gelijktijdige sterke afname in diversiteit gebaseerd op biomassa. +Dat laatste fenomeen is wellicht te wijten aan de opkomst en momenteel sterke dominantie van de brakwaterkorfschelp. + +**De systeembiomassa** + +Na een periode van drie jaren waarin het kwaliteitscriterium voor de systeembiomassa vlot gehaald werd, zakte deze in 2022 weer (ver) onder de kritische grens van 30 ton droge stof voor het intertidaal van de Zeeschelde (22.8 ton). +De periode waarin zeer hoge densiteiten en biomassa Oligochaeta in de zoete en oligohaliene zones een grote bijdrage hadden aan de systeembiomassa ligt als even achter ons. +Tijdelijke bloeiperiodes van Oligochaeta, zoals in de zone Zoet kort verblijf en de aanliggende tijarm Gentbrugge-Melle in 2018-2019 doven nu uit. +In al de zones waarin Oligochaeta de dominante groep zijn (zoet en oligohalien) halen we de lokale kwaliteitscriteria ruim niet. +De totale systeembiomassa van het intertidaal macrozoöbenthos werd recent vooral bepaald door de zone Saliniteitsgradiënt, en werd aangestuurd door een plotse toename van tweekleppigen en de vestiging van een exotische soort, de brakwaterkorfschelp. +Deze laatste soort komt vooral subtidaal voor, en heeft net als de andere tweekleppigen lagere densiteiten in het (laag) intertidaal. +De standaard staalnamemethode met een kleine steekbuis is minder geschikt om in dergelijke situaties macrozoöbenthos densiteiten te bepalen, met een grotere onzekerheid op de biomassa bepaling en grotere, betekenisloze verschillen tussen opeenvolgende jaren als gevolg. +De sterke daling van de biomassa droge stof in de zone Saliniteitsgradiënt, en daardoor een terugval onder de kritische grens voor het systeem Zeeschelde, is dus mogelijk een sampling effect. +Een indicatie dat het om een sampling effect gaat, is dat in het subtidaal er wel een verdere toename van benthosbiomassa werd vastgesteld. +Om de impact van dit potentieel methodologisch artefact te verminderen, en de staalnamemethode aan te passen aan de nieuwe situatie waarin tweekleppigen talrijk voorkomen in de Zeeschelde, voegde INBO vanaf 2023 een extra staalname met grote steekbuis toe aan het moneos protocol voor de zone Saliniteistgradiënt. +Bij de volgende rapportage in 2025 zullen de resultaten hiervan besproken worden, en zal met meer betrouwbare data kunnen beoordeeld worden hoe de systeembiomassa evolueert. + +## Referenties + +Dumoulin E., & Langeraert W. +(2020). +De brakwaterkorfschelp *Potamocorbula amurensis* (Schrenck, 1861) (Bivalvia, Myida, Corbulidae), een nieuwkomer in het Schelde-estuarium; of het begin van een lang verhaal. +Inleiding. +De Strandvlo 40: 113–172. + +Nichols F., Thompson J. +& Schemel L. +(1990). +Remarkable invasion of San Francisco Bay (California, USA), by the Asian clam *Potamocorbula amurensis*. +II, Displacement of a former community. +Marine Ecology Progress Series 66: 95–101. + +Van Hoey G., Drent J. +& Ysebaert T. +(2007). +The Benthic Ecosystem Quality Index (BEQI), intercalibration and assessment of Dutch coastal and transitional waters for the Water Framework Directive - Final Report. +NIOO report 2007-02. + +Van Ryckegem G., Vanoverbeke J., Van Braeckel A., Van de Meutter F., Mertens W. Mertens A. +& Breine J. +(2021). +MONEOS-Datarapport INBO: toestand Zeeschelde 2020. +Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (47). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.52484672. + +Van Ryckegem G., Vanoverbeke J., Van Braeckel A., Van de Meutter F., Mertens W. Mertens A. +& Breine J. +(2021). +MONEOS-Datarapport INBO: toestand Zeeschelde 2020. +Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (47). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.52484672. diff --git a/moneos_2024/150_geintegreerd_rapport/080_hyperbenthos.Rmd b/moneos_2024/150_geintegreerd_rapport/080_hyperbenthos.Rmd new file mode 100644 index 0000000..3430c5c --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/080_hyperbenthos.Rmd @@ -0,0 +1,319 @@ +--- +editor_options: + markdown: + wrap: sentence +--- + +```{r 080-hoofdstuk, include=FALSE} + +hoofdstuk <- "080_hyperbenthos" + +``` + +```{r 080-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 080-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) ## workaround pad + +``` + +```{r 080-pad} + +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") +``` + +```{r 080-meta_data} +##metadata nog niet aangepast in 2022, wat moet dat zijn? +#meta_data <- + # read_delim(paste0(pad_data, "meta_data.csv"), + # delim = ";") + +#for(i in 1:nrow(meta_data)){ + ##first extract the object value + # tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + # eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +#} +``` + +# Hyperbenthos + +Fichenummer: S-DS-V-003 - Hyperbenthos + +**Frank Van de Meutter**, Jan Soors, Dimitri Buerms, Olja Bezdenjesnji, Charles Lefranc, Vincent Smeekens, Ada Coudenys + +## Inleiding + +Onder hyperbenthos verstaan we alle kleine fauna (1 mm tot enkele cm) die op en net boven de bodem leeft. +In de Zeeschelde betreft het vooral garnalen en krabben (Decapoda), aasgarnalen (Mysida) en juveniele vis. +De monitoring van het hyperbenthos in de Zeeschelde op zes vaste locaties startte in 2013. +Vóór die periode gebeurden op (sommige) van deze zes stations al vangsten met een andere frequentie (zie verder) maar dezelfde methode. +Voor de volledigheid worden deze gegevens mee aangeleverd. + +De gegevens van 2008 tot en met 2023 worden geleverd in een Excel-bestand (S_DS_V_003_hyperbenthos_data2013-2023_rapportage2024.xlsx). + +## Materiaal en methode + +### Strategie + +Vijf vaste locaties langsheen de Zeeschelde en één langs de Rupel worden maandelijks bemonsterd van april tot oktober. +Deze ruimtelijke en temporele spreiding is nodig om een beeld te te kunnen schetsen van de jaarlijkse toestand van het hyperbenthos in de Zeeschelde. + +```{r 080-figuur10-kaart, fig.cap=caption_fig1kaart, fig.height=3, fig.width=4.5, out.width="80%"} +caption_fig1kaart <- "Situering staalnamelocaties hyperbenthos. Sampling stations worden aangeduid door een driehoek, het cijfer in de driehoek is de afstand tot de monding (km). Naamgeving: M1=Paardenschor, M2=St. Anna, O1=Ballooi, O2=Rupel, F1=Dendermonde, F2=Brede Schoren." + + +knitr::include_graphics(paste0(pad_figuren, "080-Kaart_hypersamplings.png")) +``` + +
+ +### Staalname + +De bemonstering gebeurt telkens rond het laagwatertijdstip in de dagen rond springtij. +Twee personen slepen een net met cirkelvormige opening (diameter: 50 cm) over een vast traject van 2 x 100 m (heen en terug). +Het net heeft een maaswijdte van 1 mm. +Een stroomsnelheidsmeter wordt in het net opgehangen om het watervolume dat door het net gaat (en dat bemonsterd werd) te kwantificeren. +Na de sleep wordt de vangst gefixeerd met F-Solv. +Bijkomende metingen van omgevingsvariabelen worden verricht met een multimeter ter bepaling van de saliniteit, het zuurstofgehalte en de watertemperatuur en de gemeten waarden worden genoteerd. +Per bemonstering wordt een waterstaal verzameld om het gehalte aan zwevende stof en de organische fractie ervan achteraf te bepalen. +Dit staal wordt bij laag water rond de waterkering genomen waarbij de persoon op heupdiepte in het water staat en water verzamelt op ca. +20 cm onder het wateroppervlak. + +### Verwerking + +De stalen worden in het labo gespoeld over een 1mm-zeef en alle organismen worden uitgeselecteerd, tot op soort gedetermineerd (tenzij dat niet mogelijk is, in dat geval tot op maximale taxonomische resolutie) en per soort geteld. +Als finale variabele voor analyse werden vroeger de getelde aantallen gestandaardiseerd naar aantal per m³ door te delen door het gemeten watervolume dat door het net is gegaan, indien gegevens over dit volume beschikbaar zijn. +Deze correctie is echter niet aangewezen voor organismen die op de bodem leven (epibenthische soorten, bijvoorbeeld veel garnalen), omdat hun aantallen en biomassa in relatie tot de lengte van het transect staan, en niet in relatie tot het bemonsterd watervolume. +De vangstmethode zelf is bovendien zo opgesteld dat het watervolume bij elk vangbeurt zeer vergelijkbaar is: er wordt gevangen bij de tijkering met minimale stroming, en er wordt een gelijke lengte stroomop- en stroomaf gewandeld met het bongonet (zodat eventuele verschillen als gevolg van stroming elkaar opheffen). +De stroomsnelheidsmeters geven bovendien een minder accuraat beeld wanneer het net zeer traag getrokken wordt of bij frequente stops (bij moeilijk bewandelbare bodems) en wanneer het net stroomafwaarts getrokken wordt (lage effectieve stroming door het net). +In deze gevallen werden onderschattingen tot 30% van het bemonsterd watervolume opgemerkt (INBO, niet gepubliceerde gegevens). +Al deze argumenten samen leidden ons tot de conclusie dat het met de gebruikte vangstmethode en de grote vertegenwoordiging van epibenthische taxa wellicht correcter is om uit te gaan van een vast vangvolume van 40m³. +In deze en volgende rapportages gebruiken we daarom de niet-gecorrigeerde vangstaantallen en biomassa (per 40m³). + +Ter bepaling van de biomassa worden de dieren vervolgens per soort verzameld in een kroes, gedroogd, gewogen (ter bepaling van droog gewicht), verast en opnieuw gewogen (ter bepaling van het asgewicht, AFDW) (zie procedure biomassabepaling macrobenthos). + +## Resultaten: data-analyse hyperbenthos + +### Densiteiten + +Het seizoenaal verloop van de densiteiten van hyperbenthos (alle soorten) voor elk van de staalnamejaren sinds 2013 wordt voor elk staalnamestation apart weergegeven in Figuur \@ref(fig:080-figuur2-dens). +Het seizoenaal patroon - hoewel inherent heel erratisch en afhankelijk van natuurlijke variatie in recruteringssucces en recente bovenafvoer (De Neve et al. 2020) - verloopt steeds min of meer volgens hetzelfde patroon, met een piek in het vroege voorjaar (april-mei) en een dip in juni, waarna er een blijvende toename dan wel korte piek en een afname volgen afhankelijk van de locatie. +Dit patroon werd ook gevolgd in 2023, al duurde de zomerdip in veel gebieden tot augustus. + +```{r 080-figuur2-dens, fig.cap=caption_fig2dens, out.width="100%"} +caption_fig2dens <- "Gemiddelde densiteit per 200m sleep (lijn) van hyperbenthos per maand (maandnummers), jaar en staalname station (opgelet: y-as heeft een log10-schaal). De dikke lichtblauwe lijn is het rapportagejaar" + +knitr::include_graphics(paste0(pad_figuren, "080-figuur-densiteit_totaal-gebied-maandverloop_jaren.jpg")) +``` + +
+ +```{r 080-figuur3-dens, fig.cap=caption_fig3dens, out.width="80%"} +caption_fig3dens <- "Gemiddelde densiteit (per sleepvangst, lijn) aan hyperbenthos overheen alle sampling stations per maand (maandnummers) voor de verschillende monitoringsjaren (opgelet: y-as heeft een log10-schaal). Dikke lichtblauwe lijn is rapportagejaar" + +knitr::include_graphics(paste0(pad_figuren, "080-figuur-densiteit_totaal-ZS-maandverloop_jaren.jpg")) +``` + +
+ +De evolutie van de jaarsom (april-oktober) en het lopend gemiddelde van de jaarsom overheen drie jaren van de hyperbenthosdensiteiten in de gehele Zeeschelde en voor drie verschillende compartimenten (Sterke Saliniteitsgradiënt, Oligohalien en de Zoete zone) staat in Figuur \@ref(fig:080-figuur4-dens). +Het patroon van de totale densiteiten voor de Zeeschelde wordt sterk bepaald door deze van de zone Sterke Saliniteitsgradiënt. +Er is vrij veel variatie in de densiteiten tussen de jaren, met een opvallende algemene toename in 2020, maar een sterke terugval in 2021 (als gevolg van een zeer natte zomer en herfst), behalve in de zoete zone. +Veranderingen in het lopende gemiddelde sinds 2015 overschrijden vaak de vooropgestelde kwaliteitsgrens van 25% (EMSE 2021). +De laatste verandering in het driejarige gemiddelde is opnieuw negatief, en de densiteiten en het driejaarlijkse gemiddelde van de densiteiten bereikten hun laagste punt sinds de start van de monitoring. +Hyperbenthos densiteiten kunnen jaarlijks sterk wisselen in de Zeeschelde, vermoedelijk deels natuurlijk en deels door omgevingsvariabelen die (mee) door de mens bepaald worden (bv. zwevende stof gehaltes). +Ook doorheen het jaar kunnen densiteiten plots veranderen vooral omwille van plotse debietwijzigingen (De Neve et al. 2020). +Hyperbenthos is dus inherent een volatiele groep in de Zeeschelde. +Daarbij komt nog dat de monitoring voor de drie deelzones elk slechts gebaseerd is op 2 stations. +Dit draagt verder bij tot de vrij grote variatie tussen opeenvolgende meetjaren en meetmaanden. +Daar tegenonver staat dat herhaalde, en systeemwijde negatieve trends, wel duidelijke indicaties zijn voor kwaliteitsverlies. + +```{r 080-figuur4-dens, fig.cap=caption_fig4dens, out.width="100%"} +caption_fig4dens <- "Gemiddelde jaarsom van densiteiten van het hyperbenthos per deelzone en voor de volledige Zeeschelde. Het lopend gemiddelde (overheen 3 jaren) wordt weergegeven door een rode lijn. Door enkele ontbrekende maandvangsten in 2013 wordt dit jaar niet getoond. Let op: de y-assen verschillen onderling. " + +knitr::include_graphics(paste0(pad_figuren, "080-figuur-densiteit_ZS_jaarverloop_zones1.jpg")) +``` + +
+ +### Biomassa + +Het maandelijks verloop van de biomassa hyperbenthos per jaar en per station staat in Figuur \@ref(fig:080-figuur5-biom). +In de meeste stations behalve het Paardenschor is er doorheen het jaar een toename van de biomassa aan hyperbenthos. +Deze toename zien we niet voor de densiteiten. +Het hyperbenthos wordt dus groter en zwaarder doorheen het seizoen, wat wijst op het belang van de Zeeschelde als opgroeigebied. +Net daar lijkt het dat er een probleem was in 2023: de biomassa-aangroei was afwezig of zeer beperkt in 2023. +We noteerden in 2023 heel uitzonderlijk een volledige afwezigheid van de langneussteurgarnaal (*Palaemon longirsotris*) in de zoete en oligohaliene zone (zie verder). +Deze soort is vaak een bulksoort onder het hyperbenthos in de late zomer en herfst. +Er zijn vaak zeer grote verschillen tussen opeenvolgende staalnames op 1 station, wat waarschijnlijk op sterke mobiliteit van het hyperbenthos wijst, mogelijk als respons op hydrologische veranderingen. + +```{r 080-figuur5-biom, fig.cap=caption_fig5biom, out.width="100%"} +caption_fig5biom <- "Gemiddelde biomassa (per 40m³, lijn) aan hyperbenthos per maand (maandnummers), jaar en staalname station." + +knitr::include_graphics(paste0(pad_figuren, "080_figuur_biomassa_gebied_maandverloop_jaar.jpg")) +``` + +
+ +De evolutie van de gemiddelde jaarsom biomassa en het lopende gemiddelde overheen drie jaren per deelzone en voor de gehele Zeeschelde staat in Figuur \@ref(fig:080-figuur6-biom). +Het lopend gemiddelde werd toegevoegd aan de standaard evaluatieparameter biomassa vanwege de grote verschillende tussen de jaren. +Na een zeer goed 2018 voor alle zones stroomopwaarts van de Sterke Saliniteitsgradiënt noteerden we sindsdien normale tot eerder slechte jaren voor totale biomassa. +Het lopende gemiddelde van de biomassa bleef doorgaans binnen de 25% variatie sinds 2015 (EMSE 2021), behalve voor de zoete zone waar - als gevolg van een zeer goed 2018 - er een tijdelijke toename was. +De jaren met (lokaal) extreem hoge biomassa (2017, 2018) buiten beschouwing gelaten is het langjarig verloop van de biomassa doorheen de tijd eerder negatief. + +```{r 080-figuur6-biom, fig.cap=caption_fig6biom, out.width="100%"} +caption_fig6biom <- "De evolutie van de gemiddelde jaarsom biomassa (g droge stof per 40m³) per sleepvangst en haar lopend gemiddelde overheen drie jaren per deelzone en voor de gehele Zeeschelde." + +knitr::include_graphics(paste0(pad_figuren, "080-figuur-biomassa_ZS_jaarverloop_zones.jpg")) +``` + +Hoeveel bepaalde soorten elk jaar bijdragen tot de systeembiomassa wordt afgebeeld in Figuur \@ref(fig:080-figuur7-biomspec). +De langneussteurgarnaal (*Palaemon longirostris*) was in 2018 en 2019 de belangrijkste soort in de Zeeschelde wat betreft biomassa. +In 2020 was dit de aasgarnaal *Mesopodopsis slabberi*, een soort die haar optimum in de brakke zone van de Schelde heeft en maar net tot in de Zeeschelde voorkomt. +Deze soort werd in 2020 één keer in uitzonderlijke aantallen gevangen in het Paardenschor. +Het jaar 2021 was een uitzonderlijk jaar voor bot (*Platichthys flesus*) met meer dan een kwart van de totale biomassa. +Dit hoge aandeel was echter ook te wijten aan een lage presentie van andere taxa. +Voor 2022 valt een hoge biomassa op voor brasem *Abramis brama*. +Verder valt op dat Spiering *Osmerus eperlanus* in de eerste drie monitoringsjaren vrij goed vertegenwoordigd was, maar sindsdien een veel kleinere bijdrage tot de systeembiomassa hyperbenthos levert. +Het onderzoeksjaar 2023 was erg bijzonder. +Er was de volledige afwezigheid (op 1 exemplaar in de zone sterke Saliniteitsgradiënt na) van de langneussteurgarnaal. +Dit was nog niet eerder voorgevallen. +Grijze garnalen werden in gemiddelde hoge biomassa dichtheden gevangen, wat enigzins contrasteert met de historisch lage dichtheden van deze soort in de Noordzee in 2023. + +```{r 080-figuur7-biomspec, fig.cap=caption_fig7biomspec, out.width="100%"} +caption_fig7biomspec <- "Procentuele bijdrage van de 8 belangrijkste soorten tot de totale biomassa in de Zeeschelde op basis van 6 staalname locaties. De overige taxa zitten vervat in de rest-groep." + +knitr::include_graphics(paste0(pad_figuren, "080_figuur_biomassa_biomassa_perc_soorten_perjaar.jpg")) +``` + +
+ +Langjarige trends in de verschillende saliniteitszones voor zes talrijke typische hyperbenthische soorten staan in Figuur \@ref(fig:080-figuur7b-biomspec). +Uit deze figuur blijkt dat in 2023 geen enkele taxon in grote biomassadichtheden voorkwam. +Grijze garnaal is sinds 2018 sterk afgenomen maar handhaaft zich in de zone Saliniteitsgradiënt in matige densiteiten. +In erg droge jaren met lage bovenafvoer verplaats het zwaartepunt van de verspreiding van deze soort meer naar het oligohalien. +In 2023 waren zeer lage densiteiten aasgarnalen aanwezig, een belangrijk voedselitem voor vissoorten. +De vissoorten bot en brakwatergrondel kwamen in vrij normale dichtheden voor maar meest opvallend is de eerder aangehaalde totale afwezigheid van één van de belangrijkste hyperbenthische soorten in de Zeeschelde - de langneussteurgarnaal. + +(Figuur \@ref(fig:080-figuur6-biom)). + +```{r 080-figuur7b-biomspec, fig.cap=caption_fig7bbiomspec, out.width="100%"} +caption_fig7bbiomspec <- "Jaarbiomassa AFDW van 2 locaties (g per 540m³ per jaar) voor drie saliniteitszones voor zes talrijke typische hyperbenthische taxa voor de periode 2014-2023." + +knitr::include_graphics(paste0(pad_figuren, "080-figuur-biomassa_soorten_jaren.jpg")) +``` + +
+ +#### Soortenrijkdom + +De evolutie van de taxarijkdom overheen de monitoringsjaren is deelzone-specifiek (Figuur \@ref(fig:080-figuur8)). +Verschillen tussen jaren kunnen groot zijn zoals voor het Oligohalien in 2019 en 2020 (14 soorten ofwel 45% verschil). +Voor de gehele Zeeschelde zijn deze jaarlijkse verschillen kleiner (Figuur \@ref(fig:080-figuur9)). +Het onderzoeksjaar 2023 kende een lager aantal soorten dan 2022. +Een toename in soortenrijkdom in de Zeeschelde is bijna altijd het gevolg van de aankomst van nieuwe exotische taxa of soorten die doorgaans in de Westerschelde voorkomen en uitzonderlijk in de Zeeschelde opduiken. +Daarom wordt de toename in soortenrijkdom vooral gestuurd vanuit de zone Saliniteitsgradiënt (exoten duiken meestal op in de omgeving van de haven of in brakke gebieden). +In recente droge jaren met lage bovenafvoer en een hogere saliniteit in de Zeeschelde worden meer en vaker soorten uit de Westerschelde in de Zeeschelde gezien. + +```{r 080-figuur8, fig.cap=caption_fig8, out.width="100%"} +caption_fig8 <- "Taxa rijkdom per jaar per deelzone van de Zeeschelde." + +knitr::include_graphics(paste0(pad_figuren, "080_figuur_soortenrijkdomZS_perjaarzon.jpg")) +``` + +
+ +```{r 080-figuur9, fig.cap=caption_fig9, out.width="80%"} +caption_fig9 <- "Taxa rijkdom hyperbenthos in de Zeeschelde met (links) en zonder (rechts) exoten." + +knitr::include_graphics(paste0(pad_figuren, "080_figuur_soortenrijkdomZS_perjaar.jpg")) +``` + +
+ +#### Soortendiversiteit Shannon-index + +De Shannon diversiteit is een nieuwe evaluatieparameter die in 2022 voor het eerst gerapporteerd werd. +Ze wordt berekend voor zowel biomassa als aantallen van het hyperbenthos. +We berekenen ze voor drie deelzones van de Zeeschelde en voor de gehele Zeeschelde. +De evolutie van deze parameter overheen de jaren voor zowel densiteiten als biomassa staat in de figuur \@ref(fig:080-figuur10). +In lijn met de eerder gerapporteerde sterke jaarlijkse verschillen in densiteiten en biomassa van hyperbenthos vinden we ook sterke jaarlijkse verschillen in de Shannon diversiteits-index. +Enkele hyperbenthos soorten dringen in drogere jaren in grote aantallen verder stroomopwaarts door in de Zeeschelde. +Het tijdelijk talrijk verschijnen van een soort heeft een disruptieve invloed op de Shannon index. +Net doordat in 2023 geen enkele van de bulksoorten talrijk voorkwam, had dit een positieve invloed op de Shannon-diversiteit van densiteiten. +Het meest opvallende patroon in de figuren is de toename van Shannon-diversiteit, vooral voor densiteiten en in mindere mate ook voor biomassa. + +```{r 080-figuur10, fig.cap=caption_fig10, out.width="100%"} +caption_fig10 <- "Shannon diversiteit per deelzone en voor de volledige Zeeschelde voor de verschillende monitoringsjaren. De shannon diversiteit werd zowel berekend op densiteiten als voor biomassa." + +knitr::include_graphics(paste0(pad_figuren, "080_figuur_shannon.jpg")) +``` + +
+ +## Algemene conclusie + +**Densiteiten en biomassa** + +Het hyperbenthos van de Zeeschelde kent sinds het begin van de monitoring in 2013 gemiddeld genomen een vrij typisch verloop van densiteiten doorheen het jaar, met een voorjaarspiek gevolgd door een dip in juni waarna de aantallen weer enigszins toenemen en vervolgens verder aflopen naar het einde van het jaar toe. +Biomassa vertoont een ander patroon met in de zones stroomopwaarts van Antwerpen een gestage toename na juni tot het einde van het jaar. +Dit bevestigt de aanname dat dit voor veel hyperbenthische soorten en vooral voor garnalen, aasgarnalen en vissen, een opgroeigebied is. +De evolutie van densiteiten en biomassa overheen de monitoringsjaren is onderhevig aan grote schommelingen, die samen hangen met goede en slechte jaren van specifieke soorten. +Het optreden van goede of slechte jaren kan soms gelinkt worden aan bovenafvoer en zoutgehalte, maar is ook vaak nog niet goed begrepen. +Het onderzoeksjaar 2023 was opnieuw geen goed jaar voor hyperbenthos, met erg lage densiteiten van aasgarnalen, en een quasi afwezigheid van de doorgaans zeer talrijke langneussteurgarnaal. +Het gevolg is dat de langjarige eerder neutrale trend voor hyperbenthos densiteiten en vooral biomassa steeds meer negatief oogt. +We noteerden dan ook de laagste feitelijke jaarsom en driejarig lopend gemiddelde voor biomassa. + +**De soortenrijkdom** + +Taxa rijkdom van het hyperbenthos in de deelzones van de Zeeschelde schommelde soms aanzienlijk van jaar tot jaar. +Mogelijk wordt ook hier best een lopend gemiddelde gebruikt om evoluties te detecteren. +In 2023 werd een lager aantal taxa vastgesteld dan in 2022 maar op langere termijn stellen we toename vast van de soortenrijkdom. +Redenen daarvoor zijn vermoedelijk de continue nieuwe vestiging van nieuwe exoten en mogelijk ook marinisatie, waarbij soorten uit de Westerschelde (tijdelijk) meer opschuiven naar de Zeeschelde. + +**De Shannon diversiteit** + +De Shannon diversiteit is een nieuwe evaluatieparameter die in 2022 voor het eerst getoond werd. +Met de bovenstaande vaststellingen in het achterhoofd is het geen verrassing dat de Shannon diversiteit, zowel voor densiteiten als voor biomassa, sterke schommelingen vertoonde tussen jaren. +Jaren waarin bepaalde hyperbenthische soorten uitzonderlijk talrijk zijn doen de Shannon diversiteit sterk dalen. +Net daarom scoorde 2023 eerder goed voor wat betreft de diverseit. + +Het is waarschijnlijk deels eigen aan een opgroeigebied als de Zeeschelde dat er extreem succesvolle recruteringsjaren zijn waarin alle factoren mee zitten, en waarin één of enkele soorten de gemeenschap domineren. +Anderzijds is meer ecologische kennis nodig over waarom soorten goede en slechte jaren afwisselen, en om natuurlijke en door de mens beïnvloede oorzaken te kunnen onderscheiden. +Het steeds vaker uitblijven van goede jaren, of het frequenter optreden van zeer slechte jaren voor bepaalde soorten is een verontrustende trend. + +## Referenties + +De Neve L., Van Ryckegem G., Vanoverbeke J., Van de Meutter F., Van Braeckel A., Van den Bergh E., & Speybroeck, J. +(2020). +Hyperbenthos in the upper reaches of the Scheldt estuary (Belgium): Spatiotemporal patterns and ecological drivers of a recovered community. +Estuarine, Coastal and Shelf Science 245: 106967. +DOI: 10.1016/j.ecss.2020.106967. + +Van Ryckegem G., Vanoverbeke J., Van Braeckel A., Van de Meutter F., Mertens W. Mertens A. +& Breine J. +(2021). +MONEOS-Datarapport INBO: toestand Zeeschelde 2020. +Monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (47). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.52484672. diff --git a/moneos_2024/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd b/moneos_2024/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd new file mode 100644 index 0000000..648b1bf --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/090_vissen_inleiding_en_methode.Rmd @@ -0,0 +1,321 @@ +```{r 090-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 090-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 090-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +conflicted::conflicts_prefer(dplyr::filter) + +``` + +```{r 090-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 090-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 090-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "vissen_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) + +aantal_soorten <- + nrow(soortenlijst) + +aantal_soorten_fuiken <- + soortenlijst %>% + filter(!is.na(fuiken)) %>% + nrow() + +aantal_soorten_ankerkuil <- + soortenlijst %>% + filter(!is.na(ankerkuil)) %>% + nrow() + +aantal_soorten_beide <- + soortenlijst %>% + filter(!is.na(fuiken) & !is.na(ankerkuil)) %>% + nrow() + +aantal_soorten_enkel_fuiken <- + aantal_soorten_fuiken - aantal_soorten_beide + +aantal_soorten_enkel_ankerkuil <- + aantal_soorten_ankerkuil - aantal_soorten_beide + +# meta_data <- +# read_delim(paste0(pad_data, "vissen_meta_data.csv"), +# delim = ";") +# +# for(i in 1:nrow(meta_data)){ +# ##first extract the object value +# tempobj=meta_data$waarde[i] +# ##now create a new variable with the original name of the list item +# eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +# } + +``` + +# Vissen + +Fichenummer: FICHE S-DS-V-004a -- Vissen (KRW) + +**Joost Vanoverbeke, Erika Van den Bergh, Gunther Van Ryckegem, Rhea Measle, Gerlinde Van Thuyne, Merlijn Jocque** + +## Inleiding + +De meeste vissen hebben een complexe levenscyclus. +Gedurende hun leven doorlopen ze verschillende niveaus in het voedselweb en bevolken ze diverse ecologische niches. +Estuaria zijn voedselrijk en door de diversiteit aan habitats voorzien ze voedsel en leefruimte voor veel jonge en adulte vissen (Baldoa & Drake, 2002). +Voor veel vissoorten vervullen ze verschillende functies naargelang het levensstadium. +Sommige soorten gebruiken estuaria als paaihabitat (Able, 2005; Van Der Meulen et al., 2013). +De kinderkamerfunctie voor jonge vis werd uitgebreid toegelicht door Elliott & Hemingway (2002). +Maes et al. (2007, 2008) en Stevens et al. (2009) gaan dieper in op de functie van estuaria als doorgangszone voor trekvissen. + +Het bestuderen van de visfauna in de Zeeschelde is belangrijk om de invulling van deze functies te begrijpen en om de ecologische lange termijn ontwikkelingen in het gebied op te volgen. +De Zeeschelde verzamelt een belangrijk deel van de bovenstroomse vuilvrachten. +Opvolging van de visstand in de Zeeschelde weerspiegelt dus ook de kwaliteit van de bovenstroomse gebieden. +De Europese Kaderrichtlijn Water (KRW, 2000/60/EG) verplicht om iedere zes jaar de ecologische toestand van oppervlaktewaterlichamen te rapporteren op basis van enkele bio-indicatoren waaronder de visgemeenschap. +De KRW rapportage gebeurt op basis van de daartoe speciaal ontworpen visindices (Breine et al, 2007; 2010). +In deze MONEOS rapportage wordt de Evaluatie Methodiek Schelde Estuarium (EMSE, 2021) toegepast. + +De visgemeenschap in de Zeeschelde wordt jaarlijks opgevolgd met dubbele schietfuiken en met ankerkuilvisserij (Tabel \@ref(tab:090-tabel-visinspanning)), niet alleen omwille van de dynamiek van het systeem maar ook om het ecosysteem herstel te evalueren na jarenlange plaatselijke en tijdelijke zuurstofloze condities (Maris et al., 2011). +Zesjaarlijkse afvissingen, het absolute minimum voor de KRW, geven te grote lacunes om dit herstelproces te documenteren. +Om seizoenale patronen te documenteren vissen we in de lente, zomer en herfst. + +Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, fuikvisserij bemonstert eerder nabij de bodem. +De resultaten van beide vangstmethoden verstrekken complementaire informatie over de kraamkamerfunctie en rekrutering van de visgemeenschappen in het estuarium doorheen het jaar en in de verschillende saliniteitszones. +Algemeen worden meer soorten gevangen met de ankerkuil. +De resultaten van de fuikvangsten leveren echter een hogere Shannon diversiteit (Breine & Van den Bergh, 2022). +De resultaten van het reguliere INBO meetnet worden aangevuld met extra informatie uit de resultaten van een vrijwilligersmeetnet (hier niet gerapporteerd). +Schietfuiken worden in alle EMSE Scheldezones niveau 3 uitgezet. +Aanvankelijk werd ook op de zijrivieren jaarlijks gevist maar sinds 2012 werd dit verminderd naar driejaarlijks omdat de totale inspanning te groot werd en omdat de ecosysteem evaluatie vooral op de Zeeschelde zelf gericht is. +Ankerkuilvisserij kan enkel uitgevoerd worden in de Zeeschelde tot in de zoete zone met lange verblijftijd omdat de geul verder stroomopwaarts daarvoor te nauw wordt. + +INBO fuikvangst- en ankerkuilgegevens zijn beschikbaar via de V.I.S. databank ([https://vis2.inbo.be/](https://vis2.inbo.be/#home)) (Brosens et al., 2015). +Vrijwilligersdata worden afzonderlijk opgeslagen. + +In de huidige rapportage worden ankerkuil data en fuikgegevens van de Zeeschelde besproken. +***XXXGegevens van de zijrivieren worden later verwerkt en gerapporteerd.XXX*** Ankerkuildata en fuikdata van het reguliere Zeeschelde meetnet worden aangeleverd als xlsx-bestanden aan de Scheldemonitor. + +```{r 090-tabel-visinspanning, results="asis", fig.show='hide', out.width="100%"} +caption_tab <- "Historisch overzicht van de visinspanning met schietfuiken (groen) en ankerkuil (blauw) in de verschillende zones van de Zeeschelde. Schietfuiken worden doorgaans 48 uur uitgezet, soms 24 uur (*)." +img_file <- paste0(pad_figuren, "visinspanningINBO.jpg") +figtab(knitr::opts_current$get()$label, + img_file, + caption_tab) +``` + +## Materiaal en Methode + +### Ankerkuil + +De ankerkuilen zijn geïnstalleerd op een platbodemschip, 'De Harder' met registratienummer BOU25, eigendom van het visserijbedrijf Bout-Van Dijke. +De ankerkuil bestaat uit twee 8 meter brede stalen balken waarvan de onderste tot op de bodem wordt neergelaten en de bovenste tot net op of boven de waterlijn. +De uiteinden van de balken zijn verbonden met het scheepsanker waarmee het vaartuig voor anker ligt. +Tussen de balken is over de volledige breedte (8 m) een net of kuil met een maaswijdte van 20 mm gespannen. +Het doorstromende water houdt het net open. +De periode van het getij waarin gevist kan worden, is meestal van één uur na tot één uur voor de kentering van het getij, afhankelijk van de stroming die voldoende sterk moet zijn. +Op iedere locatie wordt één keer bij eb en één keer bij vloed gevist met één net aan bakboord en één net aan stuurboord. +De netten worden gelijktijdig aan stuurboord en bakboord neergelaten. +Het eerste net wordt meestal na een uur leeggemaakt en het tweede net na twee uur. +Zo kunnen twee vangsten per getijfase gemaakt worden en wordt het risico op misvangst beperkt. +De vangst wordt aan boord verwerkt. + +Eenmaal de vangst op het dek is gestort, halen we er onmiddellijk de minder algemene soorten en grote individuen uit. +Deze worden geïdentificeerd, geteld, gemeten en gewogen. +Van de zeer algemene soorten nemen we een deelmonster door 'voortgezette halvering', een gebruikelijk verdeelsysteem in de visserij. +Op die manier houden we een hanteerbaar, representatief aandeel over. +Vervolgens worden alle vissen in het deelstaal op soort geïdentificeerd, geteld, gemeten en gewogen. +Alle gevangen vissen worden na wegen en meten terug gezet in de Zeeschelde. + +Het bemonsterde watervolume wordt berekend met behulp van een mechanische stroomsnelheidsmeter met propeller die voor de duur van de vangst te water wordt gelaten. +De gemiddelde hoogte van de waterkolom, die met de duur van het getij verandert, wordt vermenigvuldigd met de kuilbreedte (8m) en de door de stroomsnelheidsmeter gepasseerde waterstroom. + +Aantallen en biomassa worden omgerekend naar aantallen en biomassa per m\textsuperscript{3} volume afgevist water. + +In de periode 2012-`r laatste_jaar` werd jaarlijks gevist in de lente (eind april of begin mei), de zomer (juli) en in het najaar (september). +In 2020 werd uitzonderlijk enkel in de zomer en het najaar gevist. +Er wordt telkens op vier locaties bemonsterd: Doel, Antwerpen, Steendorp en Branst (Figuur \@ref(fig:090-figuur-locaties-ankerkuil)). +Doel en Antwerpen bevinden zich in de EMSE niveau 3 scheldezone 'sterke saliniteitsgradiënt', Steendorp bevindt zich in de oligohaliene zone en Branst in de zoetwater zone met lange verblijftijd. +De Lambert coördinaten van de locaties zijn: Doel: 143350; 223091, Antwerpen: 149192; 210267, Steendorp: 142898; 200951 en Branst: 137181; 195683. + +```{r 090-figuur-locaties-ankerkuil, fig.cap=cap_locaties_ankerkuil, out.width="100%"} + +cap_locaties_ankerkuil <- + "De met ankerkuil bemonsterde locaties in het Zeeschelde estuarium sinds 2012." + +knitr::include_graphics(paste0(pad_figuren, "locaties_ankerkuil.jpg")) + +``` + +
+ +### Fuikvisserij + +Voor de fuikvangsten worden dubbele schietfuiken gebruikt. +Een schietfuik bestaat uit twee fuiken van 7,7 m lengte, waartussen een net van 11 m gespannen is. +Dat net is bovenaan voorzien van vlotters. +Onderaan bevindt zich een loodlijn. +Vissen die tegen het overlangse net zwemmen, worden naar één van de fuiken geleid. +De twee fuiken (type 120/90) zijn opgebouwd uit een reeks hoepels waarrond een net (maaswijdte 1 cm) bevestigd is. +Aan de ingang van de fuik staat de grootste hoepel (hoogte 90 cm). +Deze is onderaan afgeplat (120 cm breed) zodat de hele fuik recht blijft staan. +Naar achter toe worden de hoepels kleiner. +Aan het uiteinde is de maaswijdte 8 mm. +In de fuik bevinden zich een aantal trechtervormige netten waarvan het smalle uiteinde naar achter is bevestigd. +Eenmaal de vissen een trechter gepasseerd zijn, kunnen ze niet meer terug. +Om de vissen uit de fuik te halen wordt deze helemaal achteraan geopend en leeggemaakt. + +De bemonsterde locaties in de periode 2009-2022 zijn weergegeven in Figuur \@ref(fig:090-figuur-locaties-fuiken). +Vanaf het najaar van 2015 werd de locatie Zandvliet niet meer bemonsterd maar vervangen door het Paardenschor als nieuwe locatie in de zone sterke saliniteitsgradiënt (Figuur 2). +Bij de bespreking van de resultaten wordt Zandvliet niet expliciet vermeld maar wordt er verwezen naar Paardenschor. +De Lambert coördinaten van de locaties zijn: Zandvliet: 139864; 228413, Paardenschor: 142882; 225713, Antwerpen: 150050; 210800, Steendorp: 142520; 201050, Kastel: 137450; 193480, Appels: 128997; 193213 en Overbeke: 114823; 188235. + +Bij iedere campagne (voorjaar (mrt-apr), zomer (juni-augustus) en najaar (sept-okt)) werden per locatie twee dubbele schietfuiken geplaatst op de laagwaterlijn. +Tot en met 2021 stonden de fuiken 48 uur op locatie en werden ze om de 24 uur leeggemaakt. +De gevangen vissen worden ter plaatse geïdentificeerd, geteld, gemeten, gewogen en vervolgens teruggezet. +Het aantal individuen en de biomassa gevangen met fuiken worden omgerekend naar aantallen en biomassa per fuikdag. +Deze getransformeerde data worden gebruikt in de verdere analyse. +Om de totale visinspanning op de Zeeschelde te rationaliseren staan de fuiken sinds 2022 slechts 24 u op locatie en worden ze maar één keer leeggemaakt. +De gemiddelde aantallen en biomassa per fuikdag zullen hierdoor weinig veranderen maar de tweede fuikdag voegde in het verleden gemiddeld 2 extra soorten toe (berekening op basis van 144 campagnes). +Deze strategiewijziging zal dus een sprong in de tijdreeks voor soortenrijkdom veroorzaken. + +```{r 090-figuur-locaties-fuiken, fig.cap=cap_locaties_fuiken, out.width="100%"} + +cap_locaties_fuiken <- + "De met fuiken bemonsterde locaties in het regulier meetnet in het Zeeschelde estuarium sinds 2009." + +knitr::include_graphics(paste0(pad_figuren, "locaties_fuiken_historisch.jpg")) + +``` + +
+ +### EMSE evaluatie + +De resultaten van ankerkuil- en fuikvangsten worden gerapporteerd volgens EMSE (Evaluatie Methodiek Schelde Estuarium; EMSE 2021). +De waargenomen soorten worden onderverdeeld in zogenaamde functionele groepen op basis van estuarien habitatgebruik en dieetvoorkeur. + +De indeling qua habitatgebruik is als volgt: + +- Estuariene soorten en mariene migranten. Estuariene soorten brengen hun hele levenscyclus in het estuarium door. Mariene migranten (juvenielen, seizoensgasten, dwaalgasten) kunnen hun levenscyclus op zee vervolledigen maar ze komen de gunstiger condities in het estuarium opzoeken vb. om op te groeien. +- Diadrome soorten moeten zich tussen zoet- en zoutwater verplaatsen om zich voort te planten en zo hun levenscyclus te vervolledigen. +- Zoetwatersoorten die ook in het estuarium hun levenscyclus kunnen vervolledigen. + +De indeling qua dieetvoorkeur is als volgt: + +- Benthivoor +- Piscivoor +- Omnivoor +- Planktivoor + +De functionele groep omnivore estuariene soorten en mariene migranten is niet opgenomen in de EMSE indeling (zie EMSE 2021). +Omdat van deze groep, althans volgens de EMSE dieetvoorkeur per soort, toch redelijke aantallen voorkomen in de Zeeschelde wordt deze echter wel opgenomen in de MONEOS rapportage. +Sommige combinaties van habitatgebruik en dieetvoorkeur komen niet voor in de data. +Om een overzichtelijke vaste structuur te behouden worden ze wel telkens mee opgenomen in de figuren. + +Een overzicht van soorten die sinds 2012 in de Zeeschelde werden gevangen, met aanduiding van EMSE habitatgebruik en dieetvoorkeur wordt gegeven in Tabel \@ref(tab:093-tabel-zeeschelde-soorten) in bijlage. +Er werden in die periode `r aantal_soorten` soorten gevangen waarvan `r aantal_soorten_beide` soorten in zowel ankerkuil als fuiken, `r aantal_soorten_enkel_ankerkuil` soorten enkel met de ankerkuil en `r aantal_soorten_enkel_fuiken` soorten enkel met de dubbele schietfuiken. + +Voor elk van de EMSE functionele groepen worden per jaar en per vangstmethode het totaal aantal gevangen individuen en de totale biomassa per vangsteenheid (1000m³ bemonsterd water voor ankerkuil, 1 fuikdag voor fuikvangsten) alsook het aantal soorten en de Shannon diversiteit gerapporteerd. +Dit per scheldezone (EMSE niveau 3) en gemiddeld over de bemonsterde seizoenen (voorjaar, zomer, najaar). + +De Shannon diversiteit *D* wordt berekend als: + +$$ +D = exp \left( -\sum^S_i p_i ln (p_i) \right) +$$ + +waarbij *S* het aantal gevangen soorten in de functionele groep is en *p~i~* de relatieve abundantie van soort *i*. +*D* neemt een waarde aan tussen 1 en *S*, afhankelijk van de gelijkheid (evenness) in abundantie van de soorten. +Indien *D* = *S* hebben alle soorten in de groep een gelijke abundantie. + +Naast de algemene trends per functionele groep wordt er ook gekeken naar de trends van een aantal sleutelsoorten. +Deze soorten zijn zo geselecteerd dat ze een goede vertegenwoordiging geven van de verschillende saliniteits- en dieetvoorkeuren (zie bijlage Tabel \@ref(tab:093-tabel-zeeschelde-soorten)) en zijn belangrijke indicatoren voor het ecologisch functioneren van het systeem. +Daarnaast zijn ook de europees beschermde soorten opgenomen in de sleutelsoortenlijst. + +### Bepalen van de visindex + +De gegevens van de fuikvangsten in de Zeeschelde worden gebruikt om de visindex per KRW waterlichaam te berekenen volgens de zone-specifieke estuariene index voor biotische integriteit (Breine et al., 2010). +De Index wordt berekend op basis van de jaargegevens en is zodoende robuuster dan de brakwater index die gebaseerd is op dagvangsten (Breine et al., 2007). +De index score per waterlichaam integreert de beoordeling van een aantal metrieken, wordt vertaald naar een ecologische kwaliteitsratio (EQR) tussen 0 en 1 en ondergebracht in één van de ecologische kwaliteitsklassen, variërend van 'slecht' over 'onvoldoende', 'matig', 'goed ecologisch potentieel' (GEP) tot 'maximaal ecologisch potentieel' (MEP). +Elke gebruikte metriek staat voor een bepaalde functie van het ecosysteem voor de visgemeenschap. +De betekenis van de gebruikte metrieken is weergegeven in Tabel \@ref(tab:090-tabel-metrieken-visindex). +Voor elke metriek wordt een score bepaald in functie van een vastgelegde referentietoestand. +In elke saliniteitszone gelden andere metrieken en grenswaarden (Breine et al., 2010). + +```{r 090-tabel-metrieken-visindex} + +tabel_metrieken <- + read_excel(paste0(maak_pad(hoofdstuk, "tabellen"), "visindexreeks.xlsx"), + sheet = "toelichting metrieken", + col_names = FALSE) + +cap_metrieken <- + "Toelichting van de metrieken gebruikt in de visindex." + +tabel_metrieken %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_metrieken, + col.names = NULL, + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped")) + +``` + +
diff --git a/moneos_2024/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd b/moneos_2024/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd new file mode 100644 index 0000000..eefdf74 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/091_vissen_ankerkuil.Rmd @@ -0,0 +1,620 @@ +```{r 091-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 091-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 091-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 091-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren/ankerkuil") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen/ankerkuil") + +``` + +```{r 091-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 091-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "ankerkuil_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +## Resultaten + +### Ankerkuil + + + +#### Soortenrijkdom in `r laatste_jaar` + +We vingen `r aantal_soorten_laatste_jaar` vissoorten in `r laatste_jaar`. +Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:091-tabel-overzicht-soorten). +In de zone met sterke saliniteitsgradiënt (Doel en Antwerpen) werden er meer soorten gevangen dan in de oligohaliene (Steendorp) en zoetwater (Branst) zone (Tabel \@ref(tab:091-tabel-aantal-soorten)). +Over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden er inderdaad systematisch meer soorten gevangen in deze zone dan in de oligohaliene en zoete zone (Figuur \@ref(fig:091-figuur-aantal-soorten-locatie-historisch)). +De turnover van soorten tussen seizoenen op elke locatie bedraagt tot een derde van de gevangen soorten. +Het totaal aantal soorten jaarlijks gevangen in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar`-`r laatste_jaar` varieert rond de 40, met een maximum (46) in 2017 en een minimum (36) in 2020. +De turnover in soorten tussen locaties bedraagt tot een kwart van het totaal aantal soorten. + +```{r 091-tabel-overzicht-soorten} + +tabel_gevangen_soorten <- + read_excel(paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx"), + sheet = "gevangen_soorten") %>% + arrange(soort) + +cap_gevangen_soorten <- + paste0("Overzicht van de vissoorten gevangen tijdens de ankerkuilcampagnes in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_gevangen_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_gevangen_soorten, + align = c("l", rep("c", 12)), + col.names = c("", rep(c("Doel", "Antw.", "Steend.", "Branst"), 3)), + escape = FALSE, + linesep = "") %>% + add_header_above(c(" " = 1, "voorjaar" = 4, "zomer" = 4, "najaar" = 4)) %>% + kable_styling("striped", + latex_options = c("striped", "scale_down"), + font_size = 15) + +``` + +
+ +```{r 091-tabel-aantal-soorten} + +tabel_aantal_soorten <- + read_excel(paste0(pad_tabellen, "ankerkuil_tabellen_vissen.xlsx"), + sheet = "aantal_soorten") + +cap_aantal_soorten <- + paste0("Aantal soorten gevangen tijdens de ankerkuilcampagnes in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_aantal_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_aantal_soorten, + align = c("l", rep("c", 3)), + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped"), + font_size = 10) + +``` + +
+ +```{r 091-figuur-aantal-soorten-locatie-historisch, fig.cap=cap_aantal_soorten_locatie, out.width="110%"} + +cap_aantal_soorten_locatie <- + str_c("Het aantal soorten gevangen per locatie in de Zeeschelde tijdens de ankerkuilcampagnes in de periode 2012-",laatste_jaar,". Het donkere deel per balk geeft het gemiddeld aantal soorten gevangen per jaar en locatie; het lichtere deel geeft het totaal aantal gevangen soorten per jaar en locatie.") + +knitr::include_graphics(paste0(pad_figuren, "aantal_soorten_locatie.jpg")) + +``` + +
+ +#### Relatieve soortensamenstelling voor de meest dominante soorten in `r laatste_jaar` + +We analyseren alle vangstgegevens van `r laatste_jaar`. +Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. +Juveniele haring en sprot werden samen geregistreerd als "haringachtigen" . +In de zomer was het overgrote deel van de haringachtigen haring, in het najaar werden in Doel een merendeel sprot gevangen. + +Uit deze analyse blijkt dat de relatieve abundantie van soorten zowel seizoenaal als ruimtelijk verschilt (Figuur \@ref(fig:091-figuur-relatief-aantal)). +In Doel en Antwerpen (zone met sterke saliniteitsgradiënt) zijn haringachtigen dominant in alle seizoenen van `r laatste_jaar`. +Ook in het voorjaar in Steendorp zijn haringachtigen dominant. +Spiering is nog minder omnipresent dan in 2022 en enkel dominant in Steendorp in de zomer. +In 2022 domineerden spieringen nog de vangstaantallen in drie afvissingen in Steendorp en Branst (zoetwater). +In het najaar neemt brakwatergrondel het over in Steendorp, vergelijkbaar met vorig jaar. +Brakwatergrondel is minder dominant aanwezig in vergelijking met 2022, vooral in Branst, waar bot in `r laatste_jaar` dominant aanwezig is in het voorjaar en dikkopje het overneemt in de zomer en het najaar. + +Uitgedrukt in biomassa worden gelijkaardige patronen geobserveerd voor haringachtigen in Doel en Antwerpen. +Spiering treedt meer op de voorgrond in Steendorp maar met toenemende aanwezigheid van brakwatergrondel en dikkopje in het najaar. +In Branst staat fint in voor een groot deel van de biomassa in het voorjaar, spiering in de zomer en dikkopje in het najaar (Figuur \@ref(fig:091-figuur-relatieve-biomassa)). +Ook snoekbaars is duidelijk aanwezig in de biomassa van voorjaar en zomer in Steendorp en Branst. + +```{r 091-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} + +cap_relatief_aantal <- + str_c("Het relatief aantal gevangen individuen in de Zeeschelde tijdens de ankerkuilcampagnes in het voorjaar, de zomer en het najaar van ",laatste_jaar,". De getallen geven de percentages van het aantal gevangen vissen weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + +
+ +```{r 091-figuur-relatieve-biomassa, fig.cap=cap_relatieve_biomassa, out.width="100%"} + +cap_relatieve_biomassa <- + str_c("De relatieve biomassa van de vangsten in de Zeeschelde tijdens de ankerkuilcampagnes in het voorjaar, de zomer en het najaar van ",laatste_jaar,". De getallen geven de percentages van de totale biomassa weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + +
+ +#### Densiteit, biomassa en diversiteit binnen EMSE + +##### Algemene trends per saliniteits- en dieetvoorkeur + +In de hieronder volgende figuren voor aantallen en biomassa worden de bijdragen van de meest abundante soorten per functionele groep met individuele kleurcodes weergegeven. +Soorten die binnen een functionele groep minder dan 10% van zowel de aantallen als de biomassa uitmaken worden telkens samengenomen als 'rest'. + +***Estuariene soorten en mariene migranten*** + +Figuur \@ref(fig:091-figuur-aantallen-marien-EMSE) geeft per saliniteitszone (EMSE niveau 3) en dieetvoorkeur de aantallen weer voor de gevangen estuariene soorten en mariene migranten. + +Benthivore soorten overheersen naar aantal en biomassa, vooral in de zoete zone. +In de zone met sterke saliniteitsgradiënt overheersen planktivoren in `r laatste_jaar`. + +Dikkopje en brakwatergrondel zijn veruit de meest talrijke benthivore soorten in deze groep. +De grootste aantallen vonden we in de zoetwaterzone in Branst (samen 600 individuen per 1000m³, sterk aanleunend bij de piek in 2018). +Enkel in 2020 waren ze meest talrijk in het oligohalien. + +Omnivore mariene en estuariene soorten worden qua aantallen in het verleden gedomineerd door kleine zeenaald in de zone met sterke saliniteitsgradiënt, maar in `r laatste_jaar` domineert steenbolk. +In het oligohalien en zoetwater komt hoofdzakelijk juveniele zeebaars voor die daar komt opgroeien. +De aantallen zijn beduidend lager dan voor de benthivore soorten van deze groep (\< 5 individuen per 1000m³). +De laatste jaren wordt deze soortengroep minder gevangen dan in de periode voor 2018. + +Piscivore estuariene en mariene soorten volgens de EMSE indeling komen in de Zeeschelde niet voor, de éénmalige vangst van een smelt uitgezonderd. +In realiteit gedragen ook zeebaars, steenbolk en zeeforel zich hoofdzakelijk piscivoor in de Zeeschelde. + +Planktivore individuen van de groep estuarien residente en mariene migranten zijn meest talrijk in de zone met sterke saliniteitsgradiënt, met een uitschieter tot meer dan 200 individuen per 1000m³ in 2022, maar ze zijn toch ook tot in de zoete zone terug te vinden. +Het gaat hier vooral om juveniele haring en sprot, mariene soorten die de luwte en voedselrijkdom van het estuarium opzoeken om op te groeien. + +De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:091-figuur-biomassa-marien-EMSE)). +De omnivore mariene en estuariene soorten vertonen echter wel een grotere soortendiversiteit qua biomassa dan qua aantallen in de zone met sterke saliniteitsgradiënt. +De dominatie van zeenaald in bepaalde jaren is een stuk minder uitgesproken in de biomassa dan in de aantallen. + +De sterke dominantie van één of twee soorten qua aantallen binnen elke soortgroep is ook duidelijk zichtbaar in Figuur \@ref(fig:091-figuur-diversiteit-marien-EMSE). +Zelfs als er in totaal (S) 5 of meer soorten voorkomen in een groep wordt deze meestal door slechts één of twee soorten gedomineerd (D). +Enkel voor de omnivore mariene en estuariene soorten kan de diversiteit oplopen tot 4-6. +Soortenaantal en diversiteit vertonen geen uitgesproken trends binnen de soortgroepen, maar zijn relatief stabiel. + +```{r 091-figuur-aantallen-marien-EMSE, fig.cap=aantallen_marien_EMSE, out.width="110%"} + +aantallen_marien_EMSE <- + str_c("Totaal aantal gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-marien-EMSE, fig.cap=biomassa_marien_EMSE, out.width="110%"} + +biomassa_marien_EMSE <- + str_c("Totale biomassa gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-marien-EMSE, fig.cap=diversiteit_marien_EMSE, out.width="100%"} + +diversiteit_marien_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +Volgens de EMSE indeling zijn er geen diadrome benthivore en planktivore vissoorten in de Zeeschelde. +De twee zogenaamd piscivore soorten, de zeeprik en de rivierprik zijn eigenlijk parasitaire soorten waarvan er telkens maar enkele, grote, exemplaren gevangen worden. +Aantallen, biomassa en dominantie zijn dus sterk variabel in de tijd en per saliniteitszone voor deze functionele groep. + +De diadrome soorten in de Zeeschelde zijn dus voornamelijk omnivoor en deze functionele groep is zo sterk gedomineerd door spiering (Figuur \@ref(fig:091-figuur-aantallen-diadroom-EMSE)) dat bot, driedoornige stekelbaars, fint en paling, die nochtans ook zeer regelmatig gevangen worden, niet zichtbaar zijn op de figuur of zelfs niet eens apart vermeld worden maar samen met nog enkele andere, minder algemene soorten, onder 'rest' verwerkt worden. + +Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 4000-6000 individuen per 1000m³ in 2014. +In recente jaren zijn de aantallen een stuk lager (50-600 individuen per 1000m³). +Met uitzondering van een dip rond 2016 was de biomassa (Figuur \@ref(fig:091-figuur-biomassa-diadroom-EMSE)) aan spiering in voorgaande jaren relatief stabiel. +In 2022 en `r laatste_jaar` zijn de aantallen en biomassa aan gevangen spiering echter opvallend lager, vooral in de zoetwater zone. +Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. +Deze soort plant zich inderdaad voort stroomopwaarts in de zoete zone met korte verblijftijd, groeit op in het estuarium en trekt na enkele jaren naar zee. +Om het rekruteringssucces te bepalen moet echter de grootteklasse verdeling per seizoen en per locatie geanalyseerd worden. +Deze data zijn voorhanden maar worden niet gebruikt in EMSE. + +De diversiteit voor diadrome functionele groepen is zeer laag. +Hoewel er tot 8 omnivore soorten samen kunnen voorkomen blijft de spiering dominant over alles heen (Figuur \@ref(fig:091-figuur-diversiteit-diadroom-EMSE)). +In 2022 en `r laatste_jaar` lijkt die dominantie echter af te nemen in de zoete zone met een stijging van de diversiteit van 1 naar 2. + +```{r 091-figuur-aantallen-diadroom-EMSE, fig.cap=aantallen_diadroom_EMSE, out.width="110%"} + +aantallen_diadroom_EMSE <- + str_c("Totaal aantal gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-diadroom-EMSE, fig.cap=biomassa_diadroom_EMSE, out.width="110%"} + +biomassa_diadroom_EMSE <- + str_c("Totale biomassa gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-diadroom-EMSE, fig.cap=diversiteit_diadroom_EMSE, out.width="100%"} + +diversiteit_diadroom_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +Zoetwater soorten zijn meest talrijk in de zoetwaterzone waar de aantallen en biomassa vanaf 2016 algemeen toenemen (Figuur \@ref(fig:091-figuur-aantallen-zoetwater-EMSE), Figuur \@ref(fig:091-figuur-biomassa-zoetwater-EMSE)). + +Binnen de zoetwatersoorten zijn omnivoren de meest talrijke en de meest soortenrijke functionele groep en ze vertegenwoordigen ook de grootste biomassa. +Snoekbaars is dominant in deze groep, zowel in aantallen als in biomassa. +De aantallen daalden voor het tweede jaar op rij, maar de biomassa bleef de laatste jaren grotendeels constant, er werden dus relatief meer grotere exemplaren gevangen. + +Benthivore zoetwater soorten worden qua aantallen gedomineerd door brasem, tiendoornige stekelbaars en blauwbandgrondel. +Qua gewicht is enkel brasem dominant in deze functionele groep. +Brasem zet in `r laatste_jaar` de toename in aantallen, die begon in 2022, verder. + +Baars en de exotische zonnebaars zijn de enige piscivore zoetwatersoorten voor de Zeeschelde. +Baars is de dominante soort naar aantallen en gewicht. +Na een uitschieter in 2021 zijn aantal en gewicht in `r laatste_jaar` weer gedaald en op het niveau van voor 2021. + +Planktivore zoetwatersoorten komen in de Zeeschelde niet voor. + +Zoals voor de mariene, estuariene en diadrome soorten worden ook de zoetwater soortengroepen grotendeels gedomineerd door één à twee soorten (D), hoewel vaak meer soorten gevangen worden (S) (Figuur \@ref(fig:091-figuur-diversiteit-zoetwater-EMSE)). + +```{r 091-figuur-aantallen-zoetwater-EMSE, fig.cap=aantallen_zoetwater_EMSE, out.width="110%"} + +aantallen_zoetwater_EMSE <- + str_c("Totaal aantal gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen op basis van ankerkuildata.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-zoetwater-EMSE, fig.cap=biomassa_zoetwater_EMSE, out.width="110%"} + +biomassa_zoetwater_EMSE <- + str_c("Totale biomassa gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-zoetwater-EMSE, fig.cap=diversiteit_zoetwater_EMSE, out.width="100%"} + +diversiteit_zoetwater_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg")) + +``` + +
+ +#### Trends in sleutelsoorten + +Een aantal soorten beschouwen we als sleutelsoorten in de Zeeschelde omdat ze informatie geven over één of meerdere ecologische functies van het estuarium of omdat ze Europees beschermd zijn. +De diadrome sleutelsoorten zijn: fint, spiering, bot, paling en rivierprik. +Ze geven informatie over het gebruik van het estuarium als migratiekanaal. +Fint- en spieringvangsten geven daarenboven informatie over het gebruik van het estuarium als paaihabitat. +Mariene sleutelsoorten zijn haring, zeebaars, tong en ansjovis. +Hun aanwezigheid toont aan dat het estuarium als opgroei- en foerageergebied wordt gebruikt. + + +Van de 25 sleutelsoorten uit de lijst (EMSE 2021) worden er 22 waargenomen in de Zeeschelde aan de hand van ankerkuil bevissingen: 8 mariene en estuariene soorten, 6 diadrome soorten en 8 zoetwater soorten. +Slechts een aantal soorten komen echter in relatief hoge aantallen voor. + + + +***Estuariene soorten en mariene migranten*** + +Van de estuariene en mariene sleutelsoorten komen brakwatergrondel, dikkopje, haring en zeebaars vrij frequent voor (\> 1 individu per 1000m³, Figuur \@ref(fig:091-figuur-mariene-sleutelsoorten)). +De overige soorten komen slechts in zeer kleine aantallen voor. +Sprot wordt eveneens in vrij grote aantallen gevangen maar werd niet als sleutelsoort aangeduid. + +- Brakwatergrondel komt in de grootste aantallen voor in het zoetwater en vertoont piekdensiteiten rond 2018. + In `r laatste_jaar` zijn de aantallen waargenomen in de ankerkuil vangsten gemiddeld. + +- Dikkopje bereikt in `r laatste_jaar` recordaantallen met \>300 individuen per 1000m³ in zoetwater. + Vorige pieken rond 50 individuen per 1000m³ in 2018 en 2020 zijn waargenomen in oligohalien. + +- Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. + De aantallen zijn relatief stabiel en tonen op eerste zicht een golvende beweging, met piekdensiteiten in 2014, 2018 en 2022. + +- Zeebaars wordt vooral waargenomen in de zoetwater zone en in het oligohalien. + In vergelijking met de periode 2012-2017 komt er nu weinig zeebaars voor in de Zeeschelde. + +```{r 091-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} + +cap_aantal_sleutelsoorten_marien <- + str_c("Aantallen van sleutelsoorten binnen estuariene soorten en mariene migranten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +De meest voorkomende diadrome sleutelsoorten (\> 1 individu per 1000m³) zijn bot, fint en vooral spiering (Figuur \@ref(fig:091-figuur-diadrome-sleutelsoorten)). +Paling wordt slechts in kleine aantallen gevangen met de ankerkuil, maar is qua biomassa toch vrij belangrijk. + + + +- Bot komt voor in alle drie de scheldezones waar afvissingen met ankerkuil worden gedaan, maar met over het algemeen de hoogste aantallen in het zoetwater. + Aantallen bot varieren van jaar tot jaar, met in `r laatste_jaar` de hoogste aantallen tot nu toe. + +- Fint aantallen vertoonden pieken in 2012, 2015 en 2017. + Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:091-figuur-relatief-aantal)). + Sterke variatie in de aantallen kan zowel aan de paaitrek als aan het rekruteringssucces te wijten zijn. + Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. + +- Paling wordt vooral gevangen in het oligohalien en zoetwater. + De aantallen vertonen een licht dalende trend die lijkt gestabiliseerd in `r laatste_jaar`. + Deze trend is minder duidelijk in de biomassa die vrij sterk varieert van jaar tot jaar. + +- Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:091-figuur-relatief-aantal), \@ref(fig:091-figuur-relatieve-biomassa), \@ref(fig:091-figuur-aantallen-diadroom-EMSE) en \@ref(fig:091-figuur-biomassa-diadroom-EMSE)). + Deze soort vertoonde een heel sterke piek in aantallen in 2014. + In `r laatste_jaar` werden lage aantallen en biomassa gevangen, een verderzetting van het geobserveerde dieptepunt in 2022. + +```{r 091-figuur-diadrome-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_diadroom, out.width="100%"} + +cap_aantal_sleutelsoorten_diadroom <- + str_c("Aantallen van diadrome sleutelsoorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +De meest voorkomende sleutelsoorten voor de zoetwatersoorten zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:091-figuur-zoetwater-sleutelsoorten)). + +- Na de forse toename van blankvoorn in het zoetwater in 2021 vertoont deze soort in `r laatste_jaar` opnieuw lagere aantallen. + + +- Brasem vertoont een duidelijke toename in aantallen in het zoetwater vanaf 2016 in vergelijking met de jaren ervoor. + In 2022 en `r laatste_jaar` is er nog een extra toename in het zoetwater. + +- Ook snoekbaars vertoont een duidelijke toename in aantallen vanaf 2016 met een piek in 2021 waarna de aantallen terug afnemen. + Deze soort komt niet alleen voor in het zoetwater maar ook vaak in het oligohalien (waar de aantallen sinds 2021 ook terug afnemen) en zelfs in de zone met sterke saliniteitsgradiënt. + +```{r 091-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} + +cap_aantal_sleutelsoorten_zoetwater <- + str_c("Aantallen van zoetwater sleutelsoorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg")) + +``` + +
+ +#### Alternatieve evaluatie per estuarien habitatgebruik of dieet + +Het gildenconcept wordt normaal gezien gebruikt om een bepaald kenmerk van visgemeenschappen te onderzoeken. +De voorkomende soorten worden dan gegroepeerd op basis van dat bepaald kenmerk. +In de EMSE methodiek worden twee van deze kenmerken gebruikt, het gebruik van estuariene habitats en het dieet. +Er werd beslist om deze te 'nesten' waardoor er 12 functionele groepen gevormd werden. + +Alternatief kunnen we ook het gildenconcept toepassen zoals gebruikelijk en enerzijds het estuarien habitat gebruik door de visgemeenschap evalueren en anderzijds visgemeenschap positioneren in het estuariene voedselweb. +Op die manier wordt ook de volledige visgemeenschap in één overzicht beoordeeld. + +Zo zien we in één oogopslag dat er met de ankerkuil meest vissen per m³ gevangen worden in de zoete zone en het minst in de zone met sterke saliniteitsgradiënt. +Dit geldt zowel voor aantallen als voor biomassa. +Men zou dus kunnen besluiten dat de densiteit van de vispopulaties in de Zeeschelde aanwezig in het pelagiaal stijgt in stroomopwaartse richting als we abstractie maken van de verschillen in morfodynamische habitateigenschappen op de verschillende visplaatsten. + +##### Estuarien habitat gebruik + +De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien habitat gebruik worden weergegeven in respectivelijk Figuur \@ref(fig:091-figuur-aantallen-habitat), Figuur \@ref(fig:091-figuur-biomassa-habitat) en Figuur \@ref(fig:091-figuur-diversiteit-habitat). + +Voor alle drie de estuariene habitat gebruik groepen zien we de laagste densiteiten in de zone met sterke saliniteitsgradiënt. +Diadrome vissen overheersen de aantallen in de ankerkuilvangsten, met vergelijkbare aantallen per m³ in de oligohaliene en zoete zone. +Die dominantie is echter hoofdzakelijk te wijten aan de grote aantallen en biomassa van spiering in voorgaande jaren. +De laatste twee jaar zijn de aantallen en biomassa een stuk lager en kunnen mariene en estuariene soorten zelfs domineren, waar die in het verleden met bijna een factor 10 minder gevist werden. + Zoetwatersoorten worden tenslotte in veel lagere aantallen gevangen, weliswaar met duidelijke toename van aantallen in stroomopwaartse richting. +Op basis van gemiddelde biomassa per m³ zijn de trends vergelijkbaar maar zijn de verschillen tussen estuariene habitat gebruik groepen veel kleiner. +Het gaat dus voornamelijk om kleine, juveniele diadrome individuen en grotere, adulte zoetwatervissen. +De estuarien residente soorten zijn middelgroot en alle leeftijdsklassen zijn aanwezig. + +Spieringen zijn zonder meer de dominante trekvissen, zowel naar aantal als naar biomassa en dat geldt in alle saliniteitszones van de Zeeschelde . +De aantallen spiering zijn al een aantal jaren veel kleiner dan voorheen, in 2022 en `r laatste_jaar` echter zijn niet alleen de aantallen maar ook de biomassa's uitzonderlijk laag. +Dit vergt nader onderzoek. + +Snoekbaars is de dominante zoetwatersoort, eveneens in aantal en biomassa. +De dominantie is echter minder uitgesproken dan die van de spiering, o.a. +ook omdat het aantal algemene soorten het grootst is in deze groep. + +Het beeld van mariene en estuariene soorten is iets complexer omdat hier in realiteit twee verschillende estuarien habitat gebruik gilden samengevoegd worden: estuarien residenten en mariene migranten die elk op een heel andere manier gebruik maken van het estuarien habitat. +In de zoete zone met lange verblijftijd en in het oligohalien zijn brakwatergrondel en dikkopje, twee estuarien residente soorten, de meest talrijke soorten van deze gildengroep. +Afgezien van de uitzonderlijke piek in `r laatste_jaar` voor dikkopje en in 2018 voor brakwatergrondel schommelen de aantallen en biomassa's zonder uitgesproken trend te vertonen. + +In de zone met sterke saliniteitgradiënt is haring, een mariene migrant het meest talrijk. +Indien we naar de biomassa kijken winnen sprot en ook haring in 2022 en `r laatste_jaar` aan belang in de twee stroomafwaartse zones en zelfs in de zoete zone met lange verblijftijd. +Mariene migranten zoeken de beschutting en voedselrijkdom van het estuarium op tot in de zoetwater zone. +De aantallen en biomassa's variëren sterk van jaar tot jaar. + +De grootste soortenrijkdom vinden we bij de mariene en estuariene soorten in de zone met sterke saliniteitsgradiënt. +De voornaamste oorzaak hiervan is dat er af toe vangsten zijn van mariene dwaalgasten. +Deze hebben weinig betekenis voor het estuarien functioneren, buiten de indicatie dat ze kunnen overleven in die omgeving. +De laagste soortenrijkdom vinden we ook bij de mariene en estuariene soorten in de zoetwater zone. +De diversiteit is het grootst bij de mariene en estuariene soorten en zoetwatersoorten. + +
+ +```{r 091-figuur-aantallen-habitat, fig.cap=aantallen_habitat, out.width="110%"} + +aantallen_habitat <- + str_c("Totaal aantal gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-habitat, fig.cap=biomassa_habitat, out.width="110%"} + +biomassa_habitat <- + str_c("Totale biomassa gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-habitat, fig.cap=diversiteit_habitat, out.width="100%"} + +diversiteit_habitat <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) voor elke groep van estuarien habitat gebruik in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg")) + +``` + +
+ +##### Dieet + +De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weergegeven in respectievelijk Figuur \@ref(fig:091-figuur-aantallen-dieet), Figuur \@ref(fig:091-figuur-biomassa-dieet) en Figuur \@ref(fig:091-figuur-diversiteit-dieet). + +Qua trofische samenstelling overheersten in het verleden omnivoren de aantallen en ook de biomassa door toedoen van spiering, gevolgd door benthivoren, planktivoren en tenslotte een zeer kleine minderheid aan piscivoren. +zoals reeds vermeld is de dominantie van omnivoren (spiering) de laatste twee jaar echter grotendeels verdwenen. + +Brakwatergrondel en dikkopje en in mindere mate brasem zijn de dominante benthivoren zowel in de aantallen als in de biomassa. +De gevangen hoeveelheden en de dominantie van brakwatergrondel en dikkopje stijgen beiden in stroomopwaartse richting in de vorige jaren. +In `r laatste_jaar` is dikkopje voor de eerste keer dominant in aantallen en biomassa over brakwatergrondel in zoetwater. + +Spiering is de dominante omnivoor met veel hogere aantallen en biomassa dan snoekbaars en andere omnivoren. +Dit moet echter genuanceerd worden. +De overgrote meerderheid zijn planktivore juveniele spieringen. +In het pelagiaal van de oligohaliene en zoete zeeschelde vinden we dus voornamelijk planktivore individuen. + +In de zone met sterke saliniteitsgradiënt zijn haring en sprot de belangrijkste planktivoren, met een zeer opvallende piek in 2022. +Ook in het oligohalien zijn ze nog redelijk talrijk aanwezig. + +Baars, rivierprik en zeeprik zijn de belangrijkste piscivoren. +In aantallen overheerst baars, met een opvallende piek in Branst (zoet lang) in 2021. +Pieken in de biomassa worden eerder veroorzaakt door occasionele vangsten van prikken, die gemiddeld veel groter zijn. +Ook piscivorie in de waterkolom van de Zeeschelde is onderschat doordat de EMSE indeling in dieetgroepen geen rekening houdt met de dieetshift van dominante soorten. +Een groot aandeel van 'omnivore' biomassa betreft ook volwassen spieringen en snoekbaars, die zich in de Schelde voornamelijk piscivoor gedragen (eigen observatie). +Ook volwassen fint, winde, meerval, zeebaars, steenbolk en zeeforel zijn als piscivoor gekend. + +Omnivoren vormen de meest soortenrijke trofische groep, gevolgd door benthivoren, planktivoren en tenslotte piscivoren. +Door de dominantie van enkele soorten in elke groep is de diversiteit algemeen laag in alle groepen en scheldezones. + +
+ +```{r 091-figuur-aantallen-dieet, fig.cap=aantallen_dieet, out.width="110%"} + +aantallen_dieet <- + str_c("Totaal aantal gevangen individuen per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg")) + +``` + +
+ +```{r 091-figuur-biomassa-dieet, fig.cap=biomassa_dieet, out.width="110%"} + +biomassa_dieet <- + str_c("Totale biomassa gevangen individuen per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg")) + +``` + +
+ +```{r 091-figuur-diversiteit-dieet, fig.cap=diversiteit_dieet, out.width="100%"} + +diversiteit_dieet <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) per dieetgroep in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg")) + +``` + +
diff --git a/moneos_2024/150_geintegreerd_rapport/092_vissen_fuiken.Rmd b/moneos_2024/150_geintegreerd_rapport/092_vissen_fuiken.Rmd new file mode 100644 index 0000000..145802a --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/092_vissen_fuiken.Rmd @@ -0,0 +1,690 @@ +```{r 092-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 092-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 092-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 092-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren/fuiken") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen/fuiken") + +``` + +```{r 092-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 092-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "fuiken_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +### Fuiken + +#### Soortenrijkdom in `r laatste_jaar` + +In `r laatste_jaar` werden `r aantal_soorten_laatste_jaar` vissoorten gevangen in de fuiken. +Een overzicht van de soorten gevangen in `r laatste_jaar` is weergegeven in Tabel \@ref(tab:092-tabel-overzicht-soorten). +Opmerkelijk weinig soorten zijn gevangen in Antwerpen in `r laatste_jaar` (Tabel \@ref(tab:092-tabel-aantal-soorten); Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). +In vergelijking met de ankerkuil werden in elke zone minder soorten bovengehaald met de fuiken. +Over de seizoenen werden met de fuiken het grootste aantal soorten gevangen in de zomer en het najaar terwijl dat met de ankerkuil in het voorjaar en de zomer was. + +Totaal over de beschouwde periode (`r vroegste_jaar` - `r laatste_jaar`) worden meest soorten gevangen in de zone met sterke saliniteitsgradiënt (Zandvliet/Paardenschor \> Antwerpen) (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)) en daalt de soortenrijkdom in stroomopwaartse richting, met iets minder soorten in de oligohaliene zone (Steendorp), en het laagst aantal soorten in de zoetwaterzone met lange (Kastel) en korte (Appels, Overbeke) verblijftijd. +Vanaf 2017 worden in de zone met sterke saliniteitsgradiënt wel minder soorten gevangen. + + +De soortensamenstelling op elke locatie kan sterk verschillen tussen de seizoenen, met een turnover van ongeveer één derde van de soorten. +Het totaal aantal soorten jaarlijks gevangen met fuiken in de Zeeschelde (over alle locaties) in de periode `r vroegste_jaar` - `r laatste_jaar` varieert rond de 33 (Figuur \@ref(fig:092-figuur-aantal-soorten-locatie-historisch)). +Tot een kwart van het aantal gevangen soorten kan verschillen tussen de locaties. +Het aantal gevangen soorten per jaar vertoont meer variatie vanaf 2016. +In 2022 zijn er met de fuiken beduidend minder soorten gevangen dan de jaren voorheen. +Dit heeft waarschijnlijk te maken met de halvering van het aantal fuikdagen per campagne van 2 naar 1 etmaal per locatie. +Uit vergelijking tussen vangsten na eerste en tweede etmaal in 144 campagnes blijkt dat een tweede vangst 0 tot 6 extra soorten oplevert met een gemiddelde van 2 soorten. + +```{r 092-tabel-overzicht-soorten} + +tabel_gevangen_soorten <- + read_excel(paste0(pad_tabellen, "tabellen_vissen.xlsx"), + sheet = "gevangen_soorten") %>% + arrange(soort) + +cap_gevangen_soorten <- + paste0("Overzicht van de vissoorten gevangen met fuiken in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_gevangen_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_gevangen_soorten, + align = c("l", rep("c", 12)), + col.names = c("", rep(c("Paard.", "Antw.", "Steend.", "Kastel", "Appels", "Overb."), 3)), + escape = FALSE, + linesep = "") %>% + add_header_above(c(" " = 1, "voorjaar" = 6, "zomer" = 6, "najaar" = 6)) %>% + kable_styling("striped", + latex_options = c("striped", "scale_down"), + font_size = 15) + +``` + +
+ +```{r 092-tabel-aantal-soorten} + +tabel_aantal_soorten <- + read_excel(paste0(pad_tabellen, "tabellen_vissen.xlsx"), + sheet = "aantal_soorten") + +cap_aantal_soorten <- + paste0("Aantal soorten gevangen met fuiken in de Zeeschelde in ", + laatste_jaar, + ".") + +tabel_aantal_soorten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_aantal_soorten, + align = c("l", rep("c", 3)), + escape = FALSE, + linesep = "") %>% + kable_styling("striped", + latex_options = c("striped"), + font_size = 10) + +``` + +
+ +```{r 092-figuur-aantal-soorten-locatie-historisch, fig.cap=cap_aantal_soorten_locatie, out.width="110%"} + +cap_aantal_soorten_locatie <- + str_c("Het aantal soorten gevangen per locatie met fuiken in de Zeeschelde in de periode 2009-",laatste_jaar,". Het donkere deel per balk geeft het gemiddeld aantal soorten gevangen per jaar en locatie; het lichtere deel geeft het totaal aantal gevangen soorten per jaar en locatie.") + +knitr::include_graphics(paste0(pad_figuren, "aantal_soorten_locatie.jpg")) + +``` + +
+ +#### Relatieve soortensamenstelling voor de meest dominante soorten in `r laatste_jaar` + +Alle vangstgegevens van `r laatste_jaar` worden geanalyseerd. +Soorten met in alle seizoenen en locaties een relatieve bijdrage kleiner dan 10% voor zowel de aantallen als biomassa worden als 'rest' samengenomen. + +Deze analyse geeft aan dat de relatieve abundantie van de soorten zowel ruimtelijk als per seizoen verschilt (Figuur \@ref(fig:092-figuur-relatief-aantal)). +Het patroon verschilt ook sterk van dat van de ankerkuilvangsten en geeft algemeen een meer divers beeld met minder uitgesproken dominantie van een aantal soorten. + +In het voorjaar van `r laatste_jaar` overheersen zeebaars en bot de aantallen aan het Paardenschor. +In Antwerpen zijn dat vooral brakwatergrondel, blankvoorn en brasem. +In Steendorp wordt er naast blankvoorn ook relatief veel schol gevangen. +In de zoete zone overheersen brakwatergrondel, brasem, schol, baars en paling. +In de zomer worden overal redelijke aantallen bot en snoekbaars gevangen. +In de zone met sterke saliniteitsgradiënt aangevuld met haring, schol en steenbolk. +In de zoete zone is paling en blankvoorn meestal ook duidelijk aanwezig. +Dit beeld verandert compleet in het najaar. +In die periode overheerst brakwatergrondel de fuikvangsten van Antwerpen tot Appels. +In het Paardenschor is dit bot en in Overbeke is paling dominant. + +Uitgedrukt in biomassa overheerst snoekbaars, brasem en paling de zoete zone in het voorjaar, in de zone sterke saliniteitsgradiënt zijn dat ook snoekbaars, zeebaars, baars en bot. +In Kastel nemen ook optrekkende finten een belangrijk deel van de biomassa in. +Paling is op de meeste locaties dominant in de zomer, aangevuld met snoekbaars van Antwerpen tot Overbeke, met goede aanwezigheid van steenbolk in Paardeschor en karper in Overbeke (Figuur \@ref(fig:092-figuur-relatieve-biomassa)). +In het najaar blijft paling dominant op de meeste plaatsen behalve in Paardeschor en Kastel waar respectievelijk bot en snoekbaars dominant zijn. + +```{r 092-figuur-relatief-aantal, fig.cap=cap_relatief_aantal, out.width="100%"} + +cap_relatief_aantal <- + str_c("Het relatief aantal individuen per soort en per seizoen gevangen met fuiken in de Zeeschelde in ",laatste_jaar,". De getallen geven de percentages van het aantal gevangen vissen weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatief_aantal_gevangen_individuen.jpg")) + +``` + +
+ +```{r 092-figuur-relatieve-biomassa, fig.cap=cap_relatieve_biomassa, out.width="100%"} + +cap_relatieve_biomassa <- + str_c("De relatieve biomassa per soort en per seizoen gevangen met fuiken in de Zeeschelde in ",laatste_jaar,". De getallen geven de percentages van de totale biomassa weer.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_gevangen_individuen.jpg")) + +``` + +
+ +#### Densiteit, biomassa en diversiteit binnen EMSE + +##### Algemene trends per saliniteits- en dieetvoorkeur + +In de hieronder volgende figuren voor aantallen en biomassa worden de bijdragen van de meest abundante soorten per functionele groep met individuele kleurcodes weergegeven. +Soorten die binnen een functionele groep minder dan 10% van zowel de aantallen als de biomassa uitmaken worden telkens samengenomen als 'rest'. + +***Estuariene soorten en mariene migranten*** + +Figuur \@ref(fig:092-figuur-aantallen-marien-EMSE) en Figuur \@ref(fig:092-figuur-biomassa-marien-EMSE) geven per saliniteitszone (EMSE niveau 3) en dieetvoorkeur respectievelijk de aantallen en biomassa weer voor de gevangen estuariene soorten en mariene migranten. + +In deze estuariene gebruik groep overwegen benthivoren in aantal en biomassa. +Eerst vooral in de zone met sterke saliniteitsgradiënt maar de laatste jaren ook in de zoete zones. +Omnivoren volgen in aantallen en biomassa en daarna planktivoren. +Piscivore estuariene en mariene soorten volgens de EMSE indeling worden in de Zeeschelde niet gevangen met fuiken. + +In de zone met sterke saliniteitsgradiënt worden vooral tong en schol gevangen als benthivore mariene migranten. +Het aantal tongen per fuikdag daalde sterk na 2011 en toonde nog een beperkte piek in 2017. +Goede aantallen schol werden gevangen in 2023. +Brakwatergrondel en dikkopje zijn veruit de meest talrijke benthivore estuariene soorten in de oligohaliene en zoete zones. +De laaste jaren wordt hier vooral brakwatergrondel gevangen. +De aantallen per fuikdag schommelen sterk zonder bepaalde trend. +In `r laatste_jaar` is er een piek in het oligohalien en zoet met lange verblijftijd. + +Omnivore mariene soorten worden qua aantallen en biomassa standaard gedomineerd door zeebaars, in `r laatste_jaar` blijft zeebaars aanwezig in vergelijkbare aantallen en biomassa, maar is er een piek van steenbolk. +Grote aantallen juveniele steenbolk werden gevangen in 2023. +Vooral in de zone met sterke saliniteitsgradiënt is zeebaars opvallend aanwezig in de fuikvangsten sinds 2015, terwijl ze in deze zone relatief minder gevangen worden met de ankerkuil. + +Planktivore individuen van de groep estuarien residente en mariene migranten zijn vooral juvenielen van mariene soorten haring en sprot, die de luwte van het estuarium opzoeken om op te groeien. +Ze zijn meest talrijk in de zone met sterke saliniteitsgradiënt maar ze zijn toch ook tot in de zoete zone terug te vinden. +Daar waar de piek in de ankerkuil aantallen zich in 2022 voordeed was dat in 2021 voor de fuikvangsten. + +De patronen voor biomassa vertonen grotendeels dezelfde verhoudingen tussen soortgroepen, saliniteitszones en soorten (Figuur \@ref(fig:092-figuur-biomassa-marien-EMSE)). + +Soortenrijkdom aan estuariene residenten en mariene migranten is laag, met slechts één of twee soorten per voedselgroep en saliniteitszone (Figuur \@ref(fig:092-figuur-diversiteit-marien-EMSE)). +Uitzondering hierop zijn de zone met sterke saliniteitsgradiënt voor benthivoren en omnivoren. +Maar zelfs als er in totaal (S) 5 of meer soorten voorkomen in een functionele groep, wordt die gedomineerd door slechts één of twee soorten (D). +Uitzonderlijk komt in de zone met sterke saliniteitsgradiënt een diversiteit (D) hoger dan 2 voor. +Soortenaantal en diversiteit vertonen geen uitgesproken trends binnen de soortgroepen, maar zijn relatief stabiel. + +```{r 092-figuur-aantallen-marien-EMSE, fig.cap=aantallen_marien_EMSE, out.width="110%"} + +aantallen_marien_EMSE <- + str_c("Totaal aantal gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_marien.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-marien-EMSE, fig.cap=biomassa_marien_EMSE, out.width="110%"} + +biomassa_marien_EMSE <- + str_c("Totale biomassa gevangen individuen van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_marien.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-marien-EMSE, fig.cap=diversiteit_marien_EMSE, out.width="100%"} + +diversiteit_marien_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +Er zijn geen diadrome benthivore en planktivore vissoorten in de Zeeschelde. +De twee zogenaamd piscivore soorten, de zeeprik en de rivierprik zijn eigenlijk parasitaire soorten waarvan slechts sporadisch een enkel groter exemplaar met de fuik gevangen wordt. +De enige dieetgroep van tel onder de diadromen zijn de omnivore soorten. +In de fuikvangsten zijn de jonge spieringen, hoewel talrijk, minder dominant aanwezig dan in de ankerkuil. +Ook bot, driedoornige stelkelbaars, dunlipharder, fint en paling laten zich opmerken in de aantallen en/of biomassa (Figuur \@ref(fig:092-figuur-aantallen-diadroom-EMSE); Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). +In de zone met sterke saliniteitsgradiënt is bot de meest dominante diadrome soort qua aantallen. + +In de zone met sterke saliniteitsgradiënt wordt bot in de grootste aantallen gevangen. +Spieringen zijn meest talrijk in de oligohaliene en zoetwater zone met pieken tot 400-600 individuen per fuikdag in 2015 in Overbeke. +In recente jaren zijn de aantallen, net als in de ankerkuildata een stuk lager (\<50 individuen per fuikdag). +Vergelijking van aantallen en biomassa in de verschillende saliniteitszones doet ook op basis van fuikdata vermoeden dat de spieringen gemiddeld het kleinst zijn in de zoete zone en het grootste in de zone met sterke saliniteitsgradiënt. +De biomassa van omnivore diadromen in de oligohaliene en zoete zones wordt vooral door paling en in sommige gevallen ook optrekkende fint bepaald (Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). +In de zone met sterke saliniteitsgradiënt maken vooral bot, paling en een enkele keer ook dunlipharder en fint de biomassa uit. + +Diversiteit voor diadrome omnivoren is gemiddeld hoger dan voor mariene en estuarien residente soorten voor de fuikvangsten omdat spiering als pelagiale soort minder domineert met deze vangstmethode (Figuur \@ref(fig:092-figuur-diversiteit-diadroom-EMSE)). + +```{r 092-figuur-aantallen-diadroom-EMSE, fig.cap=aantallen_diadroom_EMSE, out.width="110%"} + +aantallen_diadroom_EMSE <- + str_c("Totaal aantal gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-diadroom-EMSE, fig.cap=biomassa_diadroom_EMSE, out.width="110%"} + +biomassa_diadroom_EMSE <- + str_c("Totale biomassa gevangen individuen van diadrome soorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_diadroom.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-diadroom-EMSE, fig.cap=diversiteit_diadroom_EMSE, out.width="100%"} + +diversiteit_diadroom_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van diadrome soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +Bij de zoetwater soorten zijn omnivoren het meest talrijk en vertegenwoordigen ze de grootste biomassa, gevolgd door benthivoren en vervolgens piscivoren (Figuur \@ref(fig:092-figuur-aantallen-zoetwater-EMSE), Figuur \@ref(fig:092-figuur-biomassa-zoetwater-EMSE)). + +De fuikresultaten van de zoetwater soorten geven een zeer verschillend beeld van dat van de ankerkuilvangsten. +Hoewel het gaat om zoetwater soorten, worden van deze estuariene gebruiksgroep relatief meer individuen per fuikdag gevangen in de zone met sterke saliniteitsgradiënt en ook in de oligohaliene zone. +Kijken we echter naar de biomassa gegevens dan verandert het beeld grondig met de hogere biomassa's in stroomopwaartse richting. + +In de groep van benthische zoetwatersoorten bepalen vooral brasem en een enkele keer blauwbandgrondel de relatieve aantallen, die in stroomopwaartse richting afnemen. +De biomassa wordt echter bijna uitsluitend door brasem bepaald, die in individuele grootte en gewicht net toeneemt in stroomopwaartse richting van gemiddeld 10g aan de grens naar 300-400g in Overbeke. +Daarom is de biomassa van deze functionele groep relatief groter in de stroomopwaartse stations. +Opvallend zijn een recordvangst van grote brasems in Steendorp (oligohalien) in de zomer van 2014 en een steur van 124cm en 13,5 kg in Kastel (zoet lange verblijftijd) in 2019. +Deze zijn niet te zien in de aantallen maar wegen wel door in de biomassa. + +Snoekbaars is de meest talrijk gevangen omnivore zoetwatersoort, maar bepaalt de biomassa niet in dezelfde mate als bij de ankerkuilvangsten. +Er worden er meer gevangen in de zone met sterke saliniteitsgradiënt maar de exemplaren worden groter en zwaarder in stroomopwaartse richting. +Ook kolblei wordt meer gevangen aan de grens maar de exemplaren worden groter in stroomopwaartse richting. +Blankvoorn en giebel zijn overal en bijna altijd aanwezig maar dragen relatief weinig bij aan de biomassa. +Het omgekeerde is waar voor snoek, meerval en karper. +Vooral in de zoete zone met korte verblijftijd bepalen hun relatief geringe aantallen in grote mate de biomassa. +Zwartbekgrondel wordt vooral in de brakke zone gevangen. + +Baars is de belangrijkste piscivore zoetwatersoort. +In de zone met sterke saliniteitsgradiënt wordt deze soort al geruime tijd in redelijke aantallen gevangen. +In de zoete zone nemen de aantallen geleidelijk toe. +Net zoals voor de meeste andere typische zoetwatersoorten neemt de biomassa toe in stroomopwaartse richting. +Sinds 2018 is er in het zoetwater echter een opvallende daling in de biomassa aan baars. + +In `r laatste_jaar` is er alver gevangen in de oligohaliene zone, de enigste planktivore zoetwatersoort in de Zeeschelde gevangen met fuiken. +Voordien was alver waargenomen in de oligohaliene zone (2020) en zoetwater met korte verblijftijd (2010). + +Vooral in de zoete zone met korte verblijtijd zijn zowel diversiteit (D), als soortenrijkdom (S) voor de omnivore en benthivore zoetwater soorten relatief hoger dan voor andere functionele groepen (Figuur \@ref(fig:092-figuur-diversiteit-zoetwater-EMSE)). + +```{r 092-figuur-aantallen-zoetwater-EMSE, fig.cap=aantallen_zoetwater_EMSE, out.width="110%"} + +aantallen_zoetwater_EMSE <- + str_c("Totaal aantal gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_aantallen_tot_aantal_EMSE_zoet.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-zoetwater-EMSE, fig.cap=biomassa_zoetwater_EMSE, out.width="110%"} + +biomassa_zoetwater_EMSE <- + str_c("Totale biomassa gevangen individuen van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "relatieve_biomassa_tot_biomassa_EMSE_zoet.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-zoetwater-EMSE, fig.cap=diversiteit_zoetwater_EMSE, out.width="100%"} + +diversiteit_zoetwater_EMSE <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) van zoetwater soorten in de Zeeschelde in de periode 2012-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en EMSE soortgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "diversiteit_S_D_EMSE_zoet.jpg")) + +``` + +
+ +#### Trends in sleutelsoorten + +Van de 25 sleutelsoorten uit de lijst (EMSE 2021) worden er 22 waargenomen in de Zeeschelde met fuiken: 8 mariene en estuariene soorten, 6 diadrome soorten en 8 zoetwater soorten. +Slechts een aantal soorten komen echter in relatief hoge aantallen voor. + + + +***Estuariene soorten en mariene migranten*** + +Van de estuariene en mariene soorten komen brakwatergrondel, zeebaars en schol vrij frequent voor (\> 30 per fuikdag, Figuur \@ref(fig:092-figuur-mariene-sleutelsoorten)). +Ook haring en dikkopje kunnen in vrij grote aantallen voorkomen. +De overige soorten komen slechts in kleine aantallen voor. + +- Brakwatergrondel werd in de eerste jaren vooral in de zone met sterke saliniteitsgradiënt gevangen maar vertoont in recentere jaren grote pieken in het oligohalien en de zoetwater zones. + In `r laatste_jaar` werden veel brakwatergrondels gevangen met de fuiken in de oligohaliene zone en zoet lange verblijftijd. + +- Dikkopje bevindt zich gemiddeld meer stroomafwaarts en is veel minder talrijk dan brakwatergrondel aanwezig in de fuiken. + Er was een eenmalige grote piek in de oligohaliene zone in 2020, ook in 2023 zijn er goede aantallen in de oligohaliene zone. + Hoge aantallen dikkopje zijn waargenomen met de ankerkuilvisserij. + +- Schol komt voor in de zone met sterke saliniteitsgradiëntvangsten, fuikvangsten in `r laatste_jaar` zijn de hoogste tot nu toe. + Een stijgende trend is merkbaar sinds de vangsten van 2017. + +- Zeebaars is hoofdzakelijk aanwezig in de zone met sterke saliniteitsgradiënt. + Aantallen tonen de laatste 10 jaar een eerder afnemende trend. + +- Haring komt vooral voor in de zone met sterke saliniteitsgradiënt. + 2019 en 2021 waren piekjaren voor de oligohaliene zone, 2021 ook voor de zone met sterke saliniteitsgradiënt. + In `r laatste_jaar` was het aantal haringen in de fuikvangsten het hoogst in de zone met sterke saliniteitsgradiënt. + +- Zeedonderpad is voor het eerste terug gevangen sinds 2014. + +```{r 092-figuur-mariene-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_marien, out.width="100%"} + +cap_aantal_sleutelsoorten_marien <- + str_c("Aantallen van sleutelsoorten binnen estuariene soorten en mariene migranten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_marien.jpg")) + +``` + +
+ +***Diadrome soorten*** + +De meest voorkomende diadrome sleutelsoorten (\> 10 individuen per fuikdag) zijn bot, paling en (in het verleden) vooral spiering (Figuur \@ref(fig:092-figuur-diadrome-sleutelsoorten)). + +- Bot komt voor in alle scheldezones, maar met fuiken worden veel meer exemplaren in de zone met sterke saliniteitsgradiënt gevangen dan in andere zones, terwijl dat met de ankerkuil eerder in de oligohaliene en zoete zone met lange verblijftijd is. + In `r laatste_jaar` zijn terug hogere aantallen gevangen. + +- Er worden niet elk jaar finten gevangen in de fuiken. + Dat is niet abnormaal voor deze pelagiale soort, die eerder in de waterkolom dan tegen de bodem gevangen wordt. + Hoewel de aantallen recent een stuk lager zijn, kunnen ze in het voorjaar tijdens de paaiperiode toch een belangrijk deel van de biomassa uitmaken in de zoetwaterzone (zie Figuur \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). + Aangezien het om een habitatrichtlijn soort gaat die terugkwam nadat ze lange tijd als uitgestorven beschouwd was, is het belangrijk om door jaarlijkse analyse van paaitrek én rekrutering te evalueren hoe duurzaam deze hervestiging van de fint in de Zeeschelde is. + +- Paling wordt vooral gevangen in het oligohalien en zoetwater en is vooral qua biomassa vrij belangrijk. + +- Spiering is in het algemeen de soort met de hoogste aantallen en biomassa in de Zeeschelde (zie ook Figuur \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-relatief-aantal), \@ref(fig:092-figuur-aantallen-diadroom-EMSE) en \@ref(fig:092-figuur-biomassa-diadroom-EMSE)). + Deze soort vertoonde een heel sterke piek in aantallen in 2014 in de ankerkuilvangsten en in 2015 in de fuikvangsten. + Recent vertonen de fuikaantallen een dalende trend, met in `r laatste_jaar` een bodemjaar, net zoals voor de ankerkuilvangsten. + +```{r 092-figuur-diadrome-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_diadroom, out.width="100%"} + +cap_aantal_sleutelsoorten_diadroom <- + str_c("Aantallen van diadrome sleutelsoorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_diadroom.jpg")) + +``` + +
+ +***Zoetwater soorten*** + +De meest voorkomende zoetwater sleutelsoorten qua aantallen/biomassa zijn blankvoorn, brasem en snoekbaars (Figuur \@ref(fig:092-figuur-zoetwater-sleutelsoorten)). + +- Na een afname in de periode 2009-2015 van het aantal blankvoorns in de fuikvangsten in alle zones behalve het zoet met korte verblijftijd, variëren de aantallen met een trend tot lichte stijging in alle zones behalve de zone met sterke saliniteitsgradiënt. + Ook in `r laatste_jaar` werden er relatief veel blankvoorns gevangen in het oligohalien en zoetwater. + +- De hoogste aantallen brasem worden meestal gevangen in het oligohalien. + Verder vertoont brasem geen duidelijke trend in aantallen. + +- Snoekbaars vangsten in de fuiken blijven relatief stabiel in de laatste 5 jaren met in `r laatste_jaar` lichtjes hogere aantallen in fuiken in meer saline zones. + +```{r 092-figuur-zoetwater-sleutelsoorten, fig.cap=cap_aantal_sleutelsoorten_zoetwater, out.width="100%"} + +cap_aantal_sleutelsoorten_zoetwater <- + str_c("Aantallen van zoetwater sleutelsoorten in de Zeeschelde in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3).") + +knitr::include_graphics(paste0(pad_figuren, "aantallen_sleutelsoorten_EMSE_zoet.jpg")) + +``` + +
+ +#### Alternatieve evaluatie per estuarien habitatgebruik of dieet + +Alternatief aan de EMSE indeling kunnen we het gildenconcept toepassen zoals gebruikelijk en enerzijds het estuarien habitat gebruik door de visgemeenschap evalueren en anderzijds de visgemeenschap positioneren in het estuariene voedselweb. +Op die manier wordt per functioneel aspect de volledige visgemeenschap van de Zeeschelde beschouwd. + +Fuikvangsten en ankerkuil leveren een verschillend beeld op van de relatieve densiteit en biomassa per saliniteitzone. +In de zone met grote saliniteitsgradiënt worden gemiddeld de grootste aantallen per fuikdag gevangen. +De biomassa verdeling toont dan weer een ander beeld naargelang het estuarien gebruik of naargelang het dieet. + +##### Estuarien habitat gebruik + +De resultaten voor aantallen, biomassa en diversiteit per groep van estuarien habitat gebruik worden weergegeven in respectivelijk Figuur \@ref(fig:092-figuur-aantallen-habitat), Figuur \@ref(fig:092-figuur-biomassa-habitat) en Figuur \@ref(fig:092-figuur-diversiteit-habitat). +Het beeld op basis van fuikvangsten is iets complexer en toont andere accenten dan op basis van ankerkuildata. + +In de zone met sterke saliniteitgradiënt overheerst bot zowel naar aantallen als naar biomassa in de groep van mariene migranten. +Sinds 2012 zijn aantallen en biomassa per fuikdag wel plots fel verminderd. +Ook zeebaars en haring zijn steeds in grote aantallen aanwezig, in toenemende mate sinds 2015. +Schol verdween na 2010 maar is sinds 2018 terug aanwezig. +Brakwatergrondel en dikkopje zijn als estuarien residenten ook elk jaar vertegenwoordigd in redelijk grote aantallen. +in 2023 valt de aanwezigheid van schol en vooral steenbolk op. + +In de oligohaliene zone zijn dikkopje en brakwatergrondel samen met haring de belangrijkste soorten uit deze functionele groep. +In de zoete zones is brakwatergrondel de belangrijkste estuariene soort. +De aantallen in de fuikvangsten variëren er sterk, met af en toe een grote piek. +De aantallen en biomassa van grondels bereiken in 2023 hoge waardes in oligohalien en zoet met lange verblijftijd. +In drogere jaren komen ook haring en zeebaars opgroeien tot in de zoete zones. + +Bot is de belangrijkste trekvis in de zone met sterke saliniteitgradiënt, in aantallen én biomassa, in aantallen gevolgd door driedoornige stekelbaars en spiering. +Paling overheerst echter de biomassa en in sommige jaren wegen ook de optrekkende/terugkerende finten mee. +In de meer stroomopwaartse oligohaliene en zoete zones is spiering zonder meer de meest talrijk aanwezige trekvis. +Ook hier overheerst paling echter in de trekvis biomassa, soms bijgestaan door fint. + +Aantallen en biomassa van de zoetwatersoorten vertonen een meer gediversifieerd beeld. +Snoekbaars is de dominante zoetwatersoort in aantal, maar de dominantie is niet zeer uitgesproken. +snoekbaars, karper, europese meerval, brasem en snoek leveren de belangrijkste bijdragen aan de biomassa van zoetwatersoorten. + +De zoewatervissen zijn de meest soortenrijke estuariene gebruiksgroep. +De diversiteit is het grootst voor de zoetwatersoorten in de zoete zone met korte verblijftijd. +Het is vooral in deze groep dat in 2022 en 2023 minder soorten gevangen werden met de fuiken, vermoedelijk ook door het feit dat de vangstinspanning gehalveerd werd. +Mariene soorten en estuariene migranten zijn duidelijk met een hoger aantal soorten en diversiteit (verdubbeling of meer) vertegenwoordigd in de zone met grote saliniteitsgradiënt dan in de andere saliniteitszones. + +
+ +```{r 092-figuur-aantallen-habitat, fig.cap=aantallen_habitat, out.width="110%"} + +aantallen_habitat <- + str_c("Totaal aantal gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_salgroep.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-habitat, fig.cap=biomassa_habitat, out.width="110%"} + +biomassa_habitat <- + str_c("Totale biomassa gevangen individuen voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_salgroep.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-habitat, fig.cap=diversiteit_habitat, out.width="100%"} + +diversiteit_habitat <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) voor elke groep van estuarien habitat gebruik in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en habitatgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_salgroep.jpg")) + +``` + +
+ +##### Dieet + +De resultaten voor aantallen, biomassa en diversiteit per dieetgroep worden weergegeven in respectievelijk Figuur \@ref(fig:092-figuur-aantallen-dieet), Figuur \@ref(fig:092-figuur-biomassa-dieet) en Figuur \@ref(fig:092-figuur-diversiteit-dieet). + + +Benthivoren en omnivoren zijn het meest talrijk en maken ook het grootste deel van de biomassa uit. +Tong in de zone met sterke saliniteitsgradiënt en brakwatergrondel in de zoetwater zone zijn traditioneel de dominante benthivoren qua aantallen. +In 2023 worden er meer schol waargenomen dan tong. +In biomassa blijft tong dominant in de oligohaliene zone en domineert brasem in de zoetwater zone. + +Spiering (zoete zone) en bot (saliniteitsgradiënt) zijn de dominante omnivoren wat betreft aantallen. +Een groot aantal steenbolk laat zich opmerken in 2023 en zijn dominant in biomassa in de zone met sterke saliniteitsgradiënt. +Voor de biomassa bij de omnivoren is er meestal geen duidelijke dominantie tussen de meest aspectbepalende soorten: bot, europese meerval, fint, karper, kolblei, snoek en snoekbaars. +Dit wordt vaak bepaald door de vangst van enkele grote individuen. + +Baars, rivierprik en zeeprik zijn de enige piscivoren die in kleine en sterk wisselende aantallen gevangen worden. +Haring en sprot zijn de enige planktivore soorten van betekenis in de Zeeschelde. + +Omnivoren vormen de meest soortenrijke trofische groep maar de diversiteit in deze groep (berekend op basis van aantallen) blijft toch relatief klein door de dominantie van vooral bot en spiering in de aantallen. +Benthivoren zijn de tweede trofische groep naar soortenrijkdom toe, maar zijn eveneens sterk gedomineerd door een beperkt aantal soorten. + +Net zoals bij de ankerkuilgegevens geldt hier de kanttekening dat de meeste spieringen juveniele planktivoren zijn en dat adulte spiering, europese meerval, snoek, snoekbaars en zeebaars eigenlijk voornamelijk als piscivoor gekend staan in de Zeeschelde. + +
+ +```{r 092-figuur-aantallen-dieet, fig.cap=aantallen_dieet, out.width="110%"} + +aantallen_dieet <- + str_c("Totaal aantal gevangen individuen per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde aantallen per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_aantallen_tot_aantal_dieet.jpg")) + +``` + +
+ +```{r 092-figuur-biomassa-dieet, fig.cap=biomassa_dieet, out.width="110%"} + +biomassa_dieet <- + str_c("Totale biomassa gevangen individuen per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde biomassa per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/relatieve_biomassa_tot_biomassa_dieet.jpg")) + +``` + +
+ +```{r 092-figuur-diversiteit-dieet, fig.cap=diversiteit_dieet, out.width="100%"} + +diversiteit_dieet <- + str_c("Aantal soorten (S, lichtblauw) en Shannon diversiteit (D, donkerblauw) per dieetgroep in de periode 2009-",laatste_jaar,". Jaargemiddelde diversiteit per scheldezone (EMSE, niveau 3) en dieetgroepen.") + +knitr::include_graphics(paste0(pad_figuren, "EMSE_alternatief/diversiteit_S_D_dieet.jpg")) + +``` + +
+ +#### Visindex + +We berekenden de indexwaarden voor alle beschikbare gegevens (Tabel \@ref(tab:092-tabel-visindex), Figuur ). +De evolutie van de visindex in de Zeeschelde is ook één van de INBO natuurindicatoren () + +In de periode 2011-2020 was deze indicator redelijk stabiel in vergelijking tot het decennium dat daaraan voorafging: De zoete zone scoorde doorgaans beter dan de zone met sterke saliniteitsgradiënt en de oligohaliene zone had meestal de laagste score. +De laatste twee jaren daalde de EQR van de zoete zone echter van goed ecologisch potentieel in 2020 over matig in 2021 naar ontoereikend in 2022 en `r laatste_jaar`. +De beide andere zones haalden nog nooit de goede ecologische toestand en scoren beide ontoereikend in `r laatste_jaar`. + +Figuur \@ref(fig:092-figuur-spindiagram) geeft voor elke zone een indicatie van de ecologische aspecten die minder en beter scoren in `r laatste_jaar`. +Zie Tabel \@ref(tab:090-tabel-metrieken-visindex) voor verklaring van de afkortingen. +In de zoetwaterzone scoren alle metrieken slecht behalve het totaal aantal soorten en het aantal individuen per fuikdag. +Vooral het percentage van gespecialiseerde paaiers trekt het geheel omlaag. +In de oligohaliene zone scoren alle metrieken laag en het totaal aantal individuen per fuikdag goed. +In de saliniteitsgradiënt is de score voor alle metrieken laag. + +```{r 092-tabel-visindex} + +tabel_visindex <- + read_excel(paste0(maak_pad(hoofdstuk, "tabellen"), "visindexreeks.xlsx"), + sheet = "tabel1995_2022", + skip = 1) + +cap_visindex <- + paste0("De EQR-waarde en appreciatie per jaar per saliniteitszone in de Zeeschelde (1995-", laatste_jaar, ") berekend met de zone-specifieke index.") + +tabel_visindex %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + knitr::kable(booktabs = TRUE, + caption = cap_visindex, + # align = c("l", rep("c", 12)), + col.names = rep(c("jaar", "EQR", "appreciatie"), 3), + escape = FALSE, + linesep = "") %>% + add_header_above(c("Zoetwater zone" = 3, "Oligohaliene zone" = 3, "Mesohaliene zone" = 3)) %>% + kable_styling("striped", + latex_options = c("striped")) + +``` + +
+ +```{r 092-figuur-visindex, fig.cap=cap_fig_visindex, out.width="100%"} + +cap_fig_visindex <- + paste0("De EQR-score per jaar en per saliniteitszone in de Zeeschelde (1995-", laatste_jaar, ") berekend met de zone-specifieke index.") + +knitr::include_graphics(str_c(maak_pad(hoofdstuk, "figuren/EQR"), "visindex_EQR.png")) + +``` + +
+ +```{r 092-figuur-spindiagram, fig.cap=cap_spindiagram, out.width="70%", fig.show="hold", fig.fullwidth=TRUE} + +cap_spindiagram <- + str_c("Metriek scores en EQR voor de verschillende saliniteitszones van de Zeeschelde in ",laatste_jaar,". Zie tabel 1.2 voor betekenis metrieken") + +figs_spin <- + list.files(maak_pad(hoofdstuk, "figuren/EQR"), full.names = TRUE) %>% + str_subset("spin") %>% + sort() + +knitr::include_graphics(figs_spin) + +``` + +
diff --git a/moneos_2024/150_geintegreerd_rapport/093_vissen_conclusies.Rmd b/moneos_2024/150_geintegreerd_rapport/093_vissen_conclusies.Rmd new file mode 100644 index 0000000..4512f45 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/093_vissen_conclusies.Rmd @@ -0,0 +1,308 @@ +```{r 093-hoofdstuk, include=FALSE} + +hoofdstuk <- "090_vissen" + +``` + +```{r 093-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H") +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 093-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(rprojroot) ## workaround pad + +``` + +```{r 093-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 093-table_from_figure-function} + +figtab <- + function(label, image_file, caption=NULL) { + txt <- sprintf('\\begin{table}[H]\n\\caption{%s}\n\\label{tab:%s}\n\\includegraphics{%s}\n\\end{table}', + caption, + label, + image_file) + magick::image_read(image_file) %>% magick::image_ggplot() %>% print() + writeLines(txt) + } + +``` + +```{r 093-meta-data} + +meta_data <- + read_delim(paste0(pad_data, "vissen_meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +## Algemene conclusies + +### Afvissingen in `r laatste_jaar` + +`r laatste_jaar` was een tweede **bodemjaar** op rij **voor het aantal spieringen** in de Zeeschelde. +Dit geldt zowel voor de ankerkuil als voor de fuikvangsten, waardoor het beeld van de absolute dominantie van deze soort zelfs in het pelagiaal vervaagt. +Sterke schommelingen in spiering aantallen werden vroeger al opgemerkt in andere gebieden en kunnen deels teruggebracht worden op lage densiteiten van 1 of 2 jaarklassen (Belyanina 1969), waarbij verschillen in leeftijdssamenstelling van populaties voor een stuk gelinkt zijn met verschillen in groeisnelheid en maturatie van de verschillende jaarklassen (Lapin, 1960). +Om hier een beter zicht op te krijgen zou voor de Schelde ruimtelijke en seizoenale patronen per leeftijdgroep over de jaren heen geanalyseerd moeten worden in relatie tot abiotiek en beheer. + +In 2023 werd met de ankerkuil **uitzonderlijk veel grondels** (*Potamoschistus* sp.) gevangen in vooral het najaar in Branst en Steendorp. +In Steendorp ging het om brakwatergrondel, in Branst opmerkelijk om dikkopje. + +De **visindex** voor zowel zoet, oligohalien als sterke saliniteitsgradiënt bereikt in 2023 een ontoereikende status. +Interpretatie dient met de nodige voorzichtigheid te gebeuren. +De **vangstinspanning met de fuiken is in 2022 en 2023 gehalveerd**. +Fuiken werden telkens 1 in plaats van 2 etmaal uitgezet. +Dit had een invloed op het aantal gevangen soorten. +Verschillende van de metrieken gebruikt in de visindex (Breine et al. 2010) zijn direct gerelateerd aan het aantal soorten en hierdoor zal mogelijks een breuk in de trends van soortenrijkdom bij fuikvangsten ontstaan. +Opmerkelijk is wel dat de visindex al een ferme duik neemt in 2021, vergelijkbaar met 2016, een afname die best in meer detail bekeken wordt. + +### Algemene kenmerken van de Zeeschelde populaties. + +Naar **estuarien habitatgebruik** overheersen de trekvissen de visgemeenschappen van de Zeeschelde in aantal en biomassa. +Het estuarium heeft dus weer zijn functie opgenomen in de levenscyclus van deze soorten. +Om te evalueren of de populaties echt gevestigd en duurzaam zijn is echter een cohorte analyse van de betrokken soorten in tijd en ruimte nodig. + +Naar **dieet** overheersen omnivore soorten, een normale opportunistische evolutie in een estuarium met wisselende levensomstandigheden. +Toch wordt het voedselweb stilaan complexer. +Dit uit zich in een toename van benthivore en piscivore soorten. +Om dit echt te evalueren moet voor de belangrijkste soorten rekening gehouden worden met de dieet shift die ze maken in de overgang van juveniel naar adult. +Ook worden in de EMSE classificatie een aantal gekende piscivoren (volwassen spiering, snoekbaars, zeebaars, snoek, europese meerval) over de volledige levenscyclus tot omnivoren gerekend. +Voor de soorten die de grootste biomassa uitmaken kunnen gerichte maag- en isotoopanalyses zoals voorgesteld in en ter ondersteuning en vervolg op Van de Meutter et al (2021) een het beeld van voedselinteracties verscherpen. + +### Ankerkuil versus fuikresultaten + +Ankerkuilvisserij geeft een goed beeld van de visgemeenschap in de waterkolom, fuikvisserij bemonstert eerder nabij de bodem en beide methoden verschaffen complementaire informatie. +Algemeen worden meer soorten gevangen met de ankerkuil. +De veel grotere omvang van de vangst vergroot de kans op éénmalige vangst van zeldzaamheden. +De resultaten van de fuikvangsten leveren echter een hogere Shannon diversiteit (Breine & Van den Bergh, 2022). + +In deze rapportage kwamen echter nog opvallende verschillen aan bod: + +- Fuikvangsten en ankerkuil leveren een verschillend beeld op van de relatieve densiteit en biomassa per saliniteitszone. + Met de ankerkuil worden de meeste vissen per m³ gevangen in de zoete zone en het minst in de zone met sterke saliniteitsgradiënt. + In deze laatste zone worden echter gemiddeld de grootste aantallen met fuiken gevangen. + Beide methoden leveren dus een omgekeerd beeld op van relatieve vis densiteit per saliniteitszone. + +- Pieken en dalen in de aantallen van de sleutelsoorten verschillen sterk tussen vangstmethodes. + De grote spieringpiek in de ankerkuildata valt in bijvoorbeeld in 2014 terwijl die in 2015 valt op basis van de fuikgegevens. + Voor haring waren dat 2022 en 2021 respectievelijk. + +Hieruit kunnen we enerzijds afleiden dat het omzetten van vangstaantallen naar aantal per volume eenheid niet zo evident is. +Anderzijds zijn plaats en tijdstip zeer bepalend voor het beeld dat we ons vormen van de visgemeenschap. +Concluderend is er een noodzaak om met innovatieve monitoring (bijvoorbeeld met echosounding) continue data te verzamelen over de visgemeenschap op de besproken vislocaties. +Dit onderzoek moet helpen om de variaties in de vispopulaties in ruimte en tijd te verklaren. +Omgekeerd levert de klassieke monitoring informatie over de aanwezige soorten. + +### EMSE methodiek + +- EMSE soortenlijsten en categorieën voor de Zeeschelde moeten blijvend kritisch bekeken worden. + +- Het 'nesten' van gilden maakt de rapportage langer en ingewikkelder en levert geen helderder beeld op van de functies van de Zeeschelde voor visgemeenschappen. + +- Naar estuarien habitat gebruik zou het duidelijker zijn om mariene migranten en estuariene residenten als aparte groepen te beschouwen. + +- Dieetshifts in de overgang van juvenielen naar adulten mee in rekening brengen zou het inzicht in de trofische relaties verbeteren. + +- Om de duurzaamheid van de belangrijkste populaties beter in te schatten zijn cohorte analyses en evaluatie van rekrutering aangewezen. + +- EMSE stelt voor om voor de visgemeenschappen afhankelijk van de soort gebruik te maken van of ankerkuil of fuikgegevens. + Om de visgemeenschap op een zinvolle manier in zijn geheel te evalueren is het beter om alle soorten op basis van beide datasets te beoordelen. + + +## Referenties + +Able K. +(2005). +A re-examination of fish estuarine dependence: Evidence for connectivity between estuarine and ocean habitats. +Estuarine, Coastal and Shelf Science. +64 (1): 5-17. + +Baldoa F. +& Drake P. (2002). +A multivariate approach to the feeding habits of small fishes in the Guadalquivir Estuary. +Journal of Fish Biology. +61: 21-32. + +Belyanina T. N.  +(1969).  +Synopsis of biological data on smelt *Osmerus eperlanus* (Linnaeus, 1758).  +FAO Fisheries Synopsis. +No. 78. + +Breine J.J., Maes J., Quataert, P., Van den Bergh, E., Simoens, I., Van Thuyne, G. +& C. +Belpaire (2007). +A fish-based assessment tool for the ecological quality of the brackish Schelde estuary in Flanders (Belgium). +Hydrobiologia, 575: 141-159. + +Breine, J., Quataert, P., Stevens, M., Ollevier, F., Volckaert, F.A.M., Van den Bergh, E. +& J. +Maes (2010). +A zone-specific fish-based biotic index as a management tool for the Zeeschelde estuary (Belgium). +Marine Pollution Bulletin, 60: 1099-1112. + +Breine J. +& Van den Bergh E. +(2022). +Vissen in de Zeeschelde: vertellen ankerkuil en fuiken hetzelfde? +Scheldesymposium Antwerpen. + +Brosens D., Breine J., Van Thuyne G., Belpaire C., Desmet P. & Verreycken H. +(2015) VIS - A database on the distribution of fishes in inland and estuarine waters in Flanders, Belgium. +ZooKeys 475: 119-145. +doi: 10.3897/zookeys.475.8556 + +de Boois I. J. +& Couperus A.S. +(2022). +Ankerkuilbemonstering in de Westerschelde. +Resultaten 2022 en meerjarenoverzichten. +WUR rapport C071/22. +39pp. +Wageningen. + +Elliott M. +& Hemingway K.L. +(2002). +In: Elliott, M. +& Hemingway K.L. +(Editors). +Fishes in estuaries. +Blackwell Science, London. +577-579. + +EMSE (2021). +Evaluatiemethodiek Schelde-estuarium: Update 2021. +Antea, Bureau Waardenburg, Deltares, UAntwerpen, UGent, INBO en NIOZ. + +Lapin I.E. (1960). +On peculiarities of population dynamics in short lived fishes (freshwater smelt 1960 as example). +Zoologicheskii Zhurnal. +39(9): 1371-83. + +Maes J., Stevens M. +& Breine J. +(2007). +Modelling the migration opportunities of diadromous fish species along a gradient of dissolved oxygen concentration in a European tidal watershed. +Estuarine, Coastal and Shelf Science. +75: 151-162. + +Maes J., Stevens M. +& Breine J. +(2008). +Poor water quality constrains the distribution and movements of twaite shad *Alosa fallax fallax* (Lacépède, 1803) in the watershed of river Scheldt. +Hydrobiologia. +602: 129-143. + +Maris T., Geerts L., & Meire P. (2011). +Basiswaterkwaliteit In Maris T. +& P. +Meire (Eds) Onderzoek naar de gevolgen van het Sigmaplan, baggeractiviteiten en havenuitbreiding in de Zeeschelde op het milieu. +Geïntegreerd eindverslag van het onderzoek verricht in 2009-2010. +011-143 Universiteit Antwerpen, 169pp. + +Scholle J. +& Schuchardt B. +(2019). +Analysis of longer-term data on the abundance of different age classen of stints (*Osmerus eperlanus*) in the Elbe estuary and the other Wadden Sea estuaries. +Bioconsult Bremen. +95pp. + +Scholle J. +& Schuchardt B. +(2020). +Analysis of longer-term data on the abundance of different age classen of stints (*Osmerus eperlanus*) in the Elbe estuary. +Part 2 possible influencing factors. +Bioconsult Bremen. +108 pp. + +Stevens M., Van den Neucker T., Mouton A., Buysse D., Martens S., Baeyens R., Jacobs Y., Gelaude E. +& Coeck J. +(2009). +Onderzoek naar de trekvissoorten in het stroomgebied van de Schelde. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2009 (INBO.R.2009.9), 188pp. + +Van de Meutter F, De Regge N, Bezdenjesnji, O (2021). +Dieetanalyse van hogere trofische niveaus in de Zeeschelde: deel vissen. +Resultaten van een studie met stabiele isotopen. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2021 (41). +Instituut voor Natuur- en Bosonderzoek, Brussel. +DOI: doi.org/10.21436/inbor.44407431 + +Van Der Meulen D., Walsh C., Taylor M. +& Gray C. +(2013). +Habitat requirements and spawning strategy of an estuarine-dependent fish, Percalates colonorum. +Marine and Freshwater Research. +65 (3): 218-227. + +\newpage + +## Bijlage + +```{r 093-tabel-zeeschelde-soorten} + +soortenlijst <- + read_xlsx(str_c(pad_data, "soorten_Zeeschelde.xlsx"), + sheet = "EMSE") %>% + select(-inEMSE, -exoot, -opmerking) %>% + rename(`Nederlandse naam` = soort, `Wetensch. naam` = wetensch_naam, + Saliniteitsgroep = salgroep, Dieet = dieet, + Fuiken = fuiken, Ankerkuil = ankerkuil) + +sleutelsoorten_EMSE <- + read_xlsx(str_c(pad_data, "sleutelsoorten EMSE.xlsx")) + +cap_soortenlijst <- + paste0("Overzicht van alle waargenomen vissoorten tijdens de ankerkuilcampagnes en fuikvangsten in de Zeeschelde in de periode 2009-", + laatste_jaar, + ". Soorten in vet en cursief geven de sleutelsoorten weer uit de EMSE evaluatie.") + +soortenlijst %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(`Wetensch. naam` = str_to_sentence(`Wetensch. naam`)) %>% + mutate(across(c(-`Nederlandse naam`, -`Wetensch. naam`), ~cell_spec(., color = "black"))) %>% + # mutate(across(everything(), ~cell_spec(., , bold = TRUE, italic = TRUE, color = "black", background = "lightgreen"))) %>% + mutate(`Nederlandse naam` = + if_else(`Nederlandse naam` %in% sleutelsoorten_EMSE$soort, + cell_spec(`Nederlandse naam`, bold = TRUE, italic = TRUE, color = "black"), + cell_spec(`Nederlandse naam`, color = "black"))) %>% + mutate(`Wetensch. naam` = cell_spec(`Wetensch. naam`, italic = TRUE, color = "black")) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + longtable = TRUE, + caption = cap_soortenlijst, + align = c(rep("l", 4), rep("c", 2)), + linesep = "") %>% + kable_styling(latex_options = c("striped", "scale_down"), + font_size = 9) + +``` diff --git a/moneos_2024/150_geintegreerd_rapport/100_watervogels.Rmd b/moneos_2024/150_geintegreerd_rapport/100_watervogels.Rmd new file mode 100644 index 0000000..9e35c27 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/100_watervogels.Rmd @@ -0,0 +1,651 @@ +--- +output: + pdf_document: default + html_document: default +editor_options: + markdown: + wrap: sentence + chunk_output_type: inline +--- + +```{r 100-hoofdstuk, include=FALSE} + +hoofdstuk <- "100_watervogels" + +``` + +```{r 100-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H", out.extra = '') +knitr::opts_knit$set(eval.after = "fig.cap") + + +``` + +```{r 100-libraries} + +library(tidyverse) +library(readxl) +# library(flextable) +# library(officer) +library(kableExtra) +# library(huxtable) +# library(pander) +# library(ztable) +# library(magick) +# library(webshot) +library(rprojroot) +``` + +```{r 100-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 100-meta_data} + +meta_data <- + read_delim(paste0(pad_data, "meta_data.csv"), + delim = ";") + +for(i in 1:nrow(meta_data)){ + ##first extract the object value + tempobj=meta_data$waarde[i] + ##now create a new variable with the original name of the list item + eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +} + +``` + +# Watervogels + +Fichenummer: FICHE S-DS-V-007a -- Maandelijkse vogeltellingen\ +Fichenummer: FICHE S-DS-V-007b -- Vogeltellingen zijrivieren\ +Fichenummer: FICHE S-DS-V-007c -- Vogeltellingen sigmagebieden (estuarien) + +**Gunther Van Ryckegem**, Jan Soors, Nico De Regge + +## Inleiding + +Overwinterende en doortrekkende watervogels kunnen indicatief zijn voor het estuarien ecosysteemfunctioneren. +Veranderingen in aantallen watervogels kunnen echter veroorzaakt zijn door factoren zowel buiten (bijvoorbeeld klimaatverandering, Europese populatietrends, de situatie in broedgebieden...) als binnen het estuarium. +Interne factoren zijn bijvoorbeeld wijzigingen in voedselaanbod, foerageerareaal, binnendijks habitat, verstoring,... +. Trends moeten dus steeds in een ruimer kader en met de nodige omzichtigheid geëvalueerd worden. + +De eerstelijnsrapportage beschrijft de aangeleverde watervogeldata van de Zeeschelde, de zijrivieren en estuariene natuurontwikkelingsprojecten, met focus op de verzamelde tellingen tot de winter van `r as.numeric(laatste_jaar) - 1` (eindigend in maart `r laatste_jaar`). +De data werden gefilterd uit de INBO watervogeldatabank. + +De evaluatie heeft volgende informatie nodig: aantallen vogels per soort per maand per segment op niveau 2 en 3 (niveau 2 is som van de KRW waterlichamen; niveau 3 heeft betrekking op het KRW waterlichaam of de saliniteitszone (Evaluatiemethodiek, 2021). +De getijdenetes worden hier niet mee gerapporteerd omdat ze geen apart afgebakend telgebied zijn in de INBO watervogeldatabank. + +Er zijn 2 datasets: 1 voor de rivieren zelf en 1 voor estuariene natuurontwikkelingsgebieden. +De eerste bevat de informatievelden KRW_zone, rivier, telseizoen, nednaam, aantal, maand, ruimtelijke niveau's, trofische groep en exoot. +De tweede bevat eveneens informatievelden Sigmagebiedstype en niveau3. + +- KRW_zone: naam van het KRW waterlichaam +- rivier: het naamveld van de rivier (Zeeschelde, Durme, Rupel, Zenne, Dijle) +- telseizoen: een vogeltelseizoen loopt van juli jaar x tot en met juni jaar x+1. +- nednaam: Nederlandse naam van de vogelsoort +- aantal: de aantallen omvatten de som van de getelde vogels per soort, per maand, per rivier en deelzone niveau 1,2,3. +- niveau's: indeling volgens Figuur 1.1. +- maand: de maand van de telling +- trofische_groep: toekenning van de gebruikte trofische categorie in de Zeeschelde +- exoot: ja (= 1) +- Sigmagebiedstype: ontpoldering of GGG + +## Materiaal en methode + +#### Tellingen + +*Boottellingen* + +Sinds oktober 1991 tellen medewerkers van het INBO maandelijks het aantal watervogels langs de Zeeschelde van de Belgisch-Nederlandse grens tot Gent. +Sinds de winter van 1995/1996 wordt ook op de Rupel geteld van de Rupelmonding tot het sas van Wintam. +De tellingen gebeuren vanaf een boot en bij laagwater. +Omdat het niet haalbaar is om het volledige onderzoeksgebied grondig te tellen tijdens één laag tij, worden de tellingen op drie dagen uitgevoerd langs de deeltrajecten Grens-Antwerpen, Antwerpen-Dendermonde en Dendermonde-Gent. +De dagen worden steeds gegroepeerd in het midden van de maand om zo nauw mogelijk aan te sluiten bij de midmaandelijkse watervogeltellingen Vlaanderen (MIDMA). +Oorspronkelijk werd enkel tijdens de winter (oktober -- maart) geteld. +Sinds 1993 wordt ook tijdens de zomer geteld. +Sinds het telseizoen 2018/19 zijn maandelijkse zomertellingen (april - september) beperkt tot het traject Grens-Antwerpen en wordt enkel in juni over het volledige traject van de grens tot Gent geteld in de zomer. +Duikers, futen, aalscholvers, reigers, zwanen, ganzen, eenden, steltlopers, meerkoet en waterhoen worden geteld sinds het begin van de tellingen. +Sinds oktober 1999 worden ook de meeuwen en sternen meegeteld. + +*Zijrivieren* + +Watervogels langs de zijrivieren (behalve van de Rupelmonding tot het sas van Wintam) en het traject Melle-Gentbrugge worden door vrijwilligers geteld als onderdeel van de midmaandelijkse watervogeltellingen Vlaanderen. +Deze tellingen gebeuren vanaf de oever en gaan enkel door in de winter (oktober-maart). +Meeuwen, sternen, wulp, kievit en waterhoen worden langs de zijrivieren maar meegeteld sinds oktober 1999. + +*Estuariene natuurontwikkelingsgebieden* + +De estuariene natuurontwikkelingsgebieden worden geteld door vrijwilligers of door INBO medewerkers. +Alle watervogels worden geteld. + +#### **Ruimtelijke en temporele afbakening data** + +De aangeleverde data lopen van oktober 1991 tot en met maart `r laatste_jaar` en omvatten de Zeeschelde, zijrivieren en de estuariene natuurontwikkelingsgebieden. + +*Boottellingen* + +De data omvatten de aantallen watervogels die op de Zeeschelde en de Rupel geteld werden tijdens de boottellingen. +Daaraan zijn de aantallen toegevoegd die vanop de dijk geteld werden op het traject Melle-Gentbrugge (traject Tijgebonden oude Schelde Gent - tot aan monding Ringvaart (2050810) in de INBO watervogeldatabank). +Om de data voor het KRW waterlichaam ZSIII+Rupel te vervolledigen zijn ook de dijktellingen op de Rupel stroomopwaarts Wintam sas toegevoegd. +De zone oligohalien omvat enkel de boottellingen op de Zeeschelde zonder die op de Rupel. +De teltrajecten (9999999 en 9999998) gelegen op Nederlands grondgebied werden niet mee opgenomen in de data. + +*Zijrivieren* + +De geselecteerde teltrajecten van de zijrivieren (Watervogeldatabank, INBO) zijn weergegeven in Tabel \@ref(tab:100-tabel-teltrajecten). +Voor de Getijdenetes zijn geen afzonderlijke riviertellingen beschikbaar; voor de Getijdedijle is slechts een beperkte dataset beschikbaar (1996, 1999 en verder vanaf 2008). +Eén teltraject in de Durme (Durmemonding tot Mirabrug) werd niet geteld in 2007-2008. + +*Estuariene natuurontwikkelingsgebieden* + +De geselecteerde natuurontwikkelingsgebieden (GGG's en ontpolderingen) zijn weergegeven in Tabel\@ref(tab:100-tabel-estuarienesigmagebieden). +Het betreft alle recent ingerichte sigmagebieden opgenomen in het Meest Wenselijke Alternatief (Zie hoofdstuk 2). +De overige gebieden worden in de mate van het mogelijke meegeteld met de boottellingen. +Sinds oktober 2022 werd Hedwige-Prosperpolder ontpolderd. +Deze gegevens zijn momenteel nog niet in de databank opgenomen. +Sinds juli 2021 is de ontpoldering Groot Schoor Hamme uitgevoerd. +De vogelaantallen geteld bij laagwater in het bootteltraject namen hierdoor gevoelig toe. +Terwijl er lage aantallen geteld werden tijdens de MIDMA tellingen in het gebied zelf. +Dit heeft te maken met het getij-afhankelijke foerageren. +De vogels zitten vooral in de ontpoldering bij opkomend getij. +Om het effect van de estuariene Sigmagebieden te tonen werd hiervoor gecorrigeerd in de data door de surplus aan vogels in het teltraject sinds 2021 te beschouwen als vogels afhankelijk van het Groot Schoor Hamme (en dus niet mee te tellen in de Zeeschelde aantallen). + + +*Ontbrekende data*: + +Deze eerstelijnsrapportage werkt met de effectieve data. +Er gebeurde geen imputing van ontbrekende data. + +**2022/23** + +**INBO** Zeeschelde boottellingen zijn volledig uitgevoerd zoals gepland. + +**MIDMA** Durme monding - Mira-brug TIELRODE : geen telling in oktober 2023. +Zenne Zennegat - Hombeekbrug MECHELEN : geen telling in maart 2024. +Tijgebonden Oude Schelde Gent - monding Ringvaart- enkel een telling in oktober 2023 (5 ontbrekende tellingen). +Dijle Netemonding - Mechelen: geen telling in februari en maart 2024. +Rupel Wintam-sas tot brug Boom: geen telling in januari en maart 2024 + +*Winterkarakteristiek telseizoen 2022/23*: + +De winter van 2023/24 [^100_watervogels-1] was klimatologisch zeer warm en nat. +Er was één langere koude periode midden januari. +Met voor het eerst sinds februari 2021 4 winterse dagen (max \< 0°C). +Daarna volgde een zeer warme februari, een absoluut record. +In totaal telde de winter 5 sneeuwdagen in december en januari (17 januari was dag met zware sneeuwval) en in totaal 17 vriesdagen (min \< 0°C). +De winter was de derde natste winter ooit met heel weinig zonnige dagen en een hoge gemiddelde windsnelheid. + +[^100_watervogels-1]: KMI winter `r laatste_jaar` (dec `r as.numeric(laatste_jaar) - 1` - feb `r laatste_jaar`) \~= wintervogeljaar (telseizoen `r laatste_telseizoen`). + + + + + + + +```{r 100-tabel-teltrajecten} + +tabel_teltrajecten <- read_excel(paste0(pad_tabellen, "100_Watervogels_tabellen.xlsx"), + sheet = "teltrajecten", .name_repair = "minimal") %>% + mutate_all(~replace_na(., "")) + + +cap_teltrajecten <- "Geselecteerde teltrajecten van de zijrivieren opgenomen in de exploratieve data-analyse en in de data-aanlevering." + +footnote_text <- "Opgelet dit teltraject omvat data van zowel de getijgebonden Durme als van de afgesneden ‘oude’ Durme-arm. Sinds oktober 2012 wordt de getijgebonden Durme afzonderlijk geteld." + +tabel_teltrajecten %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + {.[3,4] <- paste0(.[3,4], + footnote_marker_number(1)) + .} %>% + knitr::kable( + # caption = cap_teltrajecten, + # "html", + booktabs = TRUE, + escape = FALSE, + caption = cap_teltrajecten) %>% + kableExtra::kable_styling(latex_options = c("scale_down"), + font_size = 15) %>% + # kable_styling(latex_options = c("scale_down")) %>% + footnote(number = footnote_text, + escape = FALSE, + threeparttable = TRUE) + +``` + +
+ + + + + + + +```{r 100-tabel-estuarienesigmagebieden} + +tabel_sigma_estuarien <- + read_delim(paste0(pad_tabellen, "gebiedsgroepenSigma_zeeschelde.csv"), + delim = ";") + +tabel_sigma_estuarien <- tabel_sigma_estuarien %>% + dplyr::filter(gebiedsgroep == "GGG" | gebiedsgroep == "Ontpoldering") %>% + select(-c(gebiedsgroeptype_code, gebiedsgroeptype, gebiedsgroep_code)) %>% + mutate(niveau3 = fct_relevel(niveau3, c("Saliniteitsgradient","Oligohalien","Zoet lang verblijf","Zoet kort verblijf"))) %>% + arrange(niveau3) + +cap_estuarienesigmagebieden <- "Geselecteerde estuariene gebieden opgenomen in de exploratieve data-analyse (ifv IHD) en in de data-aanlevering. Ontpoldering Prosperpolder Noord (sinds okt. 2022) ontbreekt nog als telgebied in databank" + +footnote_text <- "De watervogels in de Fasseitpolder worden niet afzonderlijk geteld en zijn vervat in het wetland-telgebied GOG Bazelse Polder Zuid" + +tabel_sigma_estuarien %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black"))) %>% + {.[3,4] <- paste0(.[3,4], + footnote_marker_number(1)) + .} %>% + knitr::kable( + #caption = cap_estuarienesigmagebieden, + # "html", + booktabs = TRUE, + escape = FALSE, + caption = cap_estuarienesigmagebieden) %>% + kableExtra::kable_styling(latex_options = c("scale_down"), + font_size = 15) %>% + kableExtra::kable_styling(latex_options = c("scale_down")) %>% + footnote(number = footnote_text, + escape = FALSE, + threeparttable = TRUE) + +``` + +
+ +## Exploratieve data-analyse watervogelaantallen + +De exploratieve data-analyse van de overwinterende watervogels van de Zeeschelde en getijgebonden zijrivieren volgt de vernieuwde evaluatiemethodiek (EMSE, 2021) mits een aantal doorgevoerde aanpassingen: + +*voedselgroepen*: de weerhouden vogelsoorten (met meer dan 30 waarnemingen cf. EMSE, 2021) zijn ingedeeld in 4 categoriën (Tabel \@ref(tab:100-tabel-trofischegroepsoorten)): benthoseters (omvatten schelpdiereters, wormeneters, hyperbenthoseters en epibenthoseters), viseters, herbivoren en omnivoren (omvatten bijna alle eendensoorten in de Zeeschelde - deze voeden zich doorgaans opportunisistisch maar in belangrijke mate met Oligochaeta). +De vleeseters (roofvogels) worden niet systematisch geteld bij de watervogeltellingen en werden niet meegenomen. + +*Areaal foerageergebied*: voor deze oefening werd de dichtheid van de vogelaantallen berekend op basis van het areaal slik zacht substraat aanwezig langs de deelzones van de Zeeschelde en zijrivieren (zonder Sigma natuurontwikkelingsgebieden). + +*Sleutelsoorten*: de sleutelsoorten niet-broedvogels in de Zeeschelde zijn soorten met een instandhoudingsdoelstelling (S-IHD) []. +Deze zijn gebaseerd op gemiddelde overwinterende aantallen in gedefinieerde periodes voor elke soort in de estuariene gebieden van de Zeeschelde en zijrivieren Rupel, Durme, Dijle en Zenne (voor de Netes zijn er geen telgegevens over de estuariene habitats apart). +We leggen voor EMSE de klemtoon op de soorten die een sterke connectie hebben met de estuariene habitats (kleine zwaan, slobeend en kokmeeuw laten we buiten beschouwing). + +- pijlstaart : winter seizoensgemiddelde telseizoen 2000/01 tot 2005/06: 487ex. +- wintertaling : winter seizoensgemiddelde telseizoen 1998/99 tot 2005/06: 14584ex. +- krakeend: winter seizoensgemiddelde telseizoen 2002/03 tot 2006/07: 2408ex. +- tafeleend: winter seizoensgemiddelde telseizoen 2001/02 tot 2006/07: 3864ex. +- bergeend: winter seizoensgemiddelde telseizoen 1992/93 tot 2006/07: 1272ex. + +*Indexen*: Om de trends te bespreken is er een index berekend met 2009 als referentiejaar en gebaseerd op de maximale winteraantallen. +Dit jaar is gekozen omdat er dan voor alle deelzones gegevens zijn en het referentiejaar valt na de systeemomslag. +Zo kan de trend in de verschillende deelzones in detail geëvalueerd worden voor de laatste jaren. +De Shannon-index toont de algemene patronen in de diversiteit. + +**Globaal patroon** + +Het globaal patroon in de maandelijkse wintervogelaantallen langsheen de Zeeschelde op de slikken (zonder Sigma natuurontwikkelingsgebieden) toont een sterke afname in vogelaantallen tussen 2002 en 2008, in 2010 en 2011 waren de vogelaantallen iets hoger. +In het winterjaar 2020 (okt '20 - mrt '21) was er een winterinflux door koude temperaturen. +De tellingen tonen een iets hoger wintermaximum[^100_watervogels-2] door de korte koudepiek in januari maar het wintergemiddelde was het laagste sinds het begin van de meting (Figuur \@ref(fig:100-figuur-maandelijkse-totalen-winter-Zeeschelde), Figuur \@ref(fig:100-figuur-index-niveau2), Figuur \@ref(fig:100-figuur-aantallen-niveau2)). +De proportionele verdeling van de watervogels over de verschillende zones van de Zeeschelde (zie in Figuur 1.1) toont na de sterke afname van de watervogels in winter 2006/07, vooral in de oligohaliene zone, een geleidelijke toename van het aandeel vogels dat verblijft in de sterke saliniteitsgradiënt (Beneden-Zeeschelde) en Zeeschelde I (zoet kort verblijf). +De vogelaantallen namen verhoudingsgewijs in 2022 sterk toe in de sterke saliniteitsgradiënt (Beneden-Zeeschelde) (Figuur \@ref(fig:100-figuur-verhouding-aantallen)). + +[^100_watervogels-2]: Maximum van de som van alle vogels per wintermaand (oktober tot en met maart). + +**Bespreking per deelgebied** (Figuur \@ref(fig:100-figuur-index-niveau3)): + +Nieuwe SIGMA ontwikkelingen trekken veel watervogels aan. +Deze gebieden zijn niet vervat in onderstaande trendgrafieken. +De bijdrage van de Sigmagebieden wordt verderop besproken. + +In de zone met sterke **Saliniteitsgradient** (Kennedytunnel -- Grens) vertonen de winteraantallen een dalende trend tot 2019. +Tussen 2019 en 2022 was de index stijgend. +Er was opnieuw een kleine afname voor winterseizoen 2023/24. +Tegenover het beschouwde referentiejaar 2009 is er een afname met ongeveer de helft van de maximale vogelaantallen. +De terugval is vooral waarneembaar in een sterke afname van de aantallen smient, wintertaling en grauwe gans (zie verder soortbesprekingen). +De laatste winters worden hogere aantallen tureluur, scholekster en wulp geteld, hierdoor stijgt de index in deze zone. + +**Oligohalien** (Durmemonding - Kennedytunnel) kende proportioneel de grootste afname in watervogelaantallen tussen 2006 en 2010. +Tegenover het beschouwde referentiejaar 2009 is er een afname met meer dan de helft van de maximale vogelaantallen. +Wanneer we de winterinflux van 2020 negeren is er een sterke afname van de index zichtbaar. + +In **Zoet lang verblijf** (Dendermonde -- Durmemonding) zijn de vogelaantallen sterk afgenomen in `r laatste_telseizoen`. +Het aantal watervogels was historisch laag in winter 2022. +Door de winterprik en influx van vogels uit de vallei was er in 2020 nog een winterpiek. + +In **Zoet kort verblijf** (Gentbrugge -- Dendermonde) is er een duidelijke terugval in het overwinterend aantal watervogels. +De overwinterende watervogelaantallen op de Zeeschelde blijven bij de laagste geteld sinds begin jaren '90. +Door de aanhoudende koude, zochten in de winter van 2020 vogels uit de vallei een toevlucht op de slikken van de Zeeschelde. + +De watervogels op de **Rupel** volgen sinds 2009 een dalende trend met een absoluut dieptepunt in het winterseizoen 2019. + +De trends in de **Getijdedurme** zijn enigszins moeilijker te interpreteren omdat de afbakening van het telgebied veranderde. +Tot oktober 2012 werden de vogelaantallen van de Oude Durme en de Getijdendurme opgeteld. +Sindsdien worden de vogelaantallen afzonderlijk geteld. +Bovendien is er een datahiaat in de winter van 2007-2008 (niet zichtbaar in figuur). +Dit verklaart de lage aantallen in deze periode. +Uit de tellingen kan wel afgeleid worden dat er na een periode met hogere aantallen (2013-2017) de aantallen verder afnemen op de Durme. +De laatste winters (2021-2022) werden hoge wintermaxima geteld in het Klein Broek en Meulendijkbroek langsheen de Durme (tussentijds beheer) rond de 800- 1000 ex. +Vermoedelijk verplaatsten een deel van de watervogels zich naar deze gebieden. + +**Zoet zijrivier** omvat voor de watervogelevaluatie de **Zenne** en **Dijle**. +Deze waren tot 2007 nagenoeg 'vogeldood'. +De hoogste aantallen werden op de Dijle en Zenne slikken respectievelijk geteld in de de winter van 2007 en 2008. +Op de **Dijle** was de piek van vogelaantallen van korte duur. +De laatste jaren worden slechts enkele tientallen vogels gemiddeld per winterseizoen geteld op de slikken van de Dijle. +De wintermaxima in het GGG Zennegat schommelen de laatste jaren rond de 700 watervogels, een factor 10 hoger dan het aantal vogels geteld op de Dijle zelf. +Op de **Zenne** fluctueerden de aantallen sterk tussen 2008 en 2016 om dan af te nemen tot 2019. +Sindsdien zijn de aantallen relatief stabiel. + +```{r 100-figuur-maandelijkse-totalen-winter-Zeeschelde, fig.cap=cap_maandelijkse_totalen,out.height="40%"} + +cap_maandelijkse_totalen <- paste0("Maandelijkse wintertotalen van de watervogels langsheen de Zeeschelde sinds oktober 1991 tot ", + laatste_jaar, + " (exclusief zijrivieren; exclusief meeuwen en sternen).") + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_maandelijkse_totalen_ZSwinter.jpg")) + +``` + +
+ +```{r 100-figuur-aantallen-niveau2, fig.cap=cap_wintergemiddelde_Zeeschelde, out.width="80%"} + +cap_wintergemiddelde_Zeeschelde <- paste0("Wintergemiddelde van de watervogels langsheen de Zeeschelde sinds oktober 1991 tot ", + laatste_jaar, + " (exclusief zijrivieren; exclusief meeuwen en sternen).") + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_meanwinter_niveau2.jpg")) + +``` + +
+ +```{r 100-figuur-verhouding-aantallen, fig.cap=cap_verhouding_aantallen, out.width="80%"} + +cap_verhouding_aantallen <- paste0("De verhouding per zone (niveau 3) van de totale aantallen watervogels geteld langsheen de Zeeschelde (winter 1991 - ", + laatste_jaar, + ") (winterdata okt – mrt).") + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_verhouding_aantallen_niveau3Zeeschelde.jpg")) + +``` + +
+ +```{r 100-figuur-index-niveau2, fig.cap=cap_index_niveau2, out.width="80%"} + +cap_index_niveau2 <- paste0("Index van de maximale wintervogelaantallen in de Zeeschelde en zijrivieren (2009/10 – ",laatste_telseizoen, + "). Index gestandaardiseerd naar winter 2009/10.") + +knitr::include_graphics(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen_niv2.jpg")) + +``` + +
+ +```{r 100-figuur-index-niveau3, fig.cap=cap_index_niveau3, out.width="80%"} + +cap_index_niveau3 <- paste0("Index van de maximale wintervogelaantallen in de verschillende zones (2009/10 – ",laatste_telseizoen, + "). Index gestandaardiseerd naar winter 2009/10.") + +knitr::include_graphics(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen.jpg")) + +``` + +
+ +**Trofische groepen** + +De index berekening op basis van het wintermaximum per trofische groep op niveau 3 is weergegeven in Figuur \@ref(fig:100-figuur-aantallen-trofische-groep-index). +In winter `r laatste_telseizoen` is er voor het vijfde jaar op rij een stijging in het aantal benthivore overwinteraars (voornamelijk steltlopers) in de zone met sterke saliniteitsgradiënt. +Dit is te wijten aan de hogere aantallen van vooral scholekster en tureluur (Figuur \@ref(fig:100-figuur-aantallen-steltlopers)). +Minstens de scholekster lijkt een nieuwe voedselbron aan te boren - brakwaterkorfschelp *Potamocorbula amurensis* - op de lage slikzone. +Het gemiddeld aantal omnivore soorten (vooral eenden en meeuwen) is afnemend in alle zones behalve in de zone met een sterke saliniteitsgradiënt, waar vooral de kokmeeuw toenam de voorbije twee jaar. +Er is een sterke daling van omnivoren in zone Zoet lang. +Dit is vooral te wijten aan een sterke afname van de wilde eend (Figuur \@ref(fig:100-figuur-aantallen-abundante-soorten)). +Het gemiddeld aantal visetende vogels in Zeeschelde II (vooral aalscholver) varieert met de jaren, vermoedelijk in respons op de beschikbare visbiomassa. +Ook in de zone met sterke saliniteitsgradiënt nemen de herbivoren toe, dit is vooral te wijten aan de hogere aantallen krakeend (Figuur \@ref(fig:100-figuur-aantallen-abundante-soorten)). + +De verhouding van de soorten die meer dan 5% van de totale soortenaantallen per zone omvatten in de winterperiode sinds 2009 wordt weergegeven in Figuur \@ref(fig:100-figuur-abundante-soortenna2009). +De kokmeeuw is de meest voorkomende wintersoort in de zone met sterke saliniteitsgradiënt en langs de zijrivieren. +De wilde eend is de meest algemene soort langsheen de Zeeschelde. +Proportioneel komt de wintertaling het meest voor langsheen de Rupel en de Durme. +De zone met sterke saliniteitsgradiënt en de Rupel hebben het hoogst aantal soorten die meer dan 5% van het totaal omvatten. +Dit vertaalt zich ook in een hogere Shannon diversiteit van deze zones (Figuur \@ref(fig:100-figuur-ShannonDiversity-metmeeuwen)). +De diversiteit is het hoogst en stabiel in de zone met sterke saliniteitsgradiënt en de Rupel. +De Durme heeft een lage diversiteit aan overwinterende watervogels. +Samen met de sterke afname in overwinterende vogelaantallen nam in zoet lang ook de diversiteit af. +De laatste jaren nam de diversiteit echter toe. +Dit is vermoedelijk een neveneffect van de nieuwe sigmagebieden in deze zone - deze gebieden trekken soorten aan die af en toe naar de Zeeschelde trekken zoals pijlstaart of slobeend. + +Van een aantal algemenere soorten worden de trends in de periode 2010-`r laatste_jaar` getoond in Figuur \@ref(fig:100-figuur-aantallen-abundante-soorten) en Figuur \@ref(fig:100-figuur-aantallen-viseters) en Figuur \@ref(fig:100-figuur-aantallen-steltlopers). +De bergeend neemt voor het eerst in 9 jaar duidelijk toe in de zone met sterke saliniteitsgradiënt. +De afnemende aantallen langsheen de zone zoet lang van wilde eend(!) en wintertaling zijn opvallend. +Na een opvallende dip van de krakeend in 2019/20 neemt de krakeend toe in de sterke saliniteitsgradiënt. +De aalscholveraantallen in de winterperiode namen toe na 2014 en volgen de toename van vis vooral in de Boven-Zeeschelde Figuur \@ref(fig:100-figuur-aantallen-viseters). +De laatste jaren nemen de aalscholveraantallen opnieuw af. +Ook de visbiomassa neemt af (zie hoofdstuk vissen). +De fuut, ook een viseter, is quasi volledig verdwenen langs alle teltrajecten. +Met een wintergemiddelde van 100 tot 150 exemplaren is de tureluur veel talrijker aanwezig sinds 2015. +De gemiddelde wulpaantallen zijn variabel. +De ontpoldering van Hedwige-Prosper (data nog niet in databank) trok veel bergeenden en foeragerende wulpen aan. +Dit zal de aantallen beïnvloedt hebben op de slikken nabij Paardenschor. +In de zone met sterke saliniteitsgradiënt is er een toename in bodemdierbiomassa vastgesteld, voornamelijk door een toename van bivalven (Figuur \@ref(fig:070-figuur13)). + +Er zijn 11 exoten of verwilderde soorten die meer dan 30 keer werden waargenomen sinds de start van de tellingen langsheen de Zeeschelde en zijrivieren. +De totale aantallen zijn licht stijgend. +Dit is vooral door het toenemend aantal nijlganzen, brandganzen en grote Canadese ganzen. +De trends van de meest talrijke exotische overwinterende vogelsoorten is weergegeven in Figuur \@ref(fig:100-figuur-exotentrends). +De hoogste aantallen worden geteld in de oligohaliene zone. +De boerengans en soepeend komen in relatief kleine aantallen voor en zijn stabiel tot afnemend. + +De dichtheden van de overwinterende watervogels per oppervlakte zacht substraat slik in de Zeeschelde is per deelzone weergegeven in Figuur \@ref(fig:100-figuur-dichtheden-watervogels-per-zone). +Voor de figuur werd een selectie gemaakt van alle omnivore en benthivore soorten en werden kuifeend en tafeleend uitgesloten omdat beide soorten vooral afhankelijk zijn (waren - ze komen zelden nog voor de laatste 10 jaar) van het voedselaanbod in het subtidaal (Tessens, 2006). +De grafiek houdt geen rekening met Sigma natuurontwikkelingsgebieden. +In 2001 waren er hoge vogeldichtheden in de oligohaliene zone, zoet lang en Rupel, met rond de 120-160 vogels per ha . +Deze dichtheden namen sterk af. +De dichtheden in 2023 zijn berekend op basis van de ecotopenkaart 2019 (en dus benaderend). +In alle zones met uitzondering van saliniteitsgradiënt zijn of benaderen de dichtheden de laagste waardes sinds 2001. +In de Boven-Zeeschelde zijn de dichtheden de laagste sinds 2001. +In de zone met sterke saliniteitsgradiënt is er een kleine toename in de vogeldichtheid. +De dichtheid blijft hier wel laag, aangezien het voedselaanbod (uitgedrukt als biomassa bodemdieren per oppervlakte eenheid) niet lager is dan in andere zones. +Een opvallend lage vogeldichtheid is er ook in de Durme waar het voedselaanbod relatief hoger is. +De oppervlakte zacht substraat in de verschillende zones is in beperkte mate veranderd (Hoofdstuk \@ref(030_ecotopen)) en heeft een beperkte invloed op de berekende dichtheden. + +```{r 100-figuur-aantallen-trofische-groep-index, fig.cap=cap_aantallen_trofische_groep_index, out.width="80%"} + +cap_aantallen_trofische_groep_index <- paste0("Trendindex wintermaxima per zone (winter 2009/10 – ", + laatste_telseizoen, + ") opgedeeld volgens de trofische indicatorgroepen (Nbenth: benthivoren, Nherb: herbivoren, Nomn: omnivoren en Npisc: piscivoren). Deze figuur is inclusief de meeuwen en sternen.") + +knitr::include_graphics(paste0(pad_figuren, "100-figuur_Index_wintervogelaantallen_trofischegroepZSniv3.jpg")) + +``` + +
+ +```{r 100-figuur-abundante-soortenna2009, fig.cap=cap_verhouding_abundante_soorten, out.width="80%"} + +cap_verhouding_abundante_soorten <- paste0("Verhouding van de dominante soorten (> 5\\% totaal) per zone sinds 2009 - ", laatste_telseizoen, + ").") + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_abundante_soortenna2009.jpg")) + +``` + +
+ +```{r 100-figuur-ShannonDiversity-metmeeuwen, fig.cap=cap_shannon_diversiteit, out.width="80%"} + +cap_shannon_diversiteit <- "Shannon diversiteitsindex per zone (niveau 3). Winterdata inclusief meeuwen en sternen." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_ShannonDiversity_wintervogels_metmeeuwen.jpg")) + +``` + +
+ +```{r 100-figuur-aantallen-abundante-soorten, fig.cap=cap_aantallen_abundante_soorten, out.width="80%"} + +cap_aantallen_abundante_soorten <- "Trends in het gemiddelde aantal wintervogels (okt.-mrt.) voor 4 abundante soorten in de deelzones Zeeschelde (niveau 3)." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_aantallen_abundante_soorten_niveau3.jpg")) + +``` + +
+ +```{r 100-figuur-aantallen-viseters, fig.cap=cap_aantallen_viseters, out.width="80%"} + +cap_aantallen_viseters <- "Trends in het gemiddeld aantal getelde wintervogels (okt.-mrt.) voor 2 abundante visetende (piscivore) en twee abundante steltlopers in de deelzones van de Zeeschelde (niveau 3)." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_aantallen_viseters_niveau3.jpg")) + +``` + +
+ +```{r 100-figuur-aantallen-steltlopers, fig.cap=cap_aantallen_steltlopers, out.width="80%"} + +cap_aantallen_steltlopers <- "Trends in het gemiddeld aantal getelde wintervogels (okt.-mrt.) voor 6 abundante steltlopers (benthivoor) in de zone met sterke saliniteitsgradiënt." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_aantallen_steltlopers.jpg")) + +``` + +
+ +```{r 100-figuur-exotentrends, fig.cap=cap_exotentrends, out.width="80%"} + +cap_exotentrends <- "Trends sinds 2009 in het gemiddeld aantal getelde wintervogels (okt.-mrt.) voor 4 abundante exoten/verwilderde vogels in de zones van de Zeeschelde en zijrivieren." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_aantallen_exoten.jpg")) + +``` + +
+ +```{r 100-figuur-dichtheden-watervogels-per-zone, fig.cap=cap_dichtheden,out.width="80%"} + +cap_dichtheden <- "Vogeldichtheid (aantallen per ha zacht substraat slik) van getelde wintervogels (NBenth + NOmn, inclusief meeuwen en sterns) (okt.-mrt.) in de niveau 3 zones van de Zeeschelde. Data gepresenteerd voor de jaren overeenkomstig de beschikbare ecotopenkaart. Watervogels en oppervlakte exclusief nieuwe gebieden." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_dichtheid.jpg")) + +``` + +
+ +## Overwinterende watervogels in gebieden met estuariene natuurontwikkeling + +De wintermaxima in de estuariene sigmagebieden (Tabel\@ref(tab:100-tabel-estuarienesigmagebieden)) vertonen een duidelijke sprong vanaf het moment dat de inrichting voltooid is (zie inrichtingsdatum in Tabel \@ref(tab:020-tabel-natuurontwikkelingsprojecten) (Figuur \@ref(fig:100-figuur-wintermaxima-sigma-estuarien)). +De wintermaxima vertonen vaak een piek kort na de inrichting van de gebieden (Figuur \@ref(fig:100-figuur-wintermaxima-sigmagebieden-estuarien)). +De grootste aantallen overwinterende vogels verblijven in GOG-GGG Bazelse Polder Noord (vooral ganzen trekken de winteraantallen omhoog), GGG Zennegat, GGG Grote Vijver Battenbroek en ontpoldering Groot Schoor Hamme. +De nieuwe gebieden slagen er niet in om het glijdend gemiddelde (periode 5 jaar) van de dalende watervogelaantallen op de Zeeschelde om te buigen in stijgende wintermaxima ((Figuur \@ref(fig:100-figuur-natuurindicator-zeescheldesigma-estuarien)). +Binnen het estuarium compenseren de nieuwe gebieden de dalende trends langsheen de Zeeschelde. +Nemen we ook de wetland Sigmagebieden mee in beschouwing dan is de trend eerder positief (). + +
+ +```{r 100-figuur-wintermaxima-sigma-estuarien, fig.cap=cap_wintermaxima_sigma,out.width="80%"} + +cap_wintermaxima_sigma <- "De wintermaxima per winterseizoen in de estuariene sigmagebieden vanaf 1991." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_wintermaxima_sigma_estuarien.jpg")) + +``` + +
+ +```{r 100-figuur-wintermaxima-sigmagebieden-estuarien, fig.cap=cap_wintermaxima_sigmagebieden,out.width="100%"} + +cap_wintermaxima_sigmagebieden <- "De wintermaxima per winterseizoen in de estuariene sigmagebieden vanaf 2010." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_wintermaxima_sigmagebieden_estuarien.jpg")) + +``` + +
+ +```{r 100-figuur-natuurindicator-zeescheldesigma-estuarien, fig.cap=cap_natuurindicator_sigma,out.width="100%"} + +cap_natuurindicator_sigma <- "Het glijdend gemiddelde van de maximale wintervogels langsheen de Zeeschelde en de Zeeschelde plus de estuariene sigmagebieden." + +knitr::include_graphics(paste0(pad_figuren, "100_figuur_Natuurindicator_glijdendgemiddelde_Zeeschelde_estuarien.jpg")) + +``` + +
+ +## Sleutelsoorten - Instandhoudingsdoelstellingen (IHD-S) + +Zie rapportage vorig jaar. + +
**Algemene conclusie** + +Over de periode 2009-2023 bekeken is er op het niveau van de Zeeschelde een dalende trend te zien in het aantal overwinterende watervogels. +De trendindex toont wel een toename in de sterke saliniteitsgradiënt. +Dit is vooral te wijten aan de toename van scholeksters, tureluurs en bergeenden. +De toename van de scholekster is vermoedelijk het gevolg van de toename aan schelpdieren (zie hoofdstuk Macrozoöbenthos). +De ontpoldering van Hedwige-Prosper trok heel wat bergeenden aan die ook gebruik maakten van de slikken van de Zeeschelde. +Opvallend is de negatieve trend in de zone zoet lang, vooral veroorzaakt door een sterke afname van de wilde eend. +Niettegenstaande deze trend blijft de dichtheid aan overwinterende watervogels nog steeds het hoogst in de zone zoet lang en het laagst in de zone met sterke saliniteitsgradiënt. +Opvallend is een lage dichtheid aan vogels op de Durme gedurende het winterseizoen. +De diversiteit is het grootst in de zone met een sterke saliniteitsgradiënt en laag in de Durme en de zone zoet lang. +De afname van de vogelaantallen langsheen de Zeeschelde wordt gecompenseerd door de toename van de vogelaantallen in de estuariene natuurontwikkelingsgebieden. +Dit resulteert tot op heden niet in een totale toename van de watervogelaantallen binnen het estuarium. + +## Referenties + +EMSE (2021). +Evaluatiemethodiek Schelde‐estuarium: Update 2021. +Antea, Bureau Waardenburg, Deltares, UAntwerpen, UGent, INBO en NIOZ. + +Tessens B. (2006). +Voedselecologie van Tafeleenden op de Zeeschelde. +Vogelnieuws 7: 28-30. Uitgave Instituut voor Natuur- en Bosonderzoek, Brussel. + +
+ + + + + + + +```{r 100-tabel-trofischegroepsoorten} + +tabel_trofischegroep <- + read_delim(paste0(pad_tabellen, "Soorten_EMSE_analyse.csv"), + delim = ";") + +cap_trofischegroepsoorten <- "Vogelsoorten (met meer dan 30 waarnemingen) werden ingedeeld in 4 groepen: benthoseters (NBenth) (omvatten: schelpdiereters, wormeneters, hyperbenthoseters en epibenthoseters), viseters (NPisc), herbivoren (Nherb) en omnivoren (Nomn). Soorten die beschouwd worden als exoten geselecteerd." + +tabel_trofischegroep %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + knitr::kable(booktabs = TRUE, + escape = FALSE, + longtable = TRUE, + caption = cap_trofischegroepsoorten) %>% + kableExtra::kable_styling(latex_options = c("scale_down"), + font_size = 8) + +``` + +
diff --git a/moneos_2024/150_geintegreerd_rapport/110_broedvogels.Rmd b/moneos_2024/150_geintegreerd_rapport/110_broedvogels.Rmd new file mode 100644 index 0000000..a082fb6 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/110_broedvogels.Rmd @@ -0,0 +1,475 @@ +--- +output: html_document +editor_options: + chunk_output_type: inline +--- + +```{r 1100-hoofdstuk, include=FALSE} + +hoofdstuk <- "110_broedvogels" + +``` + +```{r 000-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE) +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 110-libraries} + +library(tidyverse) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) ## workaround pad + +``` + +```{r 110-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + +```{r 110-meta_data} + +# meta_data <- +# read_delim(paste0(pad_data, "meta_data.csv"), +# delim = ";") +# +# for(i in 1:nrow(meta_data)){ +# ##first extract the object value +# tempobj=meta_data$waarde[i] +# ##now create a new variable with the original name of the list item +# eval(parse(text=paste(meta_data$naam[i],"= tempobj"))) +# } + +``` + +# Broedvogels + +Fichenummer: Fiche S-DS-V-006 -- Broedvogels (aangepaste versie 11/04/2013) + +**Wim Mertens**, **Gunther Van Ryckegem**, Geert Spanoghe, Kenny Hessel, De Regge Nico, Frederic Van Lierop, Koen Thibau + +## Inleiding + +De eerstelijnsrapportage beschrijft de trends van de broedvogelsoorten waarvoor Instandhoudingsdoelstellingen gelden. + +## Materiaal en methode + +### Studiegebied + +Het studiegebied is het IHD-gebied zoals beschreven in Adriaensen et al. (2005). +Het omvat de NOP-zoneplus met uitzondering van de gebieden van het Vogelrichtlijngebied BE2301336 - Schorren en polders van de Beneden-Schelde, waarvoor aparte en niet overlapende instandhoudingsdoelstellingen voor gelden, inclusief de compensatiegebieden (zie @\ref(fig:110-figuur1). +Dit gebied omvat de vallei van de Zeeschelde en haar tijgebonden zijrivieren, inclusief de vallei van de Grote Nete tot in Zammel en van de Kleine Nete tot in Grobbendonk en alle buitendijkse gebieden. +De broedvogelaantallen in het vogelrichtlijngebied de Kuifeend en omgeving (Kuifeend, Plas Hoge Maey, de Verlegde Schijns, het Oud Schijn, de Grote Kreek en Stadsgracht, de Meeuwenbroedplaats en het Opstalvalleigebied) en in het vogelrichtlijngebied op de linker Scheldeoever (m.u.v. het Noordelijkgebied) worden niet meegeteld omdat hiervoor aparte instandhoudingsdoelstellingen zijn opgesteld (IHD-Z, Adriaensen et al. 2005).\ + +```{r 110-figuur1, fig.cap=caption_figuur1, out.width="95%"} +caption_figuur1 <- "Het IHD-gebied met aanduiding van de gebieden die geanalyseerd worden op algemene broedvogelsoorten." +knitr::include_graphics(paste0(pad_figuren, "110_fig1.png")) +``` + + + + + + +### Dataverzameling + +De aantallen zijn gecompileerd uit de volgende bronnen: Anselin et al. (1998); Vermeersch et al. (2004); Vermeersch et al. (2006); Vermeersch & Anselin (2009); Anselin (2010);Spanoghe et al. (2003); Gyselings et al. (2004); Spanoghe et al. (2006); Gyselings et al. (2007); Spanoghe et al. (2008); Van Ginhove et al. (2008), Gyselings et al. (2009); Spanoghe et al. (2010); (Gyselings et al., 2010); Gyselings et al. (2013); Weyn et al. (2013); Daniëls et al. (2013).\ +Daarnaast werd gebruik gemaakt van de Broedvogeldatabank van het INBO () en de Broedvogelatlasdatabank en --kaartlagen van het INBO. +Voor de periode 2010-2017 werden deze gegevens aangevuld met gegevens uit Waarnemingen.be, de website voor natuurinformatie van Natuurpunt en Stichting Natuurinformatie, ter beschikking gesteld door Natuurpunt Studie vzw.\ +De data vóór 2000 zijn afkomstig uit BBV-verslagen 1995-1996 en 1994-2005 (Anselin et al. 1998) en (Vermeersch et al. 2006) en de Broedvogeldatabank.\ +De gegevens van de periode 2000-2002 zijn afkomstig van de Broedvoegelatlas (Vermeersch et al. 2004) en de digitale voorbereidende bestanden. +Voor enkele zeldzame soorten zijn per jaar de aantallen gekend. +Voor algemenere soorten slaan de aantallen op de hele periode 2000-2002. +In de tabel werden ze ingevuld bij 2001. +De gegevens van de periode 2003-2005 zijn afkomstig uit het BBV-verslag 1994-2005 (Vermeersch et al. 2006) en de Broedvogeldatabank.\ +De gegevens van de periode 2006-2007 zijn afkomstig uit het BBV-verslag 2006-2007 (Vermeersch and Anselin 2009) en de Broedvogeldatabank.\ +De gegevens voor de periode 2008-2009 zijn afkomstig uit (Anselin 2010) en de Broedvogeldatabank. +Voor de deelgebieden Noordelijk gebied, Ketenisse, Rest AN-LO zijn de aantallen vanaf 2003 afgeleid uit de monitoringsrapporten van het Linkerscheldeoevergebied (Spanoghe et al., 2003, 2006, 2008, 2010 en Gyselings et al. 2004, 2007, 2009) en recentere monitoringsgegevens van het INBO-project "Monitoring en evaluatie van het Linkerscheldeoevergebied (LO)".\ +De aantallen voor Blokkersdijk zijn afkomstig van de website van Natuurpunt-Waasland en het tweede monitoringsrapport (De Jonghe & Verschueren, 2017) en data aangeleverd door Willy Verschueren (2018 - 2020). + Voor het overstromingsgebied Kruibeke -- Bazel -- Rupelmonde zijn de gegevens afkomstig van de jaarverslagen van de Beheercommissie Kruibeke-Bazel-Rupelmonde (Anoniem, 2014) en recentere monitoringsgegevens van de INBO-project "Opvolgen en adviseren beheercommissie Kruibeke-Bazel-Rupelmonder (KBR)" en het INBO/ANB-project "Wetenschappelijke opvolging van de natuurontwikkeling in de gebieden van het geactualiseerde Sigmaplan".\ +Gegevens van Molsbroek en de overige gebieden van de vzw Durme zijn afkomstig van de Vogelwerkgroep Durmevallei aangeleverd door Joris Everaert.\ +Gegevens van Kalkense Meersen, Wijmeers, Paardeweide, Bergenmeersen, Weijmeerbroek en Zennegat na 2008 werden verzameld in het kader van het INBO/ANB-project "Wetenschappelijke opvolging van de natuurontwikkeling in de gebieden van het geactualiseerde Sigmaplan". +INBO/ANB voert in deze gebieden frequent, maar niet jaarlijks, broedvogelkarteringen uit. +Het aantal territoria voor jaren zonder kartering wordt berekend op basis van een lineair interpolatie.\ +Gegevens over het aantal gruttoterritoria in de Kalkense Meersen en omgeving in de periode 2001-2009 zijn afkomstig uit Schepers (2010). +Recentere data werden aangeleverd door Robbert Schepers en zijn afkomstig van tellingen in het kader van het INBO/ANB-project "Wetenschappelijke opvolging van de natuurontwikkeling in de gebieden van het geactualiseerde Sigmaplan" gecombineerd met tellingen door vrijwilligers en medewerkers van het Regionaal Landschap "Schelde-Durme". +De gegevens van het Groot Buitenschoor (2012) zijn ongepubliceerde gegevens verzameld in het kader van een INBO-ANB monitoringproject Antwerpen RO.\ +Voor de soorten baardman, bruine kiekendief, grote karekiet, kluut, snor, tureluur, woudaap en zomertaling werden de aantallen uit bovenstaande bronnen aangevuld op basis van waarnemingen uit waarnemingen.be en geïnterpreteerd volgens de criteria uit Van Dijk en Boele (2011) en Vergeer et al. (2016). +Nullen werden enkel ingevuld als: + +- er een intensieve monitoring werd uitgevoerd en geen territoria of broedgevallen zijn vastgesteld in een bepaald gebied +- er voor een bepaald jaar voor een gebied aantallen in de databank zaten voor andere soorten +- het op basis van de gekende Vlaamse populaties uiterst onwaarschijnlijk is dat een bepaalde soort zou hebben gebroed. + +In andere gevallen, waar geen zekerheid bestaat over aan- of afwezigheid, werd niets ingevuld (NA). + + + + + +Het bestand Territoria_totalen-1995_2023.csv geeft de totalen voor het IHD-gebied. +Deze totalen zijn gebaseerd op de aantallen in bovenstaande bronnen, waarbij in geval van een vork steeds de hoogste waarden werd genomen. +Aanwezigheid van NA's (soort niet geteld in dat gebied tijdens dat jaar) in één gebied leidt tot een NA in het jaartotaal van de soort. + +### Exploratieve data-analyse + +#### Zeldzame soorten met "volledige" tijdreeksen + +Voor sommige soorten werden redelijk volledige tijdsreeksen verkregen voor alle deelgebieden. +Dit zijn voornamelijk de zeldzame, goed te inventariseren soorten van het Bijzondere Broedvogelproject (baardman, bruine kiekendief, grote karekiet, lepelaar, porseleinhoen, roerdomp, snor) of soorten die niet of amper broeden in Vlaanderen (purperreiger, kwak, kwartelkoning, paapje).\ +Voor zomertaling werden de gegevens na 2007 aangevuld op basis van waarnemingen.be. +De gegeven aantallen kunnen als minima geïnterpreteerd worden maar geven na 2007 waarschijnlijk toch een redelijk accuraat beeld van de reële aantallen.\ +Voor kluut en tureluur kan aangenomen worden dat de gegeven aantallen voor het Rest IHD-gebied na de atlasperiode tamelijk nauwkeurig zijn omdat deze soorten amper of slechts in (zeer) lage aantallen broeden buiten de recent aangelegde en frequent gemonitorde natuurgebieden van het Sigmaplan. +Ook de aantallen grutto in het 'Rest IHD-gebied' zijn betrouwbaar omdat telkens de volledige populatie in en rond de Kalkense Meersen en het Noordelijk gebied werd geteld. +Elders in het 'Rest_IHD-gebied' komt/kwam de soort niet of slechts in zeer lage aantallen tot broeden. + +#### Algemenere soorten + +Voor een aantal minder zeldzame soorten die niet opgenomen zijn in het Bijzondere Broedvogelproject (blauwborst, dodaars, rietzanger, scholekster, slobeend), zijn de tijdreeksen onvolledig. +Deze soorten broeden ook in substantiële aantallen in (natuur)gebieden die niet frequent gemonitord worden. +Voor deze soorten, aangevuld met zomertaling, voeren we een analyse uit op een deeldataset, nl. +de aantallen in een aantal frequent getelde gebieden. +Het Noordelijk gebied in de haven van Antwerpen, Blokkersdijk en Ketenisse worden jaarlijks integraal onderzocht op broedvogels. +Sinds 2022 is in het Noordelijk gebied en Ketenisse overgestapt op een driejaarlijkse monitoring voor zangvogels, de aantallen in de tussenliggende jaren worden geinterpoleerd (imputatie). +Weidevogels en watervogels worden nog steeds jaarlijks integraal geteld. +In de Sigmagebieden werd één telling uitgevoerd voorafgaand aan de inrichting (T0). +Het eerste jaar na de inrichting wordt in regel ook steeds geteld en vervolgens het derde jaar. +Nadien wordt minstens om de drie jaar een telling uitgevoerd. +De aantallen in de tussenliggende jaren worden per gebied geïnterpoleerd (lineair verband). +Volgende Sigmagebieden nemen we mee in de analyse (zie Figuur \@ref(fig:110-figuur2)): + +- Kalkense Meersen: geleidelijke verwerving van gronden sinds 2008 waarna omzetting tot grasland en/of een verschralingsbeheer wordt opgestart. +- Bergenmeersen: GGG sinds april 2013 +- Wijmeers: deels ontpolderd en deels ingericht als niet-estuarien wetland sinds november 2015 +- Paardeweide: oostzijde ingericht als rietatol sinds 2014, de westzijde is een hooilandgebied waar sinds 2022 geëxperimenteerd wordt met vernatting. +- Weijmeerbroek: verschralingsbeheer sinds 2010, beperkte vernatting sinds 2016, aanzienlijke vernatting sinds 2023. +- Polders van Kruibeke: geleidelijke inrichting sinds 2008, GGG Bazel-noord sinds 2015, GGG-Kruibeke sinds 2017, ontpoldering Fasseit sinds 2017 +- Zennegat: inrichting als GOG met gecontroleerd gereduceerd getijdengebied afgerond in 2017 + +```{r 110-figuur2, fig.cap=caption_figuur2, out.width="95%"} +caption_figuur2 <- "Het IHD-gebied met aanduiding van de gebieden voor de analyse van de algemene broedvogelsoorten." +knitr::include_graphics(paste0(pad_figuren, "110_fig2.png")) +``` + + + +Om volledige tijdsreeksen te bekomen voor de Sigmagebieden werd een extrapolatie van de data doorgevoerd. +De jaren voorafgaand aan de inrichting kregen de aantallen van de nulmeting (T0) toegekend. +Gaten in de tijdsreeksen na de inrichting vullen we op d.m.v. een lineair verband (afronding naar boven). +Indien er geen telgegevens zijn van het laatste rapportagejaar worden deze gelijk gesteld aan deze van het laatste getelde jaar.\ +
+ +## Resultaten + +### Zeldzame soorten {#zeld-soorten} + +Figuur \@ref(fig:110-figuur3) toont de data met uitzondering van de vijf algemenere soorten (blauwborst, dodaars, rietzanger, scholekster, slobeend) en één tot nog toe afwezige soort (puperreiger). +Deze figuur toont de trends van de soorten binnen de gebieden met instandhoudingsdoelstellingen in het Schelde-estuarium. +Hoewel geen gebiedsdekkende kartering mogelijk is, wordt aangenomen dat het aantal territoria voor deze soorten een redelijk accuraat beeld geeft van de reële aantallen. + +Verscheidene soorten komen tot 2023 nog steeds zelden tot broeden in het IHD-gebied Schelde-estuarium (kwartelkoning, roerdomp en paapje) of werden nog nooit vastgesteld als broedvogel (purperreiger). + +Grote karekiet kwam vóór 2020 slechts af en toe voor als broedvogel. +Sinds 2020 worden jaarlijks territoria vastgesteld, in 2023 waren het er drie. +Enkel in het tijdelijk ingericht wetland in Grote Wal werd twee keer een territorium vastgesteld. +In de andere gebieden broedde de grote karekiet tot nog toe eenmalig. + +Lepelaar broedt sinds 2020 jaarlijks in het IHD-gebied. +Na een schuchtere poging tot nestbouw in de Wijmeers (Wichelen) in 2016 en twee nesten in het Broek De Naeyer (Willebroek) in 2020 werden in 2021 tien nesten gevonden in het Meulendijkbroek in de Durmevallei (Waasmunster) en vier in het Noordelijk gebied (Beveren). +In 2022 werden zeven nesten geteld in de Durmevallei en één in het Noordelijk gebied. +In 2023 daalde het aantal nesten in het Meulendijkbroek naar één, maar ontstond wel een kleine kolonie met acht nesten in het weidevogelgebied van Doelpolder-noord (Noordelijk gebied). +Aangezien de tijdelijke inrichting van Meulendijkbroek eind 2023 is stopgezet, zal de lepelaar hier niet meer broeden. +Mogelijk groeit de kleine kolonie in de tegen grondpredatoren beschermde Doelpolder de komende jaren verder uit. + +Kwak is sinds 2014 jaarlijks aanwezig in kleine aantallen. +In 2023 werd vier territoria vastgesteld, het hoogste aantal sinds de start van de monitoring. +Belangrijke gebieden waar kwak regelmatig broedt zijn het Donkmeer in Berlare en het Molsbroek in Lokeren. +Ook de tijdelijk ingerichte wetlands Grote Wal in Hamme (in 2022) en het Meulendijkbroek in Waasmunster (in 2023) trokken kwakken aan. +Aangezien de tijdelijke inrichting van beide wetlands ophoudt in 2023, zal de kwak er niet meer terecht kunnen. + +Van de jaarlijks broedende soorten komt een aanzienlijk deel van de populatie van grutto, snor, woudaap en zomertaling voor buiten de haven. +Voor de andere soorten (baardman, bruine kiekendief, kluut, tureluur) is het Noordelijk gebied van het Antwerpse havengebied op linkeroever veruit het belangrijkste broedgebied. + +Baardman, woudaap en snor vertonen de laatste jaren een stijgende trend in de vallei van de Zeeschelde en haar tijgebonden zijrivieren (NOP-zone). + +Baardman broedt zelden stroomopwaarts Antwerpen. +Het Schor Ouden Doel is met voorsprong het belangrijkste gebied voor deze soort, met jaarlijks meer dan 30 territoria sinds 2020. +Stroomafwaarts Antwerpen broedt de baardman in kleine aantallen ook in andere buitendijkse gebieden (Ketenisse, Groot buitenschoor, Galgenschoor). +In 2021 werd voor het eerst een broedgeval vastgesteld in het Zennegat (Mechelen). +In 2022 en 2023 waren er twee territoria. + +Tussen 2003 en 2010 werden jaarlijks 1 tot 4 territoria snor vastgesteld, bijna uitsluitend in het Noordelijk gebied in de Antwerpse haven. +Tussen 2010 en 2020 schommelden de aantallen tussen 4 en 10, waarbij de soort ook opdook stroomopwaarts Antwerpen. +Sinds 2021 komen er meer dan 10 territoria voor in het IHD-gebied maar opvallend is dat de soort sinds 2021 niet meer broedt in het Noordelijk gebied. +Met 25 territoria in 2023 lijkt de tot doel gestelde populatie van 100 broedparen plots toch realistisch. +De polders van Kruibeke vormen momenteel het belangrijkste broedgebeid met 10 territoria in 2023, maar de snor heeft zich duidelijk ook gevestigd in de Durmevallei en in de Kalkense Meersen en omgeving. + +Ook het aantal woudaapterritoria neemt de laatste jaren toe. +Vóór 2015 werden jaarlijks 0 tot maximaal 3 territoria geteld en tussen 2015 en 2022 2 tot 7 territoria. +In 2022 werden 14 territoria vastgesteld en in 2023 15 territoria. +Dit komt stilaan in de buurt van de IHD die stelt dat leefgebied voor 20 broedparen aanwezig moet zijn. +Jaarlijkse territoria sinds 2021 werden vastgesteld in Anderstad/Polder van Lier, het Donkmeer, het Molsbroek en de Polders van Kruibeke. +De tijdelijke inrichting als wetland in Grote Wal resulteerde zowel in 2022 als 2023 in vier territoria. +In de Oude Durme (Hamme, Waasmunster) werden in 2022 en 2023 respectievelijk twee en drie territoria vastgesteld. + +De aantallen grutto vertonen een dalende trend sinds 2013. +Maximale aantallen werden vastgesteld tussen 2011 en 2015 met met meer dan 60 territoria. +De 40 territoria in 2022 vormden het laagste aantal sinds 2008. +In 2023 werden iets meer territoria geteld, nl. +47. +De daling speelde zich aanvankelijk uitsluitend af in het Noordelijk gebied, van ca. +30 territoria in de periode 2010 - 2012 naar minder dan 10 territoria vanaf 2018, terwijl de aantallen stroomopwaarts in een ruim gebied gebied rond de Kalkense Meersen stabiel bleven. +Na 2018 dalen de aantallen ook daar van ca. +40 - 45 naar 24 in 2022 en 26 in 2023, terwijl in het Noordelijk gebied een voorzichtige stijging lijkt op te treden naar 17 territoria in 2022 en 21 in 2023. + +De hoogste aantallen kluut werden vastgesteld in de periode tussen 2012 en 2017 (bijna 200 territoria). +In 2018 en 2019 kende de soort een stevige dip (resp. 10 en 45 territoria). +Na het nemen van uitgebreide beschermingsmaatregelen tegen grondpredatoren in het Noordelijk gebied (vossenrasters) stijgen de aantallen opnieuw tot rond de 150 territoria in 2020 en 2021 en rond de 130 in 2022 en 2023. +Het overgrote deel van de kluten (\> 85%) broedt nu opnieuw in natuurgebieden in de haven (Noordelijk gebied, Potpolder Lillo). +Verder broedde kluut in kleine aantallen met wisselend succes in de Polders van Kruibeke, het Noordelijk eiland en de Paardeweide. +In 2023 werden enkel territoria vastgesteld in het Noordelijk gebied (Doelpolder-noord en Prosperpolder-noord) en de Potpolder van Lillo. + +De aantallen zomertaling stijgen na 2007 wat te verklaren is door de stapsgewijze inrichting van (estuariene) wetlandgebieden van het Sigmaplan. +In 2022 werd voor het eerst sinds 2002 het IHD-doel bereikt. +In 2023 werd de IHD opnieuw gerealiseerd met 24 territoria. +In de eerste jaren na inrichting van overstromingsgebieden met gecontroleerd gereduceerd getij en ontpolderingen verschijnen zomertalingen. +Tengevolge van de vegetatiesuccessie (verruiging) nemen de aantallen nadien terug af. +De laatste jaren nemen de aantallen echter ook duidelijk toe in niet-estuariene gebieden (Molsbroek, Paardeweide-oost, Grote Wal, Beneden Nete en Noordelijk eiland). +Een vierde tot een vijfde van de zomertalingen zat in 2022 en 2023 in het tijdelijke wetland Grote Wal. + +De tureluurpopulatie kende tussen 2005 en 2010-2012 een toename tot ca. +50 territoria, het merendeel in het Noordelijk gebied. +Daarna boerde de populatie achteruit tot minder dan 30 territoria in de periode 2017 - 2020, als gevolg van een stijgende predatiedruk. +De beschermingsmaatregelen die op de linkerscheldeoever worden genomen tegen grondpredatoren werpen hun vruchten af, het aantal territoria steeg naar 39 in 2021, 42 in 2022 en 53 in 2023. +Het overgrote deel van de populatie (\> 90%) broedt in het noordelijk gebied + +Het aantal territoria van bruine kiekendief blijft ver onder het tot doel gestelde aantal (50). +In 2023 werden in totaal slechts 6 territoria geteld. +Het Galgenschoor blijft met 4 territoria wel een bastion voor deze soort. + +Het aantal territoria van porseleinhoen is zeer afhankelijk van de weersomstandigheden in het voorjaar en kent een erratisch verloop. +Zelfs in goede jaren, met natte voorjaren, blijven de aantallen ver onder de doelstelling (40). +In 2022 werden twee territoria gevonden in de Durmevallei. +Eén in het Molsbroek, de enige plaats waar de soort bijna jaarlijks broedt, en één mogelijk territorium in het Weijmeerbroek. + +### Algemenere soorten + +Figuur \@ref(fig:110-figuur4) toont de evolutie van zes algemene soorten in frequent getelde ingerichte Sigmagebieden. + +De sterk stijgende trend van de Rietzanger lijkt te plafoneren in de onderzochte gebieden. +Maar zowel in 2022 als in 2023 tellen we in de beperkte set van natuurgebieden meer dan dubbel zoveel territoria dan het tot doel gesteld aantal voor de hele Scheldevallei (IHD = 170). + +Ook voor de blauwborst komt al een hoog percentage (`r round(364/5.5, digits = 0)` % in 2022 en `r round(289/5.5, digits = 0)` % in 2023) voor in deze kleine subset van gebieden. +Deze soort haalt in het volledige IHD-gebied wellicht ook de tot doel gestelde aantallen (550). + +Dit geldt met zekerheid ook voor dodaars, alhoewel die de laatste jaren wat achteruitgaat in de onderzochte gebieden. +Maar daarnaast telden we alleen in Grote Wal in 2022 al 28 territoria en in 2023 39 territoria. +De achteruitgang in de subset is vooral veroorzaakt door lagere aantallen in het Noordelijk gebied. + +Slobeend kende een sterke toename in de haven in de periode 2010 - 2015 tot 30 territoria. +De laatste jaren daalde het aantal territoria er tot een 10-tal. +Ook in de lijst van Sigmagebieden daalde het aantal, maar in Grote Wal vonden we in 2022 19 territoria voor en in 2023 20 territoria. +De som van alle gekende territoria blijft in 2023 ruim onder het doel (IHD = 150). + +Het aantal zomertalingterritoria overschreidt in 2022 en 2023 de IHD (20), deels door de hoge aantallen die in het tijdelijke wetland Grote Wal broeden (zie paragraaf \@ref(zeld-soorten)). +In de beperkte set natuurgebieden die voor de algemene soorten onderzocht worden, schommelen de aantallen tussen 7 en 11 territoria. +In 2021 lag het aantal wat lager omdat er toen geen enkel territorium werd vastgesteld in het Noordelijk gebied. + +Scholekster broedt tegenwoordig vooral op akkers in het landbouwgebied. +In de onderzochte natuurontwikkelingsgebieden van het Sigmaplan komt maar een klein aantal scholeksters tot broeden. +Jaarlijks zijn er tussen 10 en 20 territoria. +Als de broedstrategie van deze soort niet wijzigt, zullen de naturuontwikkelingsgebieden van het Sigmaplan weinig kunnen bijdragen aan de realisatie van de doelstelling (IHD = 190). +In het Noordelijk gebied lijken de aantallen de laatste jaren wel wat te stijgen, vooral in Doelpolder-noord waar predatierasters geplaatst zijn om de weidevogels te beschermen. + +
+ +```{r 110-figuur3, fig.cap=caption_figuur3, out.width="95%"} +caption_figuur3 <- "Evoluties in de broedvogelaantallen voor een selectie van soorten waarvoor de data-inzameling representatief is binnen IHD-gebied. Loess-smoother weergegeven. Rode horizontale lijn geeft de tot doel gestelde aantallen." + +knitr::include_graphics(paste0(pad_figuren, "110_fig3.jpg")) +``` + +
+ +```{r 110-figuur4, fig.cap=caption_figuur4, out.width="95%"} +caption_figuur4 <- "Evoluties in de broedvogelaantallen (territoria) voor een selectie van algemenere soorten voor een beperkt aantal gebieden die frequent worden geteld (Blokkersdijk, Ketenisse, Sigma (Kalkense Meersen, Wijmeers, Bergenmeersen, Paardeweide, Weijmeerbroek en Polder van Kruibeke), Sigma\\_LO (Noordelijke gebied = Doelpolder + Prosperpolder + Paardenschor + Schor Ouden Doel)). Rode horizontale lijn geeft de tot doel gestelde aantallen." + +knitr::include_graphics(paste0(pad_figuren, "110_fig4.jpg")) +``` + +
+ +## Conclusie + +Een aantal broedvogelsoorten haalt in de laatste jaren het tot doel gestelde populatieniveau. De toename van het aantal insectenetende rietvogels blauwborst en rietzanger en de watervogels dodaars en zomertaing in de natuurontwikkelingsgebieden van het Sigmaplan heeft hieraan zeker bijgedragen. Voor zomertaling zou het doel niet gehaald zijn zonder de tijdelijke inrichting van Grote en Kleine Wal in Hamme als ondiepe plas en moeras. Vanaf 2024 zal de bijdrage van deze tijdelijke inrichting wegvallen. +De insectenetende rietvogels baardman en snor, en de visetende lepelaar en woudaap vertonen de laatste jaren een duidelijk positieve trend. +De soorten van schrale graslandcomplexen kwartelkoning en paapje blijven afwezig. Herstel van hun leefgebied vergt bodemverschraling van voormalige landbouwgronden en zal (veel) meer tijd in beslag nemen dan de inrichting van moeras- en getijdengebieden. +De insectenetende grote karekiet en de visetende kwak en roerdomp, soorten van grootschalige moerasgebieden zijn jaarlijks aanwezig, maar nog steeds in zeer beperkt aantal (minder dan 5 territoria). +De weidevogels vertonen over het volledige studiegebied geen duidelijke trend. In het Noordelijk gebied treedt wel populatieherstel op als gevolg van predatiewerende maatregelen. + +## Referenties + +Adriaensen F., Van Damme S., Van den Bergh E., Van Hove D., Brys R., Cox T., Jacobs S., Konings P., Maes J., Maris T. +et al. (2005). +Instandhoudingsdoelstellingen Schelde-estuarium. +Antwerpen: Antwerpen U. +05-R82. +249 p. + +Anoniem (2014). +Jaarverslag 2013. +Beheercommissie Natuur Kruibeke -- Bazel -- Rupelmonde, Gent. + +Anselin A. +(2010). +Enkele resultaten van het project Bijzondere Broedvogels voor 2008 en 2009. +Vogelnieuws : ornithologische nieuwsbrief van het Instituut voor Natuur- en Bosonderzoek 14(Brussel). + +Anselin A., Devos K., Kuijken E. +(1998). +Kolonievogels en zeldzame broedvogels in Vlaanderen in 1995 en 1996 = colonial and rare breeding birds in flanders (belgium) in 1995 and 1996. + +Daniëls F., Deduytsche B., Dillen A., Maes T., Maris T., Nachtergale L., Nollet S., Spanoghe G., Vanden Abeele L., Van den Bergh E. +et al. (2013). +Jaarverslag 2012 Beheercommissie Kruibeke-Bazel-Rupelmonde. +Gent: Beheercommissie Kruibeke-Bazel-Rupelmonde. + +De Jonghe G., Verschueren W. +(2017). +Blokkersdijk E-131 (Antwerpen Linkeroever). +Tweede monitoringrapport. +Antwerpen: Natuurpunt Waasland vzw Kern Antwerpen Linkeroever. + +Gyselings R., Spanoghe G., Hessel K., Mertens W., Vandevoorde B., Van den Bergh E. +(2009). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het zesde jaar : bijlage 9.8 bij het zesde jaarverslag van de Beheercommissie Natuur Linkerscheldeoever. +Brussel. +2009.3. + +Gyselings R., Spanoghe G., Van den Bergh E. +(2004). +Monitoring van het linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het tweede jaar. +Brussel. +2004.19. + +Gyselings R., Spanoghe G., Van den Bergh E. +(2007). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het vierde jaar : bijlage 9.10 van het vierde jaarverslag van de Beheercommissie natuurcompensaties Linkerscheldeoevergebied. +Brussel. +2007.2. + +Gyselings R., Spanoghe G., Van den Bergh E., Verbelen D., Benoy B., Vogels B., Willems W. +(2011). +Monitoring natuur havengebied en omgeving Antwerpen Rechteroever. +Brussel. +2010.15. + +Gyselings R., Spanoghe G., Van den Bergh E., Verbelen D., Benoy L., Vogels B., Lefevre A. +(2013). +Monitoring natuur havengebied en omgeving Antwerpen Rechteroever, resultaten van het monitoringsjaar 2012. +Brussel: Instituut voor Natuur- en Bosonderzoek. + +Mertens W., Hessel K., Spanoghe G., Van Lierop F. +(in prep.). +T0-rapportage van de monitoring van de 2010-gebieden van het geactualiseerde Sigmaplan. +Broedvogels. +Brussel: Instituut voor Natuur- en Bosonderzoek. + +Gyselings R., Spanoghe G., Van den Bergh E., Verbelen D., Benoy L., Lefevre, A., Willems W. +(2014). +Monitoring natuur havengebied en omgeving Antwerpen Rechteroever -- Resultaten 2013. +Brussel. +2014.6392398. + +Schepers R. +(2010). +De Grutto (Limosa limosa) in de Kalkense Meersen. +Historiek, broedsucces en toekomstperspectieven. +Gent: Universiteit Gent. +63 p. +Spanoghe G., Gyselings R., Van den Bergh E. +(2003). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het eerste jaar. +Brussel. +2003.15. + +Spanoghe G., Gyselings R., Van den Bergh E. +(2006). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het derde jaar. +Brussel. +2006.1. + +Spanoghe G., Gyselings R., Van den Bergh E. +(2008). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het vijfde jaar : bijlage 9.10 bij het vijfde jaarverslag van de Beheercommissie Natuurcompensatie Linkerscheldeoevergebied. +Brussel. +2008.14. + +Spanoghe G., Gyselings R., Vandevoorde B., Van den Bergh E., Hessel K., Mertens W. +(2010). +Monitoring van het Linkerscheldeoevergebied in uitvoering van de resolutie van het Vlaams Parlement van 20 februari 2002: resultaten van het zevende jaar : bijlage 9.8 bij het zevende jaarverslag van de Beheercommissie Natuur Linkerscheldeoever. +Brussel. +2010.8. + +Van Dijk A.J., Boele A. +(2011). +Handleiding SOVON Broedvogelonderzoek. +Nijmegen, Nederland: SOVON Vogelonderzoek. + +Van Ginhove, W. +(2008). +Broedvogelinventarisatie Potpolder 2006-2007. +(weblink)[] + +Vergeer J.W., van Dijk A.J., Boele A., van Bruggen J. +& Hustings F. +2016. +Handleiding Sovon broedvogelonderzoek: Broedvogel Monitoring Project en Kolonievogels. +Sovon Vogelonderzoek Nederland, Nijmegen. +(weblink)[] + +Vermeersch G., Anselin A. +(2009). +Broedvogels in Vlaanderen in 2006-2007. +Recente status en trends van Bijzondere Broedvogels en soorten van de Vlaamse Rode Lijst en/of Bijlage I van de Europese Vogelrichtlijn. +Brussels, Belgium. +2009(3). + +Vermeersch G., Anselin A., Devos K. +(2006). +Bijzondere broedvogels in Vlaanderen in de periode 1994-2005 : populatietrends en recente status van zeldzame, kolonievormende en exotische broedvogels in Vlaanderen. +Brussels, Belgium. +2006(2). +1-64 p. + +Vermeersch G., Anselin A., Devos K., Herremans M., Stevens J., Gabriëls J., Van Der Krieken B. +(2004). +Atlas van de Vlaamse broedvogels : 2000-2002. + + + +Vochten T., Lenaerts B. +& Baetens J. +(2024). +Soortbeschermingsprogramma Antwerpse Haven Monitoringsrapport 2023. +Natuurpunt. + +Weyn K., Gyselings R., Spanoghe G. +(2013). +Jaarverslag 2012 Beheercommissie Natuur Linkerscheldeoever. +Kallo: Beheercommissie Natuur Linkerscheldeoever. diff --git a/moneos_2024/150_geintegreerd_rapport/120_zoogdieren.Rmd b/moneos_2024/150_geintegreerd_rapport/120_zoogdieren.Rmd new file mode 100644 index 0000000..586e286 --- /dev/null +++ b/moneos_2024/150_geintegreerd_rapport/120_zoogdieren.Rmd @@ -0,0 +1,443 @@ +```{r 120-hoofdstuk, include=FALSE} + +hoofdstuk <- "120_zoogdieren" + +``` + +```{r 120-setup, include=FALSE} + +knitr::opts_chunk$set(echo = FALSE, error=FALSE, warning=FALSE, message=FALSE, cache=FALSE, fig.pos = "H", tab.pos = "H" ) +knitr::opts_knit$set(eval.after = "fig.cap") + +``` + +```{r 120-libraries} + +library(tidyverse) +library(lubridate) +library(readxl) +library(kableExtra) +library(INBOtheme) +library(rprojroot) ## workaround pad + +``` + +```{r 120-pad} + +# inlezen van variabelen +# pad naar data : pad_data +# pad naar tabellen : pad_tabellen +# pad naar figuren : pad_figuren + +source(find_root_file("../pad.R", criterion = is_rstudio_project)) + +pad_data <- maak_pad(hoofdstuk, "data") +pad_figuren <- maak_pad(hoofdstuk, "figuren") +pad_tabellen <- maak_pad(hoofdstuk, "tabellen") + +``` + + + + + + + + + + + + + + + + + + + + + + + +```{r 120-basisdata, include=FALSE} +zoogdier_data <- read_csv(paste0(pad_data, "zoogdier_data_2010_2023.csv")) +``` + +# Zoogdieren + +**Wim Mertens** + +## Inleiding + +Er bestaat in Vlaanderen of in het Schelde-estuarium geen systematische monitoring van de vijf hier behandelde zoogdiersoorten (gewone zeehond, grijze zeehond, bruinvis, bever en otter). +Voor otter wordt momenteel via het meetnettenproject een systematische monitoring opgestart (Gouwy et al. 2021, [webref1](https://meetnetten.be/projects/66/), [webref2](https://meetnetten.be/)). +Van Den Berge *et al.* (2019) geeft een uitgebreid overzicht van recente waarnemingen van otter in Vlaanderen. + +De Europese otter, de Europese bever en de gewone zeehond worden vermeld in de Instandhouwingsdoelstellingen Schelde-estuarium (Adrieansen *et al.* 2005). +Voor grijze zeehond en bruinvis zijn geen doelstellingen geformuleerd. +Deze zeezoogdieren worden echter min of meer regelmatig werden waargenomen in het estuarium. +Daarom worden de waarnemingen van deze soorten ook opgenomen in de rapportage. + +Alle aangeleverde data zijn afkomstig van [waarnemingen.be](http://www.waarnemingen.be/), de website voor natuurinformatie van Natuurpunt en Stichting Natuurinformatie, ter beschikking gesteld door Natuurpunt Studie vzw.\ + +De gewone zeehond kwam reeds in het estuarium voor toen de instandhoudingsdoelstellingen werden vastgelegd. +Als doel geldt het behoud van de het destijds aanwezige populatieniveau. +Deze doelstelling moeten gezien worden in één geheel met de Westerschelde-populatie. + +Voor bever en otter geldt het creëren van voldoende ruimte en geschikt habitat binnen strikt beschermde natuurgebieden voor één leefbare kernpopulatie als doelstelling. +Voor bever werd dit vertaald in een populatie van ca. +40 families (ca. 160 individuen), voor otter in 20 tot 25 individuen. + +De bever heeft zich in 2007 gevestigd in de valleien van de Schelde- en haar zijrivieren. +Tot 2010 was Dendermonde de enige gekende locatie. +Sindsdien duiken er steeds meer waarnemingslocaties op en plant de soort zich over het volledig estuarien valleigebied voort. + +De eerste waarnemingen van otter dateert van 2012. +Sinds 2020 lijkt de soort zich standvastig gevestigd te hebben.\ + +## Materiaal en methode + +Alle vrijgegeven waarnemingen van [waarnemingen.be](http://www.waarnemingen.be/) van otter, bruinvis, gewone zeehond, grijze zeehond en bever tussen 2010 en 2023 werden opgevraagd. +Deze gegevens mogen enkel gebruikt worden voor de geïntegreerde systeemmonitoring van het Schelde-estuarium -- MONEOS. +Deze gegevens mogen niet worden overgenomen zonder toestemming van de eigenaar (Natuurpunt Studie vzw).\ + +De waarnemingen betreffen uitsluitend losse waarnemingen. +Het wetenschappelijk gebruik van dergelijke waarnemingen kent zijn beperkingen (Herremans et al. 2018). +De losse waarnemingen kunnen worden gebruikt om veranderingen in verspreiding van de soorten te evalueren (Herremans et al. 2018, Maes et al. 2018). +De data kunnen niet worden gebruikt voor nauwkeurige trendbepaling o.a. +omdat de zoekinspanning niet gekend is en het meldingsgedrag variabel is. +De hier behandelde soorten zijn echter meldenswaardige soorten. +Ruwe trendinschatting zijn met het nodige voorbehoud eventueel wel zinvol (Herremans et al. 2018).\ + +Data van 2022 en vroeger kunnen verschillen van vorige dataleveringen als gevolg van retroactieve ingave van waarnemingen. + +## Resultaten + +### Overzicht van de waarnemingn sinds 2010 + +Tabel \@ref(tab:120-tabel1) geeft een overzicht van het totaal aantal waarnemingen van bever, otter, bruinvis, gewone zeehond en grijze zeehond. +Tabel \@ref(tab:120-tabel2) en figuur \@ref(fig:120-figuur1) geven een overzicht van het totaal aantal ingevoerde exemplaren van de soorten. + +```{r 120-tabel1} +# inlezen tabel +aantal_waarnemingen <- + read_csv(paste0(pad_tabellen, "aantal_waarnemingen.csv")) +soort_nUTM1 <- read.csv(str_c(pad_data, "soort_nUTM1.csv")) + +# hoofding tabel +caption_x_waarden <- "Totaal aantal waarnemingen in de vallei van de Zeeschelde en haar bijrivieren (inclusief niet gevalideerde waarnemingen). " + +# voetnoten bij tabel +footnote_text <- + c("Bij bever wordt het aantal waarschijnlijke zichtwaarnemingen (geen sporen) tussen haakjes aangegeven.") + +# opmaak tabel +aantal_waarnemingen %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black", align = "c"))) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + caption = caption_x_waarden) %>% + footnote(number = footnote_text, + escape = FALSE, + threeparttable = FALSE) %>% + kable_styling(latex_options = c("scale_down")) +``` + +
+ +```{r 120-tabel2} + +# inlezen tabel +aantal_ind <- + read_csv(paste0(pad_tabellen, "aantal_ind.csv")) + +# hoofding tabel +caption_x_waarden <- "Totaal aantal ingegeven waargenomen exemplaren per jaar in de vallei van de Zeeschelde en haar bijrivieren (exclusief waarnemingen van sporen)." + +# voetnoten bij tabel +footnote_text <- + c("Tussen haakjes wordt het aantal dood teruggevonden exemplaren gegeven.", + "Het totaal aantal waargenomen dieren betreft vaak meervoudige waarnemingen van hetzelfde dier of dezelfde dieren.") +# opmaak tabel +aantal_ind %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black", align = "c"))) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + caption = caption_x_waarden) %>% + footnote(number = footnote_text, + escape = FALSE, + threeparttable = FALSE) %>% + kable_styling(latex_options = c("scale_down")) + +``` + +
+ +```{r 120-figuur1, fig.cap=caption_figuur1, out.width="95%"} + +caption_figuur1 <- "Evolutie van het aantal waargenomen exemplaren van bever, otter, bruinvis, gewone zeehond en grijze zeehond." + +knitr::include_graphics(paste0(pad_figuren, "120_fig1_aantal_ind.jpg")) +``` + +
+ +### Overzicht waarnemingen 2023 + +#### Bever + +De gestage uitbreiding van de bever in de Scheldevallei (Mertens, 2016) lijkt zich, na een stagnatie in 2021 en 2022, verder te zetten. +Zowel het aantal ingevoerde waarnemingen als het totaal aantal ingevoerde individuen lag 2023 hoger dan ooit tevoren. +Ook het areaal breidt uit in 2023. +De bever werd in 2023 waargenomen in 163 km-hokken tegenover 143 in 2021 en 139 in 2022.\ + +Ondertussen zijn grote delen van de Scheldevallei en de valleien van de zijrivieren gekoloniseerd. +De uitbreiding in de in de Boven-Zeeschelde tussen Gent en Dendermonde zet zich in 2023 verder. +Ook in de omgeving van Antwerpen komt de soort in steeds meer km-hokken voor. +Na de Burchtse Weel heeft de bever ook de andere natuurgebieden in Antwerpen-Linkeroever ingepalmd. +Vanuit het oosten komt de bever via de Schijnvallei de stad binnen en in de haven zijn er zowel op linker- als op rechteroever steeds meer kom-hokken waar de soort is waargenomen. +Nieuw bezette hokken bevinden zich ook langs de Rupel (Polder van Niel, vallei van de Vliet) en in de Zennevallei. +De vallei van de Grote Nete bleef lange tijd eeen blinde vlek, maar daar lijkt de laatste toch verandering in te komen. +Er zijn in 2023 heel wat nieuwe vestigingingen in de vallei tussen Heist-op-den-Berg -Lier. +Ook in Westerlo en verder stroomopwaarts in het Zammels broek en de vallei van de Grote laak komt de bever ondertussen voor. +De zone Booischot en Westerlo is nog niet gekoloniseerd. + +```{r 120-figuur2, fig.cap=caption_figuur2, out.width="80%"} +caption_figuur2 <- "Evolutie van het aantal km-hokken (UTM1-hokken) met beverwaarnemingen in vallei van de Schelde en haar tijgebonden zijrivieren." + +knitr::include_graphics(paste0(pad_figuren, "bever_utm.png")) +``` + +```{r 120-figuur3, fig.cap=caption_figuur3, out.width="90%"} +caption_figuur3 <- "Geografische spreiding van gevalideerde beverwaarnemingen in 2021." + +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2021.png")) +``` + +```{r 120-figuur4, fig.cap=caption_figuur4, out.width="90%"} +caption_figuur4 <- "Geografische spreiding van gevalideerde beverwaarnemingen in 2022." + +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2022.png")) +``` + +```{r 120-figuur5, fig.cap=caption_figuur5, out.width="90%"} +caption_figuur5 <- "Geografische spreiding van gevalideerde beverwaarnemingen in 2023." + +knitr::include_graphics(paste0(pad_figuren, "Europese Bever_2023.png")) +``` + +```{r 120-figuur-kol, fig.cap=caption_figuur_kol, out.width="90%"} +caption_figuur_kol <- "Kolonisatiegeschiedenis van bever in de valleien van de Schelde en haar zijrivieren. De kleuren geven het jaar van de eerste waarneming in het km hok weer." + +knitr::include_graphics(paste0(pad_figuren, "bever_kolonisatie.png")) +``` + +
+ +#### Otter + +De otter werd in 2012 voor het eerst sinds lang opnieuw waargenomen in Vlaanderen, onder meer in de Rupelvallei. +Tot 2019 werden slechts sporadisch sporen of dieren waargenomen in de omgeving van de Rupelmonding. +Gerichte opvolging (spraints, cameravallen) in deze omgeving toonde aan dat de soort sinds 2014 constant aanwezig is en zich vermoedelijk voortplant (Gouwy et al., 2017). +Na de vondst van uitwerpselen in Waasmunster in 2019 leidde gericht onderzoek o.a. +met cameravallen, in de Durmevallei en verder stroomopwaarts langs de Schelde tot veel bijkomende waarnemingen. +In 2021 waren er in totaal `r nrow(zoogdier_data[which(zoogdier_data$naam_nl == "Europese Otter" & year(zoogdier_data$datum) == 2021 & str_detect(zoogdier_data$status, "Goed")),])` waarnemingen in `r soort_nUTM1[which(soort_nUTM1$naam_nl == "Europese Otter" & soort_nUTM1$Jaar == 2021),]$n` utm-hokken, in 2022 `r nrow(zoogdier_data[which(zoogdier_data$naam_nl == "Europese Otter" & year(zoogdier_data$datum) == 2022 & str_detect(zoogdier_data$status, "Goed")),])` waarnemingen in `r soort_nUTM1[which(soort_nUTM1$naam_nl == "Europese Otter" & soort_nUTM1$Jaar == 2022),]$n` utm-hokken en in 2023 `r nrow(zoogdier_data[which(zoogdier_data$naam_nl == "Europese Otter" & year(zoogdier_data$datum) == 2023 & str_detect(zoogdier_data$status, "Goed")),])` waarnemingen in `r soort_nUTM1[which(soort_nUTM1$naam_nl == "Europese Otter" & soort_nUTM1$Jaar == 2023),]$n` . +De meeste waarneming zijn afkomstig uit de Durmevallei en de omgeving van het Berlare Broek. +De otter werd ook in 2023 waargenomen langs de Rupel. +Er waren geen meldingen uit de Polders van Kruibeke. + +```{r 120-figuur6, fig.cap=caption_figuur6, out.width="90%"} +caption_figuur6 <- "Geografische spreiding van gevalideerde otterwaarnemingen in 2021." +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2023.png")) +``` + +```{r 120-figuur7, fig.cap=caption_figuur7, out.width="90%"} +caption_figuur7 <- "Geografische spreiding van gevalideerde otterwaarnemingen in 2022." +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2023.png")) +``` + +```{r 120-figuur8, fig.cap=caption_figuur8, out.width="90%"} +caption_figuur8 <- "Geografische spreiding van gevalideerde otterwaarnemingen in 2023." +knitr::include_graphics(paste0(pad_figuren, "Europese Otter_2023.png")) +``` + +
+ +#### Gewone zeehond + +Jaarlijks zwemmen zeehonden in kleine aantallen de Zeeschelde op en verblijven er min of meer lange tijd. +De soort plant zich niet voort in het Belgisch deel van het Schelde-estuarium.\ + +
+ +Zoals de voorgaande jaren werden in 2023 de meeste gewone zeehonden waargenomen nabij de grens met Nederland ter hoogte van het Groot Buitenschoor en het Schor Ouden Doel. +Daarnaast waren er aardig wat waarnemingen op de Schelde tussen Doel en Antwerpen en waarnemingen in het Kanaaldok en het het Hansadok in de haven van Antwerpen. +Stroomopwaarts Antwerpen is er op de Zeeschelde slechts één waarneming in Bornem (9/3). +Er zijn enkele waarnemingen op de Rupel, de Zenne en de Beneden Nete in augustus, september en oktober.\ +Zowel het aantal waarnemingen als het aantal ingevoerde individuen lag in 2023 lager dan in 2022, en veel lager dan in 2021 (zie figuur \@ref(fig:120-figuur1)). + +```{r 120-tabel3} +# inlezen tabel +zeehond <- + read_csv(paste0(pad_tabellen, "/zeehond2023.csv")) + +# hoofding tabel +caption_x_waarden <- "Waarnemingen (gevalideerde en niet gevalideerde) van gewone zeehond in 2023. " + + +# opmaak tabel +zeehond %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black", font_size = 7))) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + longtable = TRUE, + caption = caption_x_waarden) %>% + kable_styling(latex_options = c("scale_down"), + font_size = 7) + +``` + +\newpage + +#### Grijze zeehond + +Naast gewone zeehonden duiken af en toe ook grijze zeehonden op in de Zeeschelde. + +In 2023 werd de grijze zeehond slechts drie maal waargenomen . +Twee maal aan de grens met Nederlande en één maal aan het andere uiteinde van het estuarium in Merelbeke. + +
+ +```{r 120-tabel4} +# inlezen tabel +grijzezeehond <- + read_csv(paste0(pad_tabellen, "/grijzezeehond2023.csv")) + +# hoofding tabel +caption_x_waarden <- "Waarnemingen van grijze zeehond in 2023." + + +# opmaak tabel +grijzezeehond %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black", font_size = 8))) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + caption = caption_x_waarden) %>% + kable_styling(latex_options = c("scale_down")) + +``` + +
+ +#### Bruinvis + +In 2013 werd een groot aantal bruinvissen waargenomen in het Belgisch deel van het Schelde-estuarium. +Voor en na 2013 zijn er slechts sporadisch waarnemingen van deze soort.\ +
+ +In 2023 werden twee waarneming van bruinvis op de Schelde ingevoerd in waarnemingen.be. +Eén aan de Nederlandse grens (14 oktober) en één in Zele (4 mei). + +```{r 120-tabel5} +# inlezen tabel +bruinvis2021 <- + read_csv(paste0(pad_tabellen, "/bruinvis2023.csv")) + +# hoofding tabel +caption_x_waarden <- "Waarnemingen van bruinvis in 2023." + + +# opmaak tabel +bruinvis2021 %>% + mutate(across(everything(), ~as.character(.) %>% replace_na(""))) %>% + mutate(across(everything(), ~cell_spec(., color = "black", font_size = 8))) %>% + knitr::kable(escape = FALSE, + booktabs = TRUE, + caption = caption_x_waarden) %>% + kable_styling(latex_options = c("scale_down")) +``` + +\newpage + +## Discussie + +Noch voor gewone zeehond, noch voor grijze zeehond of gewone bruinvis zijn er (eenduidige) instandhoudingsdoelstelling voor de Zeeschelde.\ +Gewone zeehond werd in 2023 zoals steeds vooral waargenomen ter hoogte van de grens. +Het aantal warnemingen en het antals waargenomen exemlplaren lag lager dan in 2021 en 2022. + +Met twee waarnemingen blijft de grijze zeehond een zeldzame verschijning. + +Dit kan ook gezegd worden van de bruinvis met eveneens slechts 2 waarnemingen. + +Voor bever en otter zijn wel instandhoudingsdoelen geformuleerd. +Adriaensen *et al.* (2005) stellen dat voldoende ruimte en geschikt habitat aanwezig moeten zijn binnen strikt beschermde natuurgebieden voor een potentiële populatie bevers van ca. +40 families (ca. 160 individuen), verspreid over verschillende deelgebieden. +Voor otter moet er voldoende potentieel leefgebied zijn om een leefbare kernpopulatie van 20-25 individuen te onderhouden, verspreid over 3 - 4 deelgebieden.\ + +Bij een doorgedreven inventarisatie van beverterritoria in Vlaanderen vonden Huysentruyt *et al.* (2019) in 2017 29 beverterritoria in de vallei van de Zeeschelde en tijgebonden zijrivieren. +In dat zelfde jaar werden beverwaarnemingen verricht in 64 km-hokken, m.a.w. een verhouding van `r round(64/29, 2)` km-hokken per territoria. +Indien deze verhouding een constante is, zouden er in 2023 ca. +`r round(163/(64/29),0)` territoria zijn. +Volgens de methode in Huysentruyt *et al.* (2019) stemt dit overeen met `r round(163/(64/29)*0.6,0)` reproductieve eenheden (families) en `r round(163/(64/29)*2.8,0)` individuen. +De doelstelling voor bever is in 2023 gerealiseerd.\ + +Voor de otter is dit niet het geval. +Dat er meerdere exemplaren in twee deelgebieden (ruime omgeving van de Rupelmonding en Durmevallei - Berlare Broek) voorkomen werd bevestigd in 2023. +Maar er zijn zeker nog geen 20-25 individuen. + +
+\newpage + +## Referenties + +Adriaensen F., Van Damme S., Van den Bergh E., Van Hove D., Brys R., Cox T., Jacobs S., Konings P., Maes J., Maris T. +et al. (2005). +Instandhoudingsdoelstellingen Schelde-estuarium. +Antwerpen: Antwerpen U. +05-R82. +249 p. + +Everaert J. +2021. +Otter "Meneer Eenoog" heeft leefgebied van Wachtebeke tot Berlare in Oost-Vlaanderen. +Roofdiernieuws 29. +INBO. + +Gouwy J., Mergeay J., Neyrinck S., Van Breusegem A., Berlengee F., Van Den Berge K., Everaert J. +2021. +2022 : Otters troef! +INBO Roofdiernieuws 29, december 2021. + +Gouwy J., Van Den Berge K., Berlengee F. +& Vansevenant D. +2017. +Dode otter ingezameld in Kalmthout en bevestiging van de meerjarige aanwezigheid in de vallei van de Zeeschelde -- INBO Marternieuws 23, december 2017. + +Herremans M., Swinnen K. +& Vanormelingen P. 2018. +Www.waarnemingen.be, wat kunnen we daarmee? +Natuur.focus 17(4) online: [www.natuurpunt.be/focus](www.natuurpunt.be/focus) + +Huysentruyt F, Van Daele T, Verschelde P, Boone N, Devisscher S, Vernaillen J (2019). +Evaluatie van de monitoring van bever (Castor fiber) in Vlaanderen. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2019 (28). +Instituut voor Natuur- en Bosonderzoek, Brussel. + +Mertens W. +(2016). +Hoofdstuk 8 Zoogdieren in Van Ryckegem, G., Van Braeckel, A., Elsen, R., Speybroeck, J., Vandevoorde, B., Mertens, W., Breine, J., De Beukelaer, J., De Regge, N., Hessel, K., Soors, J., Terrie, T., Van Lierop, F. +& Van den Bergh, E. +(2016). +MONEOS -- Geïntegreerd datarapport INBO: Toestand Zeeschelde 2015: monitoringsoverzicht en 1ste lijnsrapportage Geomorfologie, diversiteit Habitats en diversiteit Soorten. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2016 (INBO.R.2016.12078839). +Instituut voor Natuur- en Bosonderzoek, Brussel. + +Van Den Berge K., Gouwy J. +& Berlengee F.(2019). De otter (Lutra lutra) in Vlaanderen. +State of the art anno 2019. +Rapporten van het Instituut voor Natuur- en Bosonderzoek 2019 (60). +Instituut voor Natuur- en Bosonderzoek, Brussel. diff --git a/moneos_2024/150_geintegreerd_rapport/LICENSE.md b/moneos_2024/150_geintegreerd_rapport/LICENSE.md index 7e5a52a..bed44e0 100644 --- a/moneos_2024/150_geintegreerd_rapport/LICENSE.md +++ b/moneos_2024/150_geintegreerd_rapport/LICENSE.md @@ -1,6 +1,4 @@ -## creative commons - -# Attribution 4.0 International +# Creative Commons Attribution 4.0 International Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. diff --git a/moneos_2024/150_geintegreerd_rapport/index.Rmd b/moneos_2024/150_geintegreerd_rapport/index.Rmd index 04031b4..fd987fe 100644 --- a/moneos_2024/150_geintegreerd_rapport/index.Rmd +++ b/moneos_2024/150_geintegreerd_rapport/index.Rmd @@ -23,6 +23,7 @@ author: - name: given: Bart family: Vandevoorde + orcid: 0009-0001-7272-8055 affiliation: Research Institute for Nature and Forest (INBO) - name: given: Amber @@ -96,9 +97,9 @@ publication_type: report cover_photo: "" # naam foto file cover_description: "" # cover: media/cover.pdf # link naar pdf met cover -doi: 99.99999/inbor.99999999 -reportnr: "" -depotnr: "" +doi: 10.21436/inbor.xxxxxxx5 +reportnr: 45 +depotnr: D/20xx/3241/365 ordernr: "" embargo: 2099-03-01 diff --git a/moneos_2024/moneos_2024.Rproj b/moneos_2024/moneos_2024.Rproj index f7ad3dc..5ebfe47 100644 --- a/moneos_2024/moneos_2024.Rproj +++ b/moneos_2024/moneos_2024.Rproj @@ -15,4 +15,4 @@ LaTeX: XeLaTeX BuildType: Website WebsitePath: 150_geintegreerd_rapport -SpellingDictionary: nl_NL +MarkdownWrap: Sentence