Skip to content
Snippets Groups Projects
librarys-datimport.qmd 31.4 KiB
Newer Older
::: content-hidden
# librarys Farben und Daten {.hidden .unnumbered .unlisted}

```{r librarys, include=FALSE}
library(readxl)
library(ggplot2)
library(treemapify)
library(treemap)
Wiebke Torsten's avatar
Wiebke Torsten committed
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)
Wiebke Torsten's avatar
Wiebke Torsten committed
#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
Wiebke Torsten's avatar
Wiebke Torsten committed
```{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)
```


```{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"  
)
```

Wiebke Torsten's avatar
Wiebke Torsten committed
# Datenimport 

## von Sachgebietsdatenbank consgdb

Wiebke Torsten's avatar
Wiebke Torsten committed
```{r}
Wiebke Torsten's avatar
Wiebke Torsten committed
# 
# 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")
# 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")

```{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
```



##### 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
```

### 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)) #%>%
  # inner_join(
  #   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)),
  #   by = c("Baumartengruppe", "Altersklasse")
  #   )
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"))
```

### 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))
```

Wiebke Torsten's avatar
Wiebke Torsten committed
### Vorrat 
Wiebke Torsten's avatar
Wiebke Torsten committed
# 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
```

#### 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
```
##### 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")

```

##### vor_reell_bb_allba_qm_ha, 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
```

```{r}

```
Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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
```

```{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")
)
```

### 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
```

Wiebke Torsten's avatar
Wiebke Torsten committed
## 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
```

### 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))
Wiebke Torsten's avatar
Wiebke Torsten committed
## 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
```

### Abgang

```{r}
ausgesbest <- abgang_nutz$ausg_best_land_bagr_22 %>%
  pivot_longer(cols = -c(Land, Einheit),
               names_to = "Ba_Gruppe",
               values_to = "Abgang")
ausgesbest
```

Wiebke Torsten's avatar
Wiebke Torsten committed
### 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

```

Wiebke Torsten's avatar
Wiebke Torsten committed
### 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))

```

Wiebke Torsten's avatar
Wiebke Torsten committed
## 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
```

Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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
Wiebke Torsten's avatar
Wiebke Torsten committed

```{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"))
Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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
Wiebke Torsten's avatar
Wiebke Torsten committed
# Excel-Datei einlesen und NaN-Werte als "nan" behandeln
# Namen der Blätter automatisch auslesen
Wiebke Torsten's avatar
Wiebke Torsten committed
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")
Wiebke Torsten's avatar
Wiebke Torsten committed
})
# Namen der Liste anpassen
Wiebke Torsten's avatar
Wiebke Torsten committed
names(struktjung) <- strukt_sheet_names
Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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
```

Wiebke Torsten's avatar
Wiebke Torsten committed
#### Jungbestockungsanteil
Wiebke Torsten's avatar
Wiebke Torsten committed

```{r}
# Anteil der Fläche an der Gesamtfläche Wald+Nichtwald [%] nach Land und Bestockungsschicht der Jungbestockung
Wiebke Torsten's avatar
Wiebke Torsten committed
jungbestant <- struktjung$verj_anteil %>% 
  pivot_longer(cols = -c(Land, Einheit),
               names_to = "Jungbestockung",
               values_to = "Landesanteil") %>%
Wiebke Torsten's avatar
Wiebke Torsten committed
  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 %>% 
  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))
```
Wiebke Torsten's avatar
Wiebke Torsten committed

#### Verjüngungspflanzen pro Hektar

```{r}
jung_ba_22 <- struktjung$jung_ba_22 %>%
  pivot_longer(cols = -c(Land, Einheit),
               names_to = "Baumartengruppe",
               values_to = "Anzahl")
```

Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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 - 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")

```


Wiebke Torsten's avatar
Wiebke Torsten committed
#### 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
```

Wiebke Torsten's avatar
Wiebke Torsten committed
##### 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))
```
Wiebke Torsten's avatar
Wiebke Torsten committed

Wiebke Torsten's avatar
Wiebke Torsten committed
## Totholz 

```{r imp_struktur_tot, include=FALSE}
Schmidt Sebastian's avatar
Schmidt Sebastian committed
# Excel-Datei einlesen und NaN-Werte als "nan" behandeln
# Namen der Blätter automatisch auslesen
tot_sheet_names <- excel_sheets("../data/struktur_tot.xlsx")
Schmidt Sebastian's avatar
Schmidt Sebastian committed
tot <- lapply(tot_sheet_names, function(sheet) {
Schmidt Sebastian's avatar
Schmidt Sebastian committed
  read_excel("../data/struktur_tot.xlsx", sheet = sheet, skip = 5, na = c("NaN"))
})
# Namen der Liste anpassen
names(tot) <- tot_sheet_names
Wiebke Torsten's avatar
Wiebke Torsten committed
### 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")
```

### 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
```

#### 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
```
:::