--- title: "Ergebnisse der Bundeswaldinventur in Brandenburg" #subtitle: "Informationen als Infografik zu den Brendenburger Ergebnisdaten der BWI 2022 für die Hosentasche und Webseite" institution: "Landeskompetenzzentrum Forst Eberswalde" author: "Torsten Wiebke und Dr. Ulrike Hagemann" date: last-modified date-format: "[Stand] D. M. YYYY" format: pdf: documentclass: scrreprt #Komascript reprt include-in-header: - text: | \usepackage{easy-todo} use-rsvg-convert: true #default-image-extension: png keep_tex: true # wenn nur PDF: in der Console: quarto::quarto_render("your_document.qmd", output_format = "pdf") # quarto::quarto_render("bwi_interpretationsworkshop.qmd", output_format = "revealjs") docx: toc: true number-sections: true html: toc: true revealjs: # ermölicht horizontale und vertikale Gliederung navigation-mode: vertical # gibt die Überschriftenebene an bis zu der eine eigene Folie erzeugt werden soll slide-level: 4 incremental: false slide-number: true pptx: reference-doc: LFB_Masterfolie_LFE_2024.pptx editor_options: markdown: wrap: 72 #editor: visual --- {{< include librarys-datimport.qmd >}} # Die Bundeswaldinventur (BWI) ::::: columns ::: {.column width="50%"} - Bundesweite Stichprobeninventur alle 10 Jahre im Wald nach § 41 a BWaldG - seit 1987, Deutschlandweit seit 2002 - 4. Turnus - Ergebnisse sind das Fundament für forst-, wirschafts- und umweltpolitische Entscheidungen sowie Grundlage für eine nachhaltige Waldbewirtschaftung - Modellierung zukünftiger Waldentwicklung und Holzaufkommen (WEHAM) - Aussagen zu den Klimaschutzleistungen des Waldes - Planungs- und Investitionsentscheidungen im Cluster Forst und Holz - Datenbasis für die forstliche Forschung ::: ::: {.column width="50%"}  ::: ::::: ## Datenerhebung - Aufnahmen in Brandenburg von April 2021 bis Ende 2022 - Stichprobennetz von 2 km x 2 km - insgesamt wurden ca. `r format(trackt_eckenanzahl %>% select(begutachtungsecken) %>% pull() %>% as.numeric(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` Punkte begutachtet - `r format(trackt_eckenanzahl %>% select(ausschreibungstrakte) %>% pull() %>% as.numeric(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` Trakte mit `r format(trackt_eckenanzahl %>% select(waldecke) %>% pull() %>% as.numeric(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` Ecken wurden zur Begutachtung ausgeschrieben und `r format(trackt_eckenanzahl %>% select(lfebearbeitungsecke) %>% pull() %>% as.numeric(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` Ecken von eigenen Trupps begutachtet - `r format(waldecke_begeh22 %>% filter(Begehbarkeit == "begehbar + nicht begehbar" & Waldspezifikation == "Wald") %>% select(Ecken) %>% pull() %>% as.numeric(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` Ecken lagen im Wald nach LWaldG und [Walddefinition der BWI](#imp-bwi_walddef) - von diesen waren `r format(round((waldecke_begeh22 %>% filter(Begehbarkeit == "begehbar" & Waldspezifikation == "Wald") %>% select(Ecken) %>% pull()),2), big.mark = ".", decimal.mark = ",", scientific = FALSE)` begehbar und es konnten Daten aufgenommen werden. ### Waldfläche ::::: columns ::: {.column width="50%"} - trotz hoher Flächenkonkurrenz Waldfläche mit `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Wald') %>% select(Fläche) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha unverändert - viertgrößte Waldfläche Deutschlands; mit `r format(waldflant %>% filter(Kategorie == "Wald" & Land == "Brandenburg") %>% select(Anteil) %>% pull() %>% round(2), big.mark = ".", decimal.mark = ",", scientific = FALSE)` % auf Platz 5 der waldreichsten Bundesländer - Abnahme der Blößen und des Nichtholzbodens v.a. durch Sukzession (z.B. auf ehemaligen Truppenübungsplätzen) ::: ::: {.column width="50%"} ```{r TreemapWaldspez, echo=FALSE} #TODO: Label außerhalb Diagramm erstellen ggplot((waldfl_spez_long %>% filter(Land == 'Brandenburg' & Kategorie != 'Wald' & Kategorie != 'Holzboden') ), aes(area = Fläche, fill = Kategorie, label = paste(Kategorie,"\n", paste0(format(round(Fläche), big.mark = ".", decimal.mark = ",", scientific = FALSE)), "ha","\n", "(", round(Prozent, 1), "%)", sep = ""))) + geom_treemap(color = "black", size = 0.5) + # Schwarzer Rand um die Felder geom_treemap_text(colour = "black", place = "centre") + scale_fill_manual(values = c( "bestockter Holzboden" = "#24d617", # Grün für bestockter Holzboden "Blöße" = "#d6b913", # Ocker für Blöße "Nichtholzboden" = "grey" # Grau für Nichtholzboden )) + theme(legend.position = "right") + labs(title = "Waldflächen nach Spezifikation\n in Brandenburg in der BWI 2022") #ggsave("images/TreemapWaldspezifikationen.png", width = 10, height = 10, units = "cm") ``` ::: ::::: ### Waldflächentext Brandenburg verfügt über eine Waldfläche von **`r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Wald') %>% select(Fläche) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha**. Forstwirtschaftlich unterteilt besteht diese aus: - »bestockter Holzboden«: `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'bestockter Holzboden') %>% select(Fläche) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha, das sind `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'bestockter Holzboden') %>% select(Prozent) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` %. - »Nichtholzboden«: `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Nichtholzboden') %>% select(Fläche) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha, das sind `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Nichtholzboden') %>% select(Prozent) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` %. - »Blößen«: `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Blöße') %>% select(Fläche) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha, das sind `r format(waldfl_spez_long %>% filter(Land=='Brandenburg' & Kategorie == 'Blöße') %>% select(Prozent) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` %. Damit nimmt Brandenburg nach absoluter Waldfläche bundesweit den **vierten** Platz - nach Bayern, Baden-Württemberg und Niedersachsen - und nach relativer Waldfläche, mit **`r format(waldflant %>% filter(Kategorie == "Wald" & Land == "Brandenburg") %>% select(Anteil) %>% pull() %>% round(2), big.mark = ".", decimal.mark = ",", scientific = FALSE)` %** den **fünften** Platz - nach Rheinland-Pfalz, Hessen, Baden-Württemberg und dem Saarland - ein. ### Waldeigentum Die Brandenburger Waldfläche in Höhe von `r format(waldfl_eig$waldfl22_eig %>% filter(Land == "Brandenburg") %>% select('alle Eigentumsarten') %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha teilt sich in `r format(waldfl22_eig_long %>% filter(Land == "Brandenburg" & Eigentumsart %in% c("Privatwald")) %>% ungroup() %>% select(c(Prozent)) %>% pull())` % Privatwald und `r format(waldfl22_eig_long %>% filter(Land == "Brandenburg" & Eigentumsart %in% c("Öffentlicher Wald")) %>% ungroup() %>% select(c(Prozent)) %>% pull())` % öffentlicher Wald auf ```{r waldfl_brb_eig, echo=FALSE} # Treemap erstellen ggplot((waldfl22_eig_long %>% filter(Land == "Brandenburg") %>% filter(!Eigentumsart %in% c("Öffentlicher Wald", "Privatwald")) ),aes( area = Fläche, fill = Gruppe, # Gruppierung nach der Spalte "Gruppe" label = paste( Eigentumsart, "\n", formatC( Fläche, format = "f", big.mark = ".", decimal.mark = ",", digits = 0 ), "ha" ) # Formatierung der Fläche ) ) + geom_treemap(colour = "black", size = 0.8) + # Hinzufügen von Randlinien um die Rechtecke geom_treemap_text(colour = "black", place = "centre", grow = TRUE) + geom_treemap_text(aes(label = paste0(Prozent, "%")), # Prozentwerte unter der Fläche anzeigen colour = "black", place = "bottom", grow = FALSE, size=12, padding.x = grid::unit(2, "mm")) + labs( title = "Waldflächenverteilung in Brandenburg", subtitle = "Nach Eigentumsarten und Gruppen", fill = "Gruppe" # Legende zeigt die Gruppierung ) + theme( #legend.position = "right", # Position der Legende legend.text = element_text(size = 14), # Schriftgröße der Legendenbeschriftungen #legend.title = element_text(size = 14, face = "bold") # Schriftgröße und Fettdruck des Legendentitels ) #theme_minimal() #ggsave("images/TreemapWaldfläche_Eigentum_Brandenburg_2022.png", width = 20, height = 15, units = "cm") ``` ### Eigentumsübergänge 2012-2022 ::::: columns ::: {.column width="50%"} - Zunahme im Privatwald u.a. durch Übertragung an Stiftungen - größte Flächenzunahme im Privatwald zwischen 20 ha und 1000 ha - leichte Zunahme im Privatwald \>1000 ha - alle anderen Eigentumsformen verlieren Fläche ::: ::: {.column width="50%"} ```{r ver-waldfl_eig_plot, echo=FALSE} ggplot((ver_waldfl22_eig_long %>% group_by(Land) %>% filter(Land == "Brandenburg" & !Eigentumsart %in% c("Öffentlicher Wald", "Privatwald"))), aes(x = reorder(Eigentumsart, `Fläche`), y = `Fläche`, fill = Eigentumsart)) + geom_col() + geom_text(aes(label = format(round(`Fläche`, 0), big.mark = ".", decimal.mark = ",", scientific = FALSE)), position = position_stack(vjust = 0.5), # Adjust position for placement inside bars size = 3, color = "black", angle = 90) + labs(x = "Eigentumsgruppe", y = "Veränderungen [ha]") + # Achsenbeschriftungen festlegen ggtitle("Veränderungen der Waldfläche nach Eigentumsart\n in Brandenburg von 2012-2022") + theme_minimal() + theme( axis.text.x = element_text(angle = 45, hjust = 1, size = 10), # X-Achsen-Beschriftung drehen plot.title = element_text(hjust = 0.5), # Titel zentrieren plot.title.position = "plot", # Titel-Position axis.title.x = element_text(face = "bold", size = 12), # X-Achsentitel fett und größer axis.title.y = element_text(face = "bold", size = 12) # Y-Achsentitel fett und größer ) + scale_fill_brewer(palette = "Greens") + # Farbskala guides(fill = 'none') # Legende entfernen #ggsave("images/VeränderungenWaldfläche_Eigentum_Brandenburg_2012-2022.png", width = 15, height = 10, units = "cm") ``` ::: ::::: ## Baumartenverteilung ::::: columns ::: column - mit einem Anteil von **`r format(waldfl22_ba_long %>% filter(Land == "Brandenburg" & Ba_Wa == "Kiefer (Pinus)") %>% select(Prozent) %>% pull(), big.mark = ".", decimal.mark = ",", scientific = FALSE)` %** immer noch von der Kiefer geprägt - Eichen und Birken haben jeweils noch Standflächenanteile von über 5 %, - Buche, Erle und die sonstigen Laubhölzer hoher und niedriger Lebensdauer erreichen immer noch zwischen 2,2 % und 3,6 % ::: ::: column ```{r waldfl_ba_22_treemap, echo=FALSE} ggplot( waldfl22_ba_long %>% filter(Land == "Brandenburg" & !Ba_Wa %in% c("alle Laubbäume", "alle Nadelbäume")) %>% arrange(Fläche) # Sortieren nach Fläche , aes(area = Fläche, fill = reorder(Ba_Wa, Fläche, FUN = sum), label = paste(Ba_Wa, "\n", format(round(Fläche, 0), big.mark = ".", decimal.mark = ","), "ha","\n","(", round(Prozent, 1), "%)", sep = ""))) + geom_treemap() + # Treemap zeichnen scale_fill_manual(values = waldfl22_ba_long$Farbe) + # Farben manuell festlegen geom_treemap(color = "black", size = 0.5) + # Schwarzer Rand um die Felder geom_treemap_text(colour = "black", place = "centre", grow = TRUE) + # Text hinzufügen labs(title = "Waldfläche nach Baumartengruppe, Blöße und Lücke \nin Brandenburg (BWI2022)", subtitle = "rechnerischer Reinbestand nach Standfläche der Bäume") + theme_minimal() + guides(fill = guide_legend(title = "Baumartengruppe, Blößen, Lücken", title.position = "bottom", size = 0.5, label.size = 5, title.size = 10)) #ggsave("images/waldfl_ba_22_treemap.png", width = 20, height = 15, units = "cm") ``` ::: ::::: ### Baumartenzusammensetzungsänderung ::::: columns ::: {.column width="50%"} - Anstieg des Laubbaumanteils (v.a. Eiche und Buche) - erheblicher Rückgang von Birke und den Laubbäumen niedriger Lebensdauer (z.B. Erle, Pappel, Vogelbeere, Weiden)\ - Abnahme der Blößenflächen ::: ::: {.column width="50%"} ```{r plot-standfl22_ver, echo=FALSE} ggplot((ver_stndfl_long %>% filter(Land == 'Brandenburg') %>% filter(Baumartengruppe != "alle Baumarten")), aes(x = reorder(Baumartengruppe, Veränderungen), y = Veränderungen, fill = Baumartengruppe)) + geom_col() + scale_fill_manual(values = (ba_farben[names(ba_farben) %in% ver_stndfl_long$Baumartengruppe])) + # Farben manuell festlegen labs(x = "Baumartengruppen", y = "Veränderungen [ha]", fill = "Baumartengruppen", title = "Veränderungen der Standflächen \n im Hauptbestand in Brandenburg (2022)", fill = "Baumartengruppen") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5, margin = margin(b = 25)), # Hinzufügen von Rändern im Titel legend.title = element_text(margin = margin(b = 10)), # Zusätzlicher Abstand zwischen Titel und Legende legend.spacing.y = unit(2, "lines")) + # Zusätzlicher Abstand zwischen Titel und Legende guides(fill = guide_legend(title.position = "top")) # Position des Legendentitels ändern #ggsave("images/plot-standfl22_ver.png", width = 20, height = 10, units = "cm") ``` ::: ::::: ### Altersverteilung ```{r normalwaldmodellfläche, include=FALSE} # Berechne die Normalwaldmodellfläche mittlere_Produktionszeit <- 120 normalwaldmodellflaeche22_100 <- (bb_stndfl_ba_22 %>% filter(Baumartengruppe == "alle Baumarten" & Altersklasse == "alle Baumaltersklassen" ) %>% select(Fläche) %>% pull() / mittlere_Produktionszeit) * 20 ``` ::::: columns ::: {.column width="50%"} - Überhang bei 41 - 60 Jahren und - deutlicher Überhang bei 61 - 80 Jahren - zuwenig junge und zu wenig alte Bäume - historisch bedingt - Änderung braucht Jahrzehnte ::: ::: {.column width="50%"} ```{r} # Schritt 1: Sortiere den Datensatz nach Fläche und Baumartengruppe bb_stndfl_ba_22_sorted <- bb_stndfl_ba_22 %>% filter(Altersklasse != "alle Baumaltersklassen" & !Baumartengruppe %in% c("alle Baumarten", "alle Laubbäume", "alle Nadelbäume")) %>% arrange(desc(Fläche)) # Sortiere nach Fläche in absteigender Reihenfolge # Schritt 2: Extrahiere die verwendeten Baumartengruppen baumarten_im_plot <- bb_stndfl_ba_22_sorted %>% distinct(Baumartengruppe) %>% pull(Baumartengruppe) # Schritt 3: Filtere ba_farben so, dass nur die Farben verwendet werden, die im Plot vorkommen farben_fuer_plot <- ba_farben[names(ba_farben) %in% baumarten_im_plot] # Schritt 4: Erstelle das Diagramm mit dem sortierten Datensatz ggplot(bb_stndfl_ba_22 %>% filter(Altersklasse != "alle Baumaltersklassen" & !Baumartengruppe %in% c("alle Baumarten", "alle Laubbäume", "alle Nadelbäume")) # Entfernen der Gesamtklassen , aes(x = Altersklasse, y = Fläche, fill = Baumartengruppe)) + geom_bar(stat = "identity", position = "stack") + # Gestapeltes Balkendiagramm # Linie von II (21 - 40 Jahre) bis VI (101 - 120 Jahre) geom_segment(aes(x = 1.5, xend = 6.5, y = normalwaldmodellflaeche22_100, yend = normalwaldmodellflaeche22_100), linetype = "dashed", color = "red") + # Beschriftung über der Linie annotate("text", x = 2, y = normalwaldmodellflaeche22_100 + 5000, label = paste("Normalwaldmodellfläche bei ", mittlere_Produktionszeit, "Jahren"), color = "red", hjust = 0) + # Beschriftung der Linie # Legendenüberschrift hinzufügen labs(x = "Altersklasse", y = "Fläche [ha]", title = "Standflächen der Baumarten über die Altersklassen", fill = "Baumartengruppe") + # Legendenüberschrift theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1), # X-Achse-Beschriftungen drehen legend.title = element_text(size = 8), # Kleinere Titelgröße für die Legende legend.text = element_text(size = 7)) + # Kleinere Schriftgröße für Labels scale_y_continuous(labels = scales::comma_format(big.mark = ".", decimal.mark = ",")) + # Tausenderformat scale_fill_manual(values = farben_fuer_plot) + # Farben aus ba_farben verwenden # Anpassung der Symbolgröße in der Legende guides(fill = guide_legend( ncol = 1, # Einspaltige Legende override.aes = list(size = 3) # Kleinere Symbole in der Legende )) ``` ::: ::::: ## Änderungen in der Waldstruktur ::::: columns ::: {.column width="50%"} - `r format(land_bestaufbau %>% filter(Land == "Brandenburg" & Bestockungsaufbau == 'mehrschichtig') %>% select(Fläche) %>% pull() %>% round(0), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha bzw. `r format(land_bestaufbau %>% filter(Land == "Brandenburg" & Bestockungsaufbau == 'mehrschichtig') %>% select(Anteil) %>% pull() %>% round(1), big.mark = ".", decimal.mark = ",", scientific = FALSE)` % der Holzbodenfläche in Brandenburg haben mindestens zwei Schichten - gegenüber der BWI 2012 hat sich die Fläche mit Beständen von mindestens zwei Schichten um `r format(ver_land_bestaufbau_ha %>% filter(Land == "Brandenburg" & Bestockungsaufbau == 'mehrschichtig' ) %>% pull() %>% round(0), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha erhöht - der Anteil einschichtiger Bestände hat sich gegenüber der BWI 2012 um `r format(abs(ver_land_bestaufbau_ha %>% filter(Land == "Brandenburg" & Bestockungsaufbau == 'einschichtig' ) %>% pull() %>% round(0)), big.mark = ".", decimal.mark = ",", scientific = FALSE)` ha verringert ::: ::: {.column width="50%"} ```{r groupbar-bestaufbauflant, echo=FALSE} ggplot( land_bestaufbau %>% filter(Land == "Brandenburg" & !Bestockungsaufbau %in% c('mehrschichtig', 'alle Arten von Bestockungsaufbau')) %>% inner_join(ver_land_bestaufbau_ha %>% filter(Land == "Brandenburg" & !Bestockungsaufbau %in% c('mehrschichtig', 'alle Arten von Bestockungsaufbau')), by = "Bestockungsaufbau") %>% select(Bestockungsaufbau, Fläche = Fläche.x, Veränderung = Fläche.y) %>% pivot_longer(cols = c(Fläche, Veränderung), names_to = "Typ", values_to = "Wert") , aes(x = reorder(Bestockungsaufbau, -Wert), y = Wert, fill = Bestockungsaufbau)) + # Färben nach Bestockungsaufbau geom_col(aes(group = Typ), position = position_dodge(width = 0.8), width = 0.7) + # Typ als Gruppe verwenden, um nebeneinander zu bleiben labs(x = "Bestockungsaufbau", y = "Holzbodenfläche [ha]", title = "Fläche und Veränderungen des \nBestockungsaufbaus in Brandenburg") + theme_minimal() + scale_fill_brewer(palette = "Greens") + # Färben nach Bestockungsaufbau mit einer Farbpalette theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_y_continuous(labels = label_comma(big.mark = ".", decimal.mark = ",", accuracy = 1), # Tausenderformat breaks = seq(0, max(land_bestaufbau$Fläche, na.rm = TRUE), by = 100000)) # Schrittweite von 100.000 ha #ggsave("images/groupbar-bestaufbauflant.png", width = 15, height = 10, units = "cm") ``` ::: :::::