::: content-hidden # librarys Farben und Daten {.hidden .unnumbered .unlisted} ```{r librarys, include=FALSE} library(readxl) library(ggplot2) library(treemapify) library(treemap) library(ggrepel) # um Legenden automatisch zu platzieren #library(scales) # um Tausendertrennzeichen einzuführen library(prettyunits) # um Einheiten zu formatieren library(stats) library(corrplot) library(tidyverse) library(feather) # um Daten zu speichern library(tidyr) library(scales) library(RColorBrewer) # Für eine breite Palette von Farben library(patchwork) # um Diagramme nebeneinander darzustellen library(knitr) library(flextable) library(kableExtra) library(xtable) # für LaTeX-Tabellen library(quarto) #library(webshot2) # für Screenshots library(RPostgres) # installation funktionert nachdem via muon libpq-dev installiert wurde library(config) # um Datenbankonfiguration zu verstecken library(todor) # um Todos zu erstellen - siehe RStudio, Addins find active ... todos ``` ```{r} # config.yml ist in faircloud/3-2-bwi/Auswertung/R_bwi/ # Verbindung herstellen # convwm <- dbConnect(RPostgreSQL::PostgreSQL(), # host="db03.simplex4data.de", # port=5432, # user="twiebke", # dbname="projekt_lfb", # password="rechtshelfeschmerzendamals") # Konfiguration für eine spezifische Datenbank laden config <- config::get(file = "config.yml") db_config <- config$databases$sgdb consgdb <- DBI::dbConnect(RPostgres::Postgres(), host=db_config$host, port=db_config$port, dbname=db_config$dbname, user=db_config$user, password=db_config$password) ``` # Farben ## ba_farben ```{r farben, include=FALSE} # Benutzerdefinierte Farben für die Layer ba_farben <- c("Eiche (Quercus)" = "#ffffcc", "Eiche" = "#ffffcc", "Eichen-Typ" = "#ffffcc", "Buche (Fagus)" = "#ccfe64", "Buche" = "#ccfe64", "Buchen-Typ" = "#ccfe64", "Esche (Fraxinus)" = "#fed976", "Eschen-Typ" = "#fed976", "Ahorn (Acer)" = "#fd8d3c", "sonst. Lb hoher Lebensdauer" = "#fc4e2a", "andere Lb hoher Lebensdauer" = "#fc4e2a", "Typ sonst. Laubbäume mit hoher Lebensdauer" = "#fc4e2a", "Erle (Alnus)" = "#8c96c6", "Erlen-Typ" = "#8c96c6", "Birke (Betula)" = "#e0ecf4", "Birken-Typ" = "#e0ecf4", "sonst. Lb niedriger Lebensdauer" = "#88419d", "andere Lb niedriger Lebensdauer" = "#88419d", "Typ sonst. Laubbäume mit niedriger Lebensdauer"= "#88419d", "alle Laubbäume" = "#ae017e", "Fichte (Picea)" = "#7f7f7f", "Fichte" = "#7f7f7f", "Fichten-Typ" = "#7f7f7f", "Tanne (Abies)" = "#a6bddb", "Tanne" = "#a6bddb", "Tannen-Typ" = "#a6bddb", "Douglasie (Pseudotsuga)" = "#67a9cf", "Douglasie" = "#67a9cf", "Douglasien-Typ" = "#67a9cf", "Kiefer (Pinus)" = "#e4ce4c", "Kiefer" = "#e4ce4c", "Kiefern-Typ" = "#e4ce4c", "Lärche (Larix)" = "#f4a6a4", "Lärche" = "#f4a6a4", "Lärchen-Typ" = "#f4a6a4", "alle Nadelbäume" = "#02818a", "Typ mit mehreren gleichrangigen Baumarten" ="#006d2c", "Lücke" = "#dcdcdc", "Blöße" = "#edf8fb", "Nichtholzboden" = "#b2e2e2", "Holzboden" = "#66c2a4", "bestockter Holzboden" = "#2ca25f", "Wald" = "#006d2c", "stehend, ganzer Baum" = "goldenrod1", "stehend, Bruchstück (Höhe ab 130 cm)" = "goldenrod2", "stehend" = "goldenrod3", "liegend, ganzer Baum mit Wurzelanlauf" = "darkseagreen1", "liegend, Stammstück mit Wurzelanlauf" = "darkseagreen2", "liegend, Teilstück ohne Wurzelanlauf" = "darkseagreen3", "liegend" = "darkseagreen4", "Wurzelstock (Höhe < 130 cm)" = "#88419d", "Abfuhrrest (aufgeschichtet)" = "#ae017e", "alle Totholztypen" = "#67a9cf", "alle Baumarten" = "#d9d9d9", "Nadelbäume" = "#02818a", "Laubbäume ohne Eiche" = "#B5529E" ) ``` ## Eigentumsaten ```{r} # Definiere eine benutzerdefinierte Farbpalette farben_fuer_eigentumsarten <- c( "alle Eigentumsarten" = "#d9d9d9", "Staatswald (Bund)" = "#0a15b4", "Staatswald (Land)" = "#5586b4", "Körperschaftswald" = "#85aeb4", "Privatwald" = "#58aa41" ) ``` ## Schichten ```{r} schichtfarben <- c( "einschichtig" = "#919691", "zweischichtig" = "#78c679", "mehrschichtig" = "#31a354", "mehrschichtig oder plenterartig" = "#006837", "alle Arten von Bestockungsaufbau" = "#c2e699" ) ``` ## Eigentumasartorder ```{r} # Definiere eine benutzerdefinierte Reihenfolge für die Eigentumsart eigentuemsart_order <- c("Staatswald (Bund)", "Staatswald (Land)", "Körperschaftswald", "Öffentlicher Wald", "Privatwald, bis 20 ha", "Privatwald, über 20 bis 1000 ha", "Privatwald, über 1000 ha", "Privatwald", "alle Eigentumsarten") ``` # Datenimport ## von Sachgebietsdatenbank consgdb ### Trakteckenanzahl ```{r} # # qu_trackt_eckenanzahl <- "select --distinct bftw.anat # count (distinct bfev.tnr) filter (where bfev.wa between 0 and 5) as ausschreibungstrakte, # COUNT(distinct bfev.tnr) filter (where bfev.wa = 0) as nichtwaldtrakte -- Anzahl der Traktnummern mit bfev.wa = 0 # ,COUNT(distinct bfev.tnr) filter (where bfev.wa between 1 and 5) as waldtrakte -- Anzahl der Traktnummern mit bfev.wa zwischen 1 und 5 # ,count(bfev.enr) filter (where bfev.wa between 0 and 5 and bftw.anat between 1901 and 1916) as begutachtungsecken # ,count(bfev.enr) filter (where bfev.wa between 0 and 5 and bftw.anat between 1901 and 1911) as ausschreibungsecke -- siehe bwi_meta.k3_login # ,count(bfev.enr) filter (where bfev.wa between 0 and 5 and bftw.anat between 1912 and 1916) as lfebearbeitungsecke # ,count(bfev.enr) filter (where bfev.wa between 1 and 5) as waldecke # from # bwi_2022.b3f_ecke_vorkl bfev # --join bwi_admin.lospunkt l on l.tnr = bfev.tnr # join bwi_2022.b3f_tnr_vorkl bftv on bftv.tnr = bfev.tnr # join bwi_2022.b3f_tnr_work bftw on bftw.tnr = bfev.tnr # where # bftv.trstatus between 1 and 3 -- waldtrakte oder ungewiss = x3_tr_status icode=3 # and bftw.anat between 1901 and 1916;" # trackt_eckenanzahl <- dbGetQuery(consgdb, qu_trackt_eckenanzahl) # trackt_eckenanzahl # # Speichere das Ergebnis als RDS-Datei # saveRDS(trackt_eckenanzahl, "../data/trackt_eckenanzahl.rds") # Lade die RDS-Datei trackt_eckenanzahl <- readRDS("../data/trackt_eckenanzahl.rds") ``` ### Highligts ```{r} # ist als View erstellt # v_top_wzp <- dbGetQuery(consgdb, # "SELECT * # FROM bwi_2022.v_top_wzp;" # ) # v_top_wzp # # # Speichere das Ergebnis als RDS-Datei # saveRDS(v_top_wzp, "../data/v_top_wzp.rds") # Lade die RDS-Datei v_top_wzp <- readRDS("../data/v_top_wzp.rds") ``` ##### Factor für AKL und BHD ```{r} # Definieren der Levels für Altersklassen altersklassen_levels <- c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre") # Labels für die Altersklassen (optional, für schönere Achsenbeschriftungen) altersklassen_labels <- c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre") # Optional: Definieren der Levels für Brusthöhendurchmesser bhd_levels <- levels <- c("ab 90 cm", "80,0 - 89,9 cm", "70,0 - 79,9 cm", "60,0 - 69,9 cm", "50,0 - 59,9 cm", "40,0 - 49,9 cm", "30,0 - 39,9 cm", "20,0 - 29,9 cm" , "10,0 - 19,9 cm", "7,0 - 9,9 cm") ``` ## Waldfläche ```{r imp_waldfl, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen waldfl_sheet_names <- excel_sheets("../data/Waldfl_Ba.xlsx") waldfl_ba <- lapply(waldfl_sheet_names, function(sheet) { read_excel("../data/Waldfl_Ba.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(waldfl_ba) <- waldfl_sheet_names ``` ### Waldflächenänderung ```{r imp_ver_waldfl, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen ver_waldfl_sheet_names <- excel_sheets("../data/ver_waldfläche.xlsx") ver_waldfl <- lapply(ver_waldfl_sheet_names, function(sheet) { read_excel("../data/ver_waldfläche.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(ver_waldfl) <- ver_waldfl_sheet_names ``` ##### Waldflächenänderung long ```{r ver-waldfl, include=FALSE} # Daten vorbereiten # Veränderung Waldfläche ver_waldfl_long <- ver_waldfl$ver_waldfl_waldspez_hb_nhb_2022 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Kategorie", values_to = "Veränderungen") %>% replace_na(list("Veränderungen"= 0)) #ver_waldfl_long ``` ##### Standflächenänderung long ```{r} # Daten für Waldfl in Long-Format bringen ver_stndfl_long <- ver_waldfl$ver_stndfl_ba_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Veränderungen") %>% #filter(Land != "Deutschland (alle Länder)") %>% replace_na(list(Veränderungen = 0)) ver_stndfl_long ``` ##### Prozentstandflächenänderung ```{r} ver_standfl_prozent <- ver_waldfl$ver_proz_waldfl_ba_standfl_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Kategorie", values_to = "Veränderungen") %>% #filter(Land != "Deutschland (alle Länder)") %>% replace_na(list(Veränderungen = 0)) ver_standfl_prozent ``` #### Vorratsänderung ```{r imp_ver_vor1, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen ver_vor_sheet_names <- excel_sheets("../data/ver_vorrates.xlsx") ver_vor <- lapply(ver_vor_sheet_names, function(sheet) { read_excel("../data/ver_vorrates.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(ver_vor) <- ver_vor_sheet_names ``` ##### Grundflächenänderung ```{r} # Daten in Long-Format bringen ver_gf_ba_22 <- ver_vor$ver_gf_ba_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Ba_Gruppen", values_to = "Veränderungen") ver_gf_ba_22 <- ver_gf_ba_22%>% replace_na(list(Veränderungen = 0)) ``` ### Waldflächenanteile ```{r} # Daten umformen und rangieren waldflant <- waldfl_ba$waldanteil22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Kategorie", values_to = "Anteil") # Filter, nach Anteil sortieren und fortlaufende Rangfolge erstellen waldflant <- waldflant %>% filter(Land != "Deutschland (alle Länder)") %>% arrange(desc(Anteil * (Kategorie == "Wald"))) %>% # Sortiert nach Anteil der Kategorie "Wald" absteigend group_by(Kategorie) %>% mutate(Anteilsrang = ifelse(Kategorie == "Wald", row_number(), NA)) %>% # Fortlaufende Rangfolge für Wald ungroup() # Zeilen anzeigen waldflant ``` ### Waldfläche \[ha\] nach Land und Waldspezifikation ```{r} # Daten in Long-Format bringen waldfl_spez_long <- waldfl_ba$waldfl22spez %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Kategorie", values_to = "Fläche") waldfl_spez_long <- waldfl_spez_long %>% replace_na(list(Fläche = 0)) # Prozentwerte der Kategorien berechnen waldfl_spez_long <- waldfl_spez_long %>% left_join((waldfl_spez_long %>% filter(Kategorie %in% c("bestockter Holzboden", "Blöße", "Nichtholzboden")) %>% group_by(Land) %>% mutate(Prozent = round((Fläche / sum(Fläche) * 100),2)) %>% ungroup() %>% select(Land, Kategorie, Prozent)), by = c("Land", "Kategorie")) %>% left_join(waldfl_spez_long %>% filter(Kategorie %in% c("Wald", "Holzboden")) %>% spread(key = Kategorie, value = Fläche) %>% mutate(Holzboden_Anteil = round((Holzboden / Wald) * 100, 2)) %>% select(Land, Holzboden_Anteil), by = "Land") %>% mutate(Prozent = ifelse(Kategorie == "Holzboden", Holzboden_Anteil, Prozent)) %>% select(-Holzboden_Anteil) %>% replace_na(list(Prozent = 100)) # Filter, nach Anteil sortieren und fortlaufende Rangfolge erstellen waldfl_spez_long <- waldfl_spez_long %>% filter(Land != "Deutschland (alle Länder)") %>% arrange(desc(Fläche * (Kategorie == "Wald"))) %>% # Sortiert nach Fläche der Kategorie "Wald" absteigend group_by(Kategorie) %>% mutate(Flächenrang = ifelse(Kategorie == "Wald", row_number(), NA)) %>% # Fortlaufende Rangfolge für Wald ungroup() waldfl_spez_long ``` ### Waldfläche Begehbarkeit ```{r} # waldfl_begeh22 <- waldfl_ba$bb_waldfl_begehbar_waldspez22 %>% # pivot_longer(cols = -c(Begehbarkeit,Einheit), # names_to = "Waldspezifikation", # values_to = "Fläche") # waldfl_begeh22 ``` ### Traktecken Begehbarkeit ```{r} waldecke_begeh22 <- waldfl_ba$bb_ecken_begehbar_waldspez22 %>% pivot_longer(cols = -c(Begehbarkeit,Einheit), names_to = "Waldspezifikation", values_to = "Ecken") waldecke_begeh22 ``` ### Waldfläche Eigentum ```{r imp_waldfl_eig, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen waldfleig_sheet_names <- excel_sheets("../data/Waldfl_eig.xlsx") waldfl_eig <- lapply(waldfleig_sheet_names, function(sheet) { read_excel("../data/Waldfl_eig.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(waldfl_eig) <- waldfleig_sheet_names ``` ```{r} #Daten umstrukturieren waldfl22_eig_long <- waldfl_eig$waldfl22_eig %>% pivot_longer(cols = -c(Land, Einheit, `alle Eigentumsarten`), names_to = "Eigentumsart", values_to = "Fläche") %>% replace_na(list(Fläche = 0)) # Berechnung der Prozentwerte für alle Kategorien waldfl22_eig_long <- waldfl22_eig_long %>% group_by(Land) %>% mutate(Prozent = round((Fläche / `alle Eigentumsarten`) * 100, 2)) # Erstellen der Gruppen waldfl22_eig_long <- waldfl22_eig_long %>% mutate( Gruppe = case_when( Eigentumsart %in% c("Staatswald (Bund)", "Staatswald (Land)", "Körperschaftswald") ~ "Öffentlicher Wald", Eigentumsart %in% c("Privatwald, bis 20 ha", "Privatwald, über 20 bis 1000 ha", "Privatwald, über 1000 ha") ~ "Privatwald", TRUE ~ Eigentumsart ) ) waldfl22_eig_long ``` ### Veränderung Waldfläche Eigentum ```{r} # Daten umstrukturieren ver_waldfl22_eig_long <- waldfl_eig$ver_waldfl22_eig %>% pivot_longer(cols = -c(Land, Einheit, `alle Eigentumsarten`),# `Öffentlicher Wald`, `Privatwald`), names_to = "Eigentumsart", values_to = "Fläche") %>% replace_na(list(Fläche = 0)) ver_waldfl22_eig_long ``` ### Baumarten Standflächen ha dtl ```{r} #Daten für 2022 vorbereiten waldfl22_ba_long <- waldfl_ba$waldfl_ba_standfl_22 %>% #filter(Land == "Brandenburg") %>% pivot_longer(cols = -c(Land, Einheit, `alle Baumarten` # , "alle Baumarten", # "alle Laubbäume","alle Nadelbäume", # "andere Lb hoher Lebensdauer", # "andere Lb niedriger Lebensdauer" ), names_to = "Ba_Wa", values_to = "Fläche") # waldfl22_ba_long # Berechnung der Prozentwerte für alle Kategorien waldfl22_ba_long <- waldfl22_ba_long %>% group_by(Land) %>% mutate(Prozent = round((Fläche / `alle Baumarten`) * 100, 2)) %>% ungroup() %>% # Zuordnung der Farben zu den Daten mutate(Farbe = ba_farben[match(Ba_Wa, names(ba_farben))]) waldfl22_ba_long ``` ### Baumarten Eig Standflächen ha brb bb_waldfl_ba_eg_standfl_22 ```{r} #Daten für 2022 vorbereiten bb_waldfl_ba_eg_standfl_22 <- waldfl_ba$bb_waldfl_ba_eg_standfl_22 %>% #filter(Land == "Brandenburg") %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Ba_Wa", values_to = "Fläche") # waldfl22_ba_long # Berechnung der Prozentwerte für alle Kategorien bb_waldfl_ba_eg_standfl_22 <- bb_waldfl_ba_eg_standfl_22 %>% group_by(Eigentumsart) %>% mutate(Prozent = round((Fläche / Fläche[Ba_Wa=="alle Baumarten"]) * 100, 2)) %>% ungroup() %>% # Zuordnung der Farben zu den Daten mutate(Farbe = ba_farben[match(Ba_Wa, names(ba_farben))]) bb_waldfl_ba_eg_standfl_22 ``` ` ### Waldflächen Standflächen ha bb (und Veränderung?) ```{r} bb_stndfl_ba_22 <- waldfl_ba$bb_stndfl_ba_22 %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Fläche") %>% replace_na(list(Fläche = 0)) #%>% # bb_stndfl_ba_22$Altersklasse <- factor(bb_stndfl_ba_22$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "Angabe fehlt", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre","Lücke/Blöße", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche bb_stndfl_ba_22$Baumartengruppe <- factor(bb_stndfl_ba_22$Baumartengruppe, levels = bb_stndfl_ba_22 %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Fläche)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) # c("alle Baumarten", "alle Nadelbäume", "Kiefer (Pinus)", "alle Laubbäume" ,"Eiche (Quercus)", "Birke (Betula)", "Buche (Fagus)", "Erle (Alnus)", "sonst. Lb hoher Lebensdauer", "sonst. Lb niedriger Lebensdauer", "Lücke", "Fichte (Picea)", "Lärche (Larix)", "Douglasie (Pseudotsuga)", "Ahorn (Acer)", "Blöße", "Esche (Fraxinus)", "Tanne (Abies)")) #distinct(bb_stndfl_ba_22, Baumartengruppe) #levels(bb_stndfl_ba_22$Baumartengruppe) ``` ```{r} # um die level zu bestimmen: bb_stndfl_ba_22 %>% filter(Altersklasse == "alle Baumaltersklassen" #& !Baumartengruppe %in% c("alle Baumarten", "alle Nadelbäume", "alle Laubbäume") ) %>% arrange(desc(Fläche)) %>% # Sortiere nach Fläche in absteigender Reihenfolge select(Baumartengruppe , Fläche ) %>% pull(Baumartengruppe) ``` ### Waldflächenänderung Standflächen ha bb ```{r} ver_bb_stndfl_ba_22 <- ver_waldfl$ver_bb_stndfl_ba_22 %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Veränderung") %>% replace_na(list(Veränderung = 0)) # ver_bb_stndfl_ba_22$Altersklasse <- factor(ver_bb_stndfl_ba_22$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "Angabe fehlt", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre","Lücke/Blöße", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche ver_bb_stndfl_ba_22$Baumartengruppe <- factor(ver_bb_stndfl_ba_22$Baumartengruppe, levels = ver_bb_stndfl_ba_22 %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Veränderung)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ## Vorrat und Vorratsänderung ### Vorrat ```{r imp_vor, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen vor_sheet_names <- excel_sheets("../data/Vorrat.xlsx") vor <- lapply(vor_sheet_names, function(sheet) { read_excel("../data/Vorrat.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(vor) <- vor_sheet_names ``` ### Vorratsänderung ```{r imp_ver_vor, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen ver_vor_sheet_names <- excel_sheets("../data/ver_vorrates.xlsx") ver_vor <- lapply(ver_vor_sheet_names, function(sheet) { read_excel("../data/ver_vorrates.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(ver_vor) <- ver_vor_sheet_names ``` ### Vorrat Baumarten und Altersklassen - v.a. reell ```{r} vorrat_ba_sheet_names <- excel_sheets("../data/vorrat_ba.xlsx") vorrat_ba <- lapply(vorrat_ba_sheet_names, function(sheet) { read_excel("../data/vorrat_ba.xlsx", sheet = sheet, skip = 5, na = "NaN") }) names(vorrat_ba) <- vorrat_ba_sheet_names ``` ### Veränderung Vorrat Baumarten und Altersklassen - v.a. reell ```{r} ver_vorrat_ba_sheet_names <- excel_sheets("../data/ver_vorrat_ba.xlsx") ver_vorrat_ba <- lapply(ver_vorrat_ba_sheet_names, function(sheet) { read_excel("../data/ver_vorrat_ba.xlsx", sheet = sheet, skip = 5, na = "NaN") }) names(ver_vorrat_ba) <- ver_vorrat_ba_sheet_names ``` #### Stammzahl ```{r} stammzahl <- vor$stammzahl %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Stammzahl") %>% replace_na(list(Stammzahl = 0)) ``` #### Vorrat Baumarten und Altersklassen - rechnerischer Reinbestand ##### vor_ideell_eig_ba_ha ```{r vor_ideell_eig_ba_ha} vor_ideell_eig_ba_ha <- vor$vor_ideell_eig_ba_ha %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) ``` ##### ver_vor_ideell_eig_ba_ha ```{r} ver_vor_ideell_eig_ba_ha <- ver_vor$ver_vor_ideell_eig_ba_ha %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Vorratsänderung") %>% replace_na(list(Veränderung = 0)) ``` ##### vor_bb_bag_ak_ha ```{r} vor_bb_bag_ak_ha <- vor$vor_bb_bag_ak_ha %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) #%>% # vor_bb_bag_ak_ha$Altersklasse <- factor(vor_bb_bag_ak_ha$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "Angabe fehlt", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre","Lücke/Blöße", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche vor_bb_bag_ak_ha$Baumartengruppe <- factor(vor_bb_bag_ak_ha$Baumartengruppe, levels = vor_bb_bag_ak_ha %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorrat)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` #### vor_reell_bb_allba_qm_ha bhd, Anteil, Veränderung ```{r} vor_anteil_ver_reell_bb_allba_qm_ha <- vorrat_ba$vor_reell_bb_allba_qm_ha %>% pivot_longer(cols = c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Volumen") %>% replace_na(list(Volumen = 0)) %>% mutate(Altersklasse = factor(Altersklasse, levels = altersklassen_levels, labels = altersklassen_labels)) %>% # Altersklassen als Faktor inner_join( vorrat_ba$`vor_reell_bb_allba_qm_%` %>% pivot_longer(cols = c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Anteil") %>% replace_na(list(Anteil = 0)) %>% mutate(Altersklasse = factor(Altersklasse, levels = altersklassen_levels, labels = altersklassen_labels)), # Gleiche Ordnung in der zweiten Tabelle by = c("Brusthöhendurchmesser", "Altersklasse") ) %>% inner_join( ver_vorrat_ba$ver_vor_reell_bb_allba_qm_ha %>% pivot_longer(cols = c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Veränderung") %>% replace_na(list(Veränderung = 0)) %>% mutate(Altersklasse = factor(Altersklasse, levels = altersklassen_levels, labels = altersklassen_labels)), # Gleiche Ordnung in der dritten Tabelle by = c("Brusthöhendurchmesser", "Altersklasse") ) %>% mutate(Brusthöhendurchmesser = factor(Brusthöhendurchmesser, levels = bhd_levels)) # Optional: BHD als Faktor ``` #### Vorrat Baumarten und Altersklassen - reell ##### vor_reell_bb_ba_akl_qm_ha ```{r} vor_reell_bb_ba_akl_qm_ha <- vorrat_ba$vor_reell_bb_ba_akl_qm_ha %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) #%>% # vor_reell_bb_ba_akl_qm_ha$Altersklasse <- factor(vor_reell_bb_ba_akl_qm_ha$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche vor_reell_bb_ba_akl_qm_ha$Baumartengruppe <- factor(vor_reell_bb_ba_akl_qm_ha$Baumartengruppe, levels = vor_reell_bb_ba_akl_qm_ha %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorrat)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### vor_reell_bb_hbst_ba_akl_qm_ha ```{r} vor_reell_bb_hbst_ba_akl_qm_ha <- vorrat_ba$vor_reell_bb_hbst_ba_akl_qm_ha %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) #%>% # vor_reell_bb_hbst_ba_akl_qm_ha$Altersklasse <- factor(vor_reell_bb_hbst_ba_akl_qm_ha$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche vor_reell_bb_hbst_ba_akl_qm_ha$Baumartengruppe <- factor(vor_reell_bb_hbst_ba_akl_qm_ha$Baumartengruppe, levels = vor_reell_bb_hbst_ba_akl_qm_ha %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorrat)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### vor_rel_bb_hbst_ln_ne0_ba_akl_q ```{r} vor_rel_bb_hbst_ln_ne0_ba_akl_q <- vorrat_ba$vor_rel_bb_hbst_ln_ne0_ba_akl_q %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) #%>% # vor_rel_bb_hbst_ln_ne0_ba_akl_q$Altersklasse <- factor(vor_rel_bb_hbst_ln_ne0_ba_akl_q$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche vor_rel_bb_hbst_ln_ne0_ba_akl_q$Baumartengruppe <- factor(vor_rel_bb_hbst_ln_ne0_ba_akl_q$Baumartengruppe, levels = vor_rel_bb_hbst_ln_ne0_ba_akl_q %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorrat)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### vor_reell_bb_ba_akl_kqm ```{r} vor_reell_bb_ba_akl_kqm <- vorrat_ba$vor_reell_bb_ba_akl_kqm %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) #%>% # vor_reell_bb_ba_akl_kqm$Altersklasse <- factor(vor_reell_bb_ba_akl_kqm$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche vor_reell_bb_ba_akl_kqm$Baumartengruppe <- factor(vor_reell_bb_ba_akl_kqm$Baumartengruppe, levels = vor_reell_bb_ba_akl_kqm %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorrat)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### vor_reell_bb_eigentum_ba_kqm ```{r} vor_reell_bb_eigentum_ba_kqm <- vorrat_ba$vor_reell_bb_eigentum_ba_kqm %>% pivot_longer(-c(`Eigentumsart`,`Einheit`), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) %>% # Eigentumsart als Factor mit der benutzerdefinierten Reihenfolge setzen mutate(Eigentumsart = factor(Eigentumsart, levels = eigentuemsart_order)) %>% # Baumartengruppe nach Vorrat sortieren und als Factor setzen group_by(Eigentumsart) %>% mutate(Baumartengruppe = factor(Baumartengruppe, levels = Baumartengruppe[order(Vorrat, decreasing = TRUE)])) %>% ungroup() ``` ##### vor_reell_bb_hbst_eiggr_ba_qm_h ```{r} vor_reell_bb_hbst_eiggr_ba_qm_h <- vorrat_ba$vor_reell_bb_hbst_eiggr_ba_qm_h %>% pivot_longer(-c(`Eigentumsart`,`Einheit`), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) %>% # Eigentumsart als Factor mit der benutzerdefinierten Reihenfolge setzen mutate(Eigentumsart = factor(Eigentumsart, levels = eigentuemsart_order)) %>% # Baumartengruppe nach Vorrat sortieren und als Factor setzen group_by(Eigentumsart) %>% mutate(Baumartengruppe = factor(Baumartengruppe, levels = Baumartengruppe[order(Vorrat, decreasing = TRUE)])) %>% ungroup() ``` ##### vor_reell_bb_eiggr_ba_qm_h ```{r} vor_reell_bb_eiggr_ba_qm_h <- vorrat_ba$vor_reell_bb_eiggr_ba_qm_h %>% pivot_longer(-c(`Eigentumsart`,`Einheit`), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) %>% # Eigentumsart als Factor mit der benutzerdefinierten Reihenfolge setzen mutate(Eigentumsart = factor(Eigentumsart, levels = eigentuemsart_order)) %>% # Baumartengruppe nach Vorrat sortieren und als Factor setzen group_by(Eigentumsart) %>% mutate(Baumartengruppe = factor(Baumartengruppe, levels = Baumartengruppe[order(Vorrat, decreasing = TRUE)])) %>% ungroup() ``` #### Veränderung Vorrat Baumarten und Altersklassen - reell ```{r} vervor_reell_bb_hbst_eiggr_baha <- ver_vorrat_ba$vervor_reell_bb_hbst_eiggr_baha %>% pivot_longer(-c(`Eigentumsart`,`Einheit`), names_to = "Baumartengruppe", values_to = "Vorratsänderung") %>% replace_na(list(Veränderung = 0)) ``` ##### ver_vor_reell_bb_ba_akl_qm_ha ```{r} ver_vor_reell_bb_ba_akl_qm_ha <- ver_vorrat_ba$ver_vor_reell_bb_ba_akl_qm_ha %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorratsänderung") %>% replace_na(list(Vorratsänderung = 0)) #%>% # ver_vor_reell_bb_ba_akl_qm_ha$Altersklasse <- factor(ver_vor_reell_bb_ba_akl_qm_ha$Altersklasse, levels =c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche ver_vor_reell_bb_ba_akl_qm_ha$Baumartengruppe <- factor(ver_vor_reell_bb_ba_akl_qm_ha$Baumartengruppe, levels = ver_vor_reell_bb_ba_akl_qm_ha %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorratsänderung)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### ver_vor_reell_bb_ba_akl_kqm ```{r} ver_vor_reell_bb_ba_akl_kqm <- ver_vorrat_ba$ver_vor_reell_bb_ba_akl_kqm %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorratsänderung") %>% replace_na(list(Vorratsänderung = 0)) #%>% # ver_vor_reell_bb_ba_akl_kqm$Altersklasse <- factor(ver_vor_reell_bb_ba_akl_kqm$Altersklasse, levels =c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche ver_vor_reell_bb_ba_akl_kqm$Baumartengruppe <- factor(ver_vor_reell_bb_ba_akl_kqm$Baumartengruppe, levels = ver_vor_reell_bb_ba_akl_kqm %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorratsänderung)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` ##### Vorratsänderung Land, BA ```{r} vor_ver_vor <- vor$vor_land_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) %>% inner_join( ver_vor$ver_vor_land_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Veränderungen") %>% replace_na(list(Veränderungen = 0)), by = c("Land", "Baumartengruppe", "Einheit") ) ``` ##### Veränderung Vorrat Baumarten und Altersklassen - rechnerischer Reinbestand ```{r} ver_vor_bb_bag_ak_ha <- ver_vor$ver_vor_bb_bag_ak_ha %>% pivot_longer(c(`1 - 20 Jahre`:`alle Baumaltersklassen`), names_to = "Altersklasse", values_to = "Vorratsänderung") %>% replace_na(list(Vorratsänderung = 0)) # ver_vor_bb_bag_ak_ha$Altersklasse <- factor(ver_vor_bb_bag_ak_ha$Altersklasse, levels = c("1 - 20 Jahre", "21 - 40 Jahre", "41 - 60 Jahre", "61 - 80 Jahre", "81 - 100 Jahre", "101 - 120 Jahre", "121 - 140 Jahre", "141 - 160 Jahre", "> 160 Jahre", "Angabe fehlt", "alle Baumaltersklassen"), labels = c("I\n1 - 20 Jahre", "II\n21 - 40 Jahre", "III\n41 - 60 Jahre", "IV\n61 - 80 Jahre", "V\n81 - 100 Jahre", "VI\n101 - 120 Jahre", "VII\n121 - 140 Jahre", "VIII\n141 - 160 Jahre", "IX\n> 160 Jahre","Lücke/Blöße", "alle Baumaltersklassen")) #Setze die Baumartengruppe als Faktor und ordne die Levels nach Fläche ver_vor_bb_bag_ak_ha$Baumartengruppe <- factor(ver_vor_bb_bag_ak_ha$Baumartengruppe, levels = ver_vor_bb_bag_ak_ha %>% filter(Altersklasse == "alle Baumaltersklassen") %>% arrange(desc(Vorratsänderung)) %>% distinct(Baumartengruppe) %>% # Stellt sicher, dass keine doppelten Baumartengruppen vorhanden sind pull(Baumartengruppe)) ``` #### Vorrat Baumarten und Altersklassen <!--TODO: irgendwie passen die Daten nicht --> ```{r} # TODO: Daten für 2022 ... bb_vor_bhd_akl_22_long <- vor$bb_vor_bhd_akl_22 %>% filter(Baumart == "all") %>% select(-Einheit, -Baumart, -'alle Baumaltersklassen') %>% filter(Brusthöhendurchmesser != "alle BHD-Stufen") %>% pivot_longer( cols = `1 - 20 Jahre`:`> 160 Jahre`, # Angepasst an deine tatsächlichen Spaltennamen names_to = "Altersklasse", values_to = "Volumen" ) %>% mutate(Volumen = replace_na(Volumen, 0)) #bb_vor_bhd_akl_22_long ``` ## Zuwachs ```{r} zuw_sheet_names <- excel_sheets("../data/zuwachs.xlsx") zuw <- lapply(zuw_sheet_names, function(sheet) { read_excel("../data/zuwachs.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(zuw) <- zuw_sheet_names ``` ### zuw_eig_bag_ha_a ```{r} zuw_eig_bag_ha_a <- zuw$zuw_eig_bag_ha_a %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Zuwachs") %>% replace_na(list(Zuwachs = 0)) ``` ### Zuwachs Länder-Baumartengruppe-m³/ha*a ```{r} zuw_land_bagr_qm_ha_a <- zuw$zuw_land_bagr_qm_ha_a %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Zuwachs") %>% replace_na(list(Zuwachs = 0)) ``` ## Abgang/Nutzung ```{r} abgang_nutz_sheet_names <- excel_sheets("../data/abgang_nutzung.xlsx") abgang_nutz <- lapply(abgang_nutz_sheet_names, function(sheet) { read_excel("../data/abgang_nutzung.xlsx", sheet = sheet, skip = 5, na = "NaN") }) names(abgang_nutz) <- abgang_nutz_sheet_names ``` ### nutz_eig_bag_ha_a ```{r} nutz_eig_bag_ha_a <- abgang_nutz$nutz_eig_bag_ha_a %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Nutzung") %>% replace_na(list(Nutzung = 0)) ``` ### Abgang ideell ```{r} ausg_best_land_bagr_22 <- abgang_nutz$ausg_best_land_bagr_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Vorratausgeschieden") # war ausgesbest ``` ### Abgang real ```{r} ausg_bestreell_land_bagr_22 <- abgang_nutz$ausg_bestreell_land_bagr_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Vorratausgeschieden") ``` ### Abgangsgrund ```{r} abgangsgrund <- abgang_nutz$abgangsgrund_bb_bagr_22 %>% pivot_longer(cols = -c(Abgangsgrund, Einheit), names_to = "Ba_Gruppe", values_to = "Vorrat") %>% mutate(Vorrat = replace_na(Vorrat, 0)) # Ersetzt NA in der Spalte Vorrat durch 0 ``` ### abgang_bb_grund_bagr_kqm ```{r} abgang_bb_grund_bagr_kqm <- abgang_nutz$abgang_bb_grund_bagr_kqm %>% pivot_longer(cols = -c(Abgangsgrund, Einheit), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) abgang_bb_grund_bagr_kqm <- abgang_bb_grund_bagr_kqm %>% group_by(Baumartengruppe) %>% # Gruppiere nach Baumartengruppe mutate( Gesamt_vorrat_baumart = sum(Vorrat[Abgangsgrund == "alle Abgangsgründe"], na.rm = TRUE), # Summe aller Abgangsgründe für diese Baumartengruppe Anteil = (Vorrat / Gesamt_vorrat_baumart) * 100 # Berechne den Anteil pro Abgangsgrund ) %>% ungroup() %>% select(-Gesamt_vorrat_baumart) # Entferne die temporäre Spalte, wenn sie nicht mehr benötigt wird ``` ### abgang_bb_hbst_grund_bagr_kqm ```{r} abgang_bb_hbst_grund_bagr_kqm <- abgang_nutz$abgang_bb_hbst_grund_bagr_kqm %>% pivot_longer(cols = -c(Abgangsgrund, Einheit), names_to = "Baumartengruppe", values_to = "Vorrat") %>% replace_na(list(Vorrat = 0)) ``` ### Nutzung ```{r} nutz_land_qm_ha_ideell <- abgang_nutz$nutz_land_qm_ha_ideell %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Nutzung") %>% replace_na(list(Nutzung = 0)) ``` ## Struktur ### Waldaufbau ```{r} stuktbeim_sheet_names <- excel_sheets("../data/strukt_beim_besttyp.xlsx") struktbeim <- lapply(stuktbeim_sheet_names, function(sheet) { read_excel("../data/strukt_beim_besttyp.xlsx", sheet = sheet, skip = 5, na = "NaN") }) names(struktbeim) <- stuktbeim_sheet_names ``` ### Waldaufbauveränderung ```{r} ver_stuktbeim_sheet_names <- excel_sheets("../data/ver_strukt_beim_besttyp.xlsx") ver_struktbeim <- lapply(ver_stuktbeim_sheet_names, function(sheet) { read_excel("../data/ver_strukt_beim_besttyp.xlsx", sheet = sheet, skip = 5, na = "NaN") }) names(ver_struktbeim) <- ver_stuktbeim_sheet_names ``` #### ver_bestyp_eig_bb_ha ```{r} ver_bestyp_eig_bb_ha <- ver_struktbeim$ver_bestyp_eig_bb_ha %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Bestockungstyp", values_to = "Waldflächenänderung") %>% replace_na(list(Waldflächenänderung = 0)) ``` #### bestyp_eig_bb_ha ```{r} bestyp_eig_bb_ha <- struktbeim$bestyp_eig_bb_ha %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Bestockungstyp", values_to = "Waldfläche") %>% replace_na(list(Waldfläche = 0)) ``` #### Land-Bestockungsaufbau ha-proz ```{r} # Ergebnistabellen zusammenführen und neue Datenzeile "mehrschichtig" aus Summe hinzufügen land_bestaufbau <- struktbeim$land_bestaufbau_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Fläche") %>% inner_join( struktbeim$land_bestaufbau_proz %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Anteil"), by = c("Land", "Bestockungsaufbau")) %>% filter(Bestockungsaufbau %in% c("zweischichtig", "mehrschichtig oder plenterartig")) %>% group_by(Land, Einheit.x, Einheit.y) %>% summarise( Bestockungsaufbau = "mehrschichtig", Fläche = sum(Fläche), Anteil = sum(Anteil), .groups = "drop" ) %>% bind_rows(struktbeim$land_bestaufbau_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Fläche") %>% inner_join( struktbeim$land_bestaufbau_proz %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Anteil"), by = c("Land", "Bestockungsaufbau")) ) ``` #### Waldtyp-Bestockungsaufbau ha-proz ```{r} waldtyp_bestaufbau_bb_ha_proz_ver <- struktbeim$waldtyp_bestaufbau_bb_ha %>% pivot_longer(cols = -c("Laub-/Nadel-Waldtyp", Einheit), names_to = "Bestockungsaufbau", values_to = "Fläche") %>% inner_join( struktbeim$waldtyp_bestaufbau_bb_proz %>% pivot_longer(cols = -c("Laub-/Nadel-Waldtyp", Einheit), names_to = "Bestockungsaufbau", values_to = "Anteil"), by = c("Laub-/Nadel-Waldtyp","Bestockungsaufbau")) %>% inner_join(ver_struktbeim$ver_waldtyp_bestaufbau_bb_ha %>% pivot_longer(cols = -c("Laub-/Nadel-Waldtyp", Einheit), names_to = "Bestockungsaufbau", values_to = "Veränderung"), by = c("Laub-/Nadel-Waldtyp","Bestockungsaufbau")) ``` #### ver-Land-Bestockungsaufbau ha-proz ```{r} ver_land_bestaufbau_ha <- ver_struktbeim$ver_land_bestaufbau_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Fläche") %>% filter(Bestockungsaufbau %in% c("zweischichtig", "mehrschichtig oder plenterartig")) %>% group_by(Land, Einheit) %>% summarise( Bestockungsaufbau = "mehrschichtig", Fläche = sum(Fläche), .groups = "drop" ) %>% bind_rows(ver_struktbeim$ver_land_bestaufbau_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Bestockungsaufbau", values_to = "Fläche") ) ``` ### Verjüngung ```{r imp_strukt, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen strukt_sheet_names <- excel_sheets("../data/struktur_verj.xlsx") struktjung <- lapply(strukt_sheet_names, function(sheet) { read_excel("../data/struktur_verj.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(struktjung) <- strukt_sheet_names ``` #### jung_bb_eig_nba_hb ```{r} jung_bb_eig_nba_hb <- struktjung$jung_bb_eig_nba_hb %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Anzahl") %>% mutate(Anzahl = replace_na(Anzahl, 0)) %>% group_by(Eigentumsart) %>% mutate(Gesamtanzahl = Anzahl[Baumartengruppe == "alle Baumarten"]) %>% ungroup() %>% mutate(Anteil = round((Anzahl / Gesamtanzahl) * 100, 2)) ``` #### Jungbestockungsfläche ```{r} jungbestfl <- struktjung$verj_ha %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Jungbestockung", values_to = "Fläche") %>% replace_na(list(Fläche = 0)) jungbestfl ``` #### Jungbestockungsanteil ```{r} # Anteil der Fläche an der Gesamtfläche Wald+Nichtwald [%] nach Land und Bestockungsschicht der Jungbestockung jungbestant <- struktjung$verj_anteil %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Jungbestockung", values_to = "Landesanteil") %>% replace_na(list(Anteil = 0)) jungbestant ``` #### Jungbestandsfläche join Waldfläche und Landesflächenanteil ```{r} jungbestflant <- jungbestfl %>% inner_join(waldfl_spez_long, by = "Land", suffix = c("_jungfl", "_waldfl")) %>% filter(!Kategorie %in% c("Blöße", "Nichtholzboden")) %>% mutate(Waldflächenanteil = round((Fläche_jungfl / Fläche_waldfl) * 100, 2)) %>% inner_join(jungbestant, by = c("Land", "Jungbestockung")) %>% select(Land, Jungbestockung, Fläche_jungfl, Kategorie, Fläche_waldfl, Waldflächenanteil, Landesanteil) ``` ```{r bb_jungbest_22, include=FALSE} # Daten vorbereiten # Baumartenanteile Jungbestockung Gesamtwald! jungbest_ba_22_long <- struktjung$bb_jungbest_art_22 %>% pivot_longer(cols = -c(Einheit, Verjüngungsart), names_to = "Baumartengruppe", values_to = "Waldfläche") %>% replace_na(list(Waldfläche = 0)) ``` #### Verjüngungspflanzen pro Hektar ```{r} jung_ba_22 <- struktjung$jung_ba_22 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Anzahl") ``` #### Verjüngungskreis - Verbissprozent Baumarten ```{r} nproz_verb_ba_bb <- struktjung$jung_nproz_verb_ba_bb %>% pivot_longer(cols = -c(Baumartengruppe,Einheit, "mit oder ohne Verbiss"), names_to = "Verbissart", values_to = "Verbissprozent") ``` #### Verjüngungskreis - Verbissprozent Eigentum ```{r} jung_bb_eig_proz <- struktjung$jung_bb_eig_proz %>% pivot_longer(cols = -c(Eigentumsart,Einheit, "mit oder ohne Verbiss"), names_to = "Verbissart", values_to = "Verbissprozent") ``` #### Verjüngungskreis - nBA pro Hektar ```{r} jung_nha_verb_ba_bb <- struktjung$jung_nha_verb_ba_bb %>% pivot_longer(cols = -c(Baumartengruppe,Einheit, "mit oder ohne Verbiss"), names_to = "Verbissart", values_to = "nBA") ``` #### Veränderung Jung ```{r} verjung_sheet_names <- excel_sheets("../data/ver_jung.xlsx") verjung <- lapply(verjung_sheet_names, function(sheet) { read_excel("../data/ver_jung.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(verjung) <- verjung_sheet_names ``` ##### Veränderung Jungbestockung ```{r} ver_waldflindex_jung_bestschicht <- verjung$ver_waldflindex_jung_bestschich %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Jungbestockung", values_to = "Indexänderungen") %>% replace_na(list(Flächenänderungen = 0)) ver_waldflindex_jung_bestschicht ``` ```{r} ver_jungbestfl <- verjung$ver_waldfl_jung_bestschicht %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Jungbestockung", values_to = "Flächenänderungen") %>% replace_na(list(Flächenänderungen = 0)) %>% inner_join(ver_waldflindex_jung_bestschicht, by = c("Land", "Jungbestockung"), suffix = c("_ver", "_index")) %>% mutate(Veränderungsanteil = Indexänderungen - 100) ver_jungbestfl ``` ```{r bb_ver_jungbest_22, include=FALSE} # Daten vorbereiten # Veränderung Baumartenanteile Jungbestockung Gesamtwald! ver_jungbest_ba_22_long <- verjung$bb_ver_jungbest_art_22 %>% filter(Verjüngungsart == "alle Verjüngungsarten") %>% pivot_longer(cols = -c(Einheit, Verjüngungsart, "alle Baumarten"), names_to = "Baumartengruppe", values_to = "Waldfläche") %>% replace_na(list(Waldfläche = 0)) ``` ## Totholz ### Struktur Totholz ```{r imp_struktur_tot, include=FALSE} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen tot_sheet_names <- excel_sheets("../data/struktur_tot.xlsx") tot <- lapply(tot_sheet_names, function(sheet) { read_excel("../data/struktur_tot.xlsx", sheet = sheet, skip = 5, na = c("NaN")) }) # Namen der Liste anpassen names(tot) <- tot_sheet_names ``` ### Veränderung Totholz ```{r} ver_tot_sheet_names <- excel_sheets("../data/ver_tot.xlsx") ver_tot <- lapply(ver_tot_sheet_names, function(sheet) { read_excel("../data/ver_tot.xlsx", sheet = sheet, skip = 5, na = c("NaN")) }) # Namen der Liste anpassen names(ver_tot) <- ver_tot_sheet_names ``` #### tot_bb_eig_bag22 ```{r} tot_bb_eig_bag22 <- tot$tot_bb_eig_bag22 %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Totholzvorrat") %>% replace_na(list(Totholzvorrat = 0)) %>% mutate(farben = ba_farben[match(Baumartengruppe, names(ba_farben))]) ``` #### ver_tot_bb_eig_bag22 ```{r} ver_tot_bb_eig_bag22 <- ver_tot$ver_tot_bb_eig_bag22 %>% pivot_longer(cols = -c(Eigentumsart, Einheit), names_to = "Baumartengruppe", values_to = "Totholzvorrat") %>% replace_na(list(Totholzvorrat = 0)) %>% mutate(farben = ba_farben[match(Baumartengruppe, names(ba_farben))]) ``` #### Totholz m³/ha*a Land-Baumartengruppe - reell ```{r} tot_land_qm_ha_reell <- tot$tot_land_qm_ha_reell %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Totholz") %>% replace_na(list(Totholz = 0)) %>% mutate(farben = ba_farben[match(Baumartengruppe, names(ba_farben))]) ``` #### Veränderung Totholz m³/ha*a Land-Baumartengruppe - reell ```{r} ver_tot_land_qm_ha_reell <- ver_tot$ver_tot_land_qm_ha_reell %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Veränderungen") ``` #### Veränderung Waldfläche mit Totholz Index BWI2012=100 Land-Baumartengruppe - reell ```{r} ver_tot_index_2012_2022 <- ver_tot$ver_tot_index_waldfl_2012_2022 %>% pivot_longer(cols = -c(Land, Einheit), names_to = "Baumartengruppe", values_to = "Indexänderungen") ``` ### Naturnähe, Stammschaden und öko. Baummerkmale {.hidden .unnumbered .unlisted} ```{r imp_naturnaehe, include=FALSE} # # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # # Namen der Blätter automatisch auslesen # naturnaehe_sheet_names <- excel_sheets("../struktur_naturnaehe_schad.xlsx") # naturnaehe <- lapply(naturnaehe_sheet_names, function(sheet) { # read_excel("../struktur_naturnaehe_schad.xlsx", sheet = sheet, skip = 5, na = "NaN") # }) # # Namen der Liste anpassen # names(naturnaehe) <- naturnaehe_sheet_names ``` ### Zeitpläne ```{r} # zeitplan_sheet_names <- excel_sheets("../zeitplanung.xlsx") # zeitplan <- lapply(zeitplan_sheet_names, function(sheet) { # read_excel("../zeitplanung.xlsx", sheet = sheet, skip = 5 # #,na = ""# "NaN" # ) # }) # names(zeitplan) <- zeitplan_sheet_names ``` ## Weham ### weham_data ```{r} # Excel-Datei einlesen und NaN-Werte als "nan" behandeln # Namen der Blätter automatisch auslesen weham_data_sheetnames <- excel_sheets("../data/weham_data.xlsx") weham_data <- lapply(weham_data_sheetnames, function(sheet) { read_excel("../data/weham_data.xlsx", sheet = sheet, skip = 5, na = "NaN") }) # Namen der Liste anpassen names(weham_data) <- weham_data_sheetnames ``` ## Steuerungsdaten ```{r} steuerungsparameter <- weham_data$"Steuerungsparameter" steuerungsparameter ``` ## Durchforstungsmodelle ```{r} # Daten laden durchforstung <- read.csv("../data/Durchforstung.csv", stringsAsFactors = FALSE, sep = ";") #durchforstung str(durchforstung) ``` :::