Trockenheit Monitor Bern

Autor:in

Benjamin Stocker, Yousra El-Mejjaouy, Fabian Bernhard, und Sascha Friedli

Veröffentlichungsdatum

19. August 2026

Überblick

Dieser Dürremonitor kombiniert mehrere komplementäre Variablen, um die aktuelle Dürresituation mit Schwerpunkt auf der Region Bern zu beurteilen:

  • Potenzielles kumulatives Wasserdefizit aus lokalen MeteoSchweiz-Stationsdaten und der ERA5-Land-Klimareanalyse.
  • Bodenwasserpotenzial (lokale Messungen, GECO, Universität Bern)
  • Baumwasserdefizit (lokale Messungen, GECO, Universität Bern)
  • Vegetationsgesundheitsindex SwissEO VHI (satellitengestütztes Produkt von swisstopo)

Die Kombination dieser Variablen erlaubt eine Einschätzung des Schweregrads der aktuellen Dürre in Atmosphäre, Boden und Vegetation.

Potenzielles kumulatives Wasserdefizit (PCWD)

HinweisErklärung: Potenzielles kumulatives Wasserdefizit

Das potenzielle kumulative Wasserdefizit (potential cumulative water deficit, PCWD) misst in erster Linie den Zustand der meteorologischen Dürre, bildet aber durch die Bilanz von Wasserzufuhr (Niederschlag) und Wasserverlust (Evapotranspiration) auch die Austrocknung des Bodens gut ab. Es wird als laufende Summe der potenziellen Evapotranspiration (PET) abzüglich des Niederschlags berechnet. Negative Werte (Wasserüberschuss) werden nicht akkumuliert. Steigende PCWD-Werte zeigen eine fortschreitende Austrocknung des Bodens und zunehmenden Trockenstress der Vegetation an. Sinkende PCWD-Werte treten auf, wenn der Niederschlag die PET übersteigt und den Wurzelraum wieder befeuchtet.

Das PCWD wird hier aus täglichen Niederschlagsdaten und der potenziellen Evapotranspiration (PET) mit dem Algorithmus cwd::cwd() berechnet (Beschreibung hier). Die primäre Schätzung verwendet die FAO-Referenz-PET von MeteoSchweiz. Eine temperaturbasierte Thornthwaite-Schätzung liefert den längeren historischen Kontext vor 1981, benutzt monatliche (nicht tägliche) Summen von Niederschlag und PET und ist deshalb weniger “scharf” in der Erfassung von Trockenheit in langen niederschlagsfreien Perioden.

Zur Einordnung der aktuellen meteorologischen Dürre vergleichen wir das potenzielle kumulative Wasserdefizit (PCWD) im Jahr 2026 mit früheren Jahren. Das PCWD wird hier aus Messungen der MeteoSchweiz-Station Bern-Zollikofen abgeleitet.

PCWD der letzten 45 Jahre

MeteoSchweiz stellt für Bern-Zollikofen seit 1981 tägliche Werte der FAO-Referenz-Evapotranspiration (erefaod0) bereit. Diese wurden hier verwendet um das PCWD zu berechnen. Da Niederschlagsereignisse, besonders im Sommer häufig relativ lokal sind (Gewitter), ist das PCWD von Bern-Zollikofen repräsentativ für eine begrenzte Region im Umkreis der Station. Regionale Unterschiede im laufenden PCWD sind in Abbildung 5 dargestellt.

Code
highlight_colours <- c(
  "2026" = "#D73027",
  "2022" = "#4575B4",
  "2018" = "#E69F00",
  "2023" = "#009E73",
  "1947" = "#CC79A7",
  "1976" = "#56B4E9",
  "2003" = "#F0E442"
)

highlight_years <- as.integer(names(highlight_colours))

meteo_pcwd_FAO_METEOSWISS <- meteo_pcwd |>
  filter(!is.na(PCWD_FAO_MeteoSwiss)) |>
  mutate(plot_date = make_date(2000, month(date), day(date)))

p_fao_meteoswiss <- ggplot() +
  geom_line(
    data = meteo_pcwd_FAO_METEOSWISS |>
      filter(!year %in% highlight_years),
    aes(x = plot_date, y = PCWD_FAO_MeteoSwiss, group = year),
    colour = "grey75",
    linewidth = 0.4,
    alpha = 0.5
  ) +
  geom_line(
    data = meteo_pcwd_FAO_METEOSWISS |>
      filter(year %in% highlight_years),
    aes(
      x = plot_date,
      y = PCWD_FAO_MeteoSwiss,
      colour = as.factor(year),
      group = year
    ),
    linewidth = 0.5
  ) +
  geom_text(
    data = meteo_pcwd_FAO_METEOSWISS |>
      filter(year %in% highlight_years) |>
      group_by(year) |>
      filter(PCWD_FAO_MeteoSwiss == max(PCWD_FAO_MeteoSwiss)) |>
      slice_tail(n = 1) |>
      ungroup(),
    aes(
      x = plot_date,
      y = PCWD_FAO_MeteoSwiss,
      colour = as.factor(year),
      label = year
    ),
    vjust = -0.1,
    show.legend = FALSE
  ) +
  geom_text(
    data = meteo_pcwd_FAO_METEOSWISS |>
      filter(!year %in% highlight_years) |>
      group_by(year) |>
      filter(PCWD_FAO_MeteoSwiss == max(PCWD_FAO_MeteoSwiss)) |>
      slice_tail(n = 1) |>
      ungroup() |>
      arrange(desc(PCWD_FAO_MeteoSwiss)) |>
      slice_head(n = 5),
    aes(x = plot_date, y = PCWD_FAO_MeteoSwiss, label = year),
    vjust = -0.1,
    colour = "grey55",
    show.legend = FALSE
  ) +
  scale_colour_manual(
    values = highlight_colours,
    name = "Jahr"
  ) +
  scale_x_date(
    date_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)]
  ) +
  labs(
    x = NULL,
    y = "PCWD (mm)",
    title = "Potenzielles kumulatives Wasserdefizit",
    subtitle = paste0(
      "Bern-Zollikofen, MeteoSchweiz FAO-PET (",
      min(meteo_pcwd_FAO_METEOSWISS$year, na.rm = TRUE),
      "–",
      max(meteo_pcwd_FAO_METEOSWISS$year, na.rm = TRUE),
      ")"
    )
  ) +
  general_plot_theme +
  theme(
    legend.position = "none"
  )

p_fao_meteoswiss
Abbildung 1: Potenzielles kumulatives Wasserdefizit in Bern-Zollikofen auf Basis der FAO-Referenz-Evapotranspiration von MeteoSchweiz.

PCWD der letzten 162 Jahre

Die potenzielle Evapotranspiration kann auch aus der Lufttemperatur nach der Thornthwaite-Methode geschätzt werden. Diese Methode ist weniger zuverlässig als die FAO-Referenz-PET von MeteoSchweiz, erweitert den Vergleich jedoch bis 1864 zurück und bietet damit einen wesentlich längeren historischen Kontext. Zudem werden hier monatliche (nicht tägliche) Summen von Niederschlag und PET benutzt, weshalb PCWD-Schätzungen weniger “scharf” sind in der Erfassung von Trockenheit, besonders in langen niederschlagsfreien Perioden.

Code
meteo_pcwd_THORNTWAITE <- meteo_pcwd |> 
  filter(!is.na(PCWD_THORN)) |>
  mutate(plot_date = make_date(2000, month(date), day(date)))

p_thorn <- ggplot() +
  geom_line(
    data = meteo_pcwd_THORNTWAITE |> filter(!year %in% highlight_years),
    aes(x = plot_date, y = PCWD_THORN, group = year),
    colour = "grey75",
    linewidth = 0.4,
    alpha = 0.5
  ) +
  geom_line(
    data = meteo_pcwd_THORNTWAITE |>  filter(year %in% highlight_years),
    aes(x = plot_date, y = PCWD_THORN, colour = as.factor(year), group = year),
    linewidth = 0.5
  ) +
  # Maxima beschriften (zuerst hervorgehobene Jahre, dann die fünf grössten übrigen Jahre)
  geom_text(data = meteo_pcwd_THORNTWAITE |> filter(year %in% highlight_years) |>
      group_by(year) |>
      # Nur jährliche Maxima behalten:
      filter(PCWD_THORN == max(PCWD_THORN)),
    aes(x = plot_date, y = PCWD_THORN, colour = as.factor(year), label = year),
    vjust = -0.1, show.legend = FALSE
  ) +
  geom_text(data = meteo_pcwd_THORNTWAITE |> filter(!year %in% highlight_years) |>
      group_by(year) |>
      # Nur jährliche Maxima behalten:
      filter(PCWD_THORN == max(PCWD_THORN)) |>
      # Nur Jahre mit den fünf grössten Maxima behalten
       ungroup() |> arrange(desc(PCWD_THORN)) |> slice(1:5),
    aes(x = plot_date, y = PCWD_THORN, label = year),
    vjust = -0.1, show.legend = FALSE, color = "grey75"
  ) + 
  scale_colour_manual(
    values = highlight_colours,
    name = "Jahr"
  ) +
  scale_x_date(
    date_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)]
  ) +
  labs(
    x = NULL,
    y = "PCWD (mm)",
    title = "Potenzielles kumulatives Wasserdefizit",
    subtitle = paste0(
      "Bern-Zollikofen, Thornthwaite-PET (",
      min(meteo_pcwd_THORNTWAITE$year, na.rm = TRUE), "–", max(meteo_pcwd_THORNTWAITE$year, na.rm = TRUE), ")"
    )
  ) +
  general_plot_theme +
  theme(
    legend.position = "none"
  )

p_thorn

# ggsave(
#   here("fig", "pcwd_thorntwaite.pdf"),
#   width = 8,
#   height = 5
# )
Abbildung 2: Potenzielles kumulatives Wasserdefizit in Bern-Zollikofen auf Basis der Thornthwaite-PET unter Verwendung der gesamten verfügbaren Temperaturreihe.

Dieselben Daten (PCWD basierend auf den beiden PET-Methoden, MeteoSchweiz FAO-PET und Thornthwaite-PET) können als Zeitreihe der jährlichen Maxima dargestellt werden, um langfristige Veränderungen in deren Verteilung sichtbar zu machen. Der Vergleich ist mit Vorsicht zu interpretieren, da die beiden Verfahren, wie die Abbildung zeigt, nicht vollständig übereinstimmen. Die rein temperaturbasierte Thornthwaite-Methode und die FAO-Referenz-Evapotranspiration von MeteoSchweiz sind nicht direkt austauschbar. Wo verfügbar, sollte das FAO-basierte Ergebnis bevorzugt werden; Thornthwaite dient hier zur Einordnung der Zeit vor 1981.

Code
meteo_pcwd_FAO_METEOSWISS |>
  group_by(year) |>
  summarise(pcwd = max(PCWD_FAO_MeteoSwiss, na.rm = TRUE), .groups = "drop") |>
  mutate(type = "fao") |>
  bind_rows(
    meteo_pcwd_THORNTWAITE |>
      group_by(year) |>
      summarise(pcwd = max(PCWD_THORN, na.rm = TRUE), .groups = "drop") |>
      mutate(type = "thorn")
  ) |>
  arrange(type == "fao") |>
  ggplot(aes(x = year, y = pcwd, fill = type)) +
  scale_fill_manual(
    name = NULL,
    values = c("fao" = "tomato", "thorn" = "grey"),
    labels = c("fao" = "MeteoSchweiz FAO-PET", "thorn" = "Thornthwaite-PET")
  ) +
  geom_col(position = "identity", alpha = 0.8) +
  labs(
    x = "Jahr",
    y = "PCWD (mm)",
    title = "Jährliches Maximum des potenziellen kumulativen Wasserdefizits",
    subtitle = paste0(
      "Bern-Zollikofen, MeteoSchweiz FAO und Thornthwaite-PET (",
      min(meteo_pcwd_THORNTWAITE$year, na.rm = TRUE),
      "-",
      max(meteo_pcwd_THORNTWAITE$year, na.rm = TRUE),
      ")"
    )
  ) +
  general_plot_theme +
  theme(
    legend.position = "bottom",
    plot.title = element_text(size = 13),
    plot.subtitle = element_text(size = 11)
  )

ggsave(
  here("fig", "pcwd_annual.pdf"),
  width = 10,
  height = 5
)
Abbildung 3: Jährliche Maxima des potentiellen kumulativen Wasserdefizits. Die beiden Schätzungen auf Basis der alternativen PET-Methoden sind übereinander dargestellt.

Zusammenspiel von PCWD und Dampfdruckdefizit

Das Dampfdruckdefizit (VPD) beschreibt den Unterschied zwischen dem Sättigungsdampfdruck und dem tatsächlichen Dampfdruck der Luft. Ein hohes VPD steht für eine starke atmosphärische Nachfrage nach Wasser und begünstigt eine hohe Transpiration, sofern die Vegetation über genügend Wasser verfügt.

Die MeteoSchweiz-Tagesdaten enthalten das tägliche Temperaturmaximum und den mittleren tatsächlichen Dampfdruck, jedoch keine Luftfeuchte zum exakten Zeitpunkt des Temperaturmaximums. Das tägliche maximale VPD wird deshalb angenähert als Sättigungsdampfdruck beim Temperaturmaximum abzüglich des mittleren tatsächlichen Dampfdrucks. Für jedes Jahr werden anschliessend die fünfzehn Tage mit dem höchsten geschätzten maximalen VPD ausgewählt. Die Grafik zeigt das mittlere maximale VPD dieser Tage in Abhängigkeit vom mittleren FAO-basierten PCWD an denselben Tagen.

Code
read_meteoswiss_vpd <- function(file) {
  read_delim(
    file,
    delim = ";",
    col_types = cols(.default = col_character()),
    locale = locale(decimal_mark = "."),
    show_col_types = FALSE
  ) |>
    select(reference_timestamp, tre200dx, pva200d0)
}

meteo_vpd_daily <- bind_rows(
  read_meteoswiss_vpd(here("data-raw", "Bern_hist_daily.csv")),
  read_meteoswiss_vpd(here("data-raw", "Bern_cur_daily.csv"))
) |>
  distinct(reference_timestamp, .keep_all = TRUE) |>
  transmute(
    date = as_date(dmy_hm(reference_timestamp)),
    Tmax = as.numeric(tre200dx),
    vapour_pressure = as.numeric(pva200d0) / 10,
    saturation_vapour_pressure = 0.6108 * exp(
      17.27 * Tmax / (Tmax + 237.3)
    ),
    VPDmax = pmax(
      saturation_vapour_pressure - vapour_pressure,
      0
    )
  )

vpd_pcwd_top15 <- meteo_vpd_daily |>
  inner_join(
    meteo_pcwd |>
      select(date, year, PCWD_FAO_MeteoSwiss),
    by = "date"
  ) |>
  filter(
    is.finite(VPDmax),
    is.finite(PCWD_FAO_MeteoSwiss)
  ) |>
  group_by(year) |>
  slice_max(VPDmax, n = 15, with_ties = FALSE) |>
  summarise(
    mean_VPDmax = mean(VPDmax),
    mean_PCWD = mean(PCWD_FAO_MeteoSwiss),
    n_days = n(),
    .groups = "drop"
  ) |>
  filter(n_days == 15)

vpd_pcwd_stats <- vpd_pcwd_top15 |>
  summarise(
    correlation = cor(mean_PCWD, mean_VPDmax, method = "pearson"),
    VPD_2026 = mean_VPDmax[year == 2026],
    PCWD_2026 = mean_PCWD[year == 2026]
  )

ggplot(vpd_pcwd_top15, aes(x = mean_PCWD, y = mean_VPDmax)) +
  geom_point(
    data = \(x) filter(x, !year %in% highlight_years),
    colour = "grey45",
    alpha = 0.8
  ) +
  geom_point(
    data = \(x) filter(x, year %in% highlight_years),
    aes(colour = as.factor(year)),
  ) +
  geom_text(
    data = \(x) filter(x, year %in% highlight_years),
    aes(label = year, colour = as.factor(year)),
    fontface = "bold",
    hjust = -0.2,
    vjust = 0.5,
    show.legend = FALSE
  ) +
  scale_colour_manual(
    values = highlight_colours,
    guide = "none"
  ) +
  scale_x_continuous(
    expand = expansion(mult = c(0.03, 0.12))
  ) +
  labs(
    title = "Atmosphärische Nachfrage und kumulatives Wasserdefizit",
    subtitle = paste(
      "Mittelwerte der fünfzehn Tage mit dem höchsten geschätzten maximalen VPD",
      "pro Jahr (1981–2026)",
      sep = "\n"
    ),
    x = "Mittleres PCWD an den zehn VPD-extremsten Tagen (mm)",
    y = "Mittleres tägliches maximales VPD (kPa)",
    caption = paste(
      "VPDmax ist aus dem täglichen Temperaturmaximum und dem mittleren Dampfdruck geschätzt.\n",
      "2026 umfasst nur die bisher verfügbaren Tage."
    )
  ) +
  general_plot_theme
Abbildung 4: Mittleres geschätztes tägliches maximales Dampfdruckdefizit und mittleres PCWD an den fünfzehn VPD-extremsten Tagen jedes Jahres in Bern-Zollikofen.

Räumliche Darstellung des aktuellen PCWD

Zur Darstellung der aktuellen räumlichen Verteilung in der Schweiz zeigen wir zusätzlich das PCWD des laufenden Jahres aus der globalen ERA5-Land-Klimareanalyse. Dieses räumliche Produkt verwendet die Priestley-Taylor-PET und ist von den oben gezeigten stationsbasierten Jahresvergleichen getrennt.

Die Karte zeigt die räumliche Verteilung des PCWD in der Schweiz zum angegebenen Datum; die eingebettete Grafik zeigt den regionalen zeitlichen Verlauf.

Code
# Daten für die ERA5-Land-Karte und -Zeitreihe laden
cwd_ERA5Land <- terra::rast(
  here("data/ERA5LandCWD/data_derived_03_daily_pcwd_v2-doy_2026_r-generated_regionCH.nc") # alternativ "regionBern.nc" oder "regionEUROPE.nc"
)
cwd_ERA5Land_df <- dplyr::bind_rows(
  tidync::hyper_tibble(here("data/ERA5LandCWD/data_derived_03_daily_pcwd_v2-doy_2026_r-generated_regionCH.nc")), # alternativ "regionBern.nc" oder "regionEUROPE.nc"
  tidync::hyper_tibble(here("data/ERA5LandCWD/data_derived_03_daily_pcwd_v2-doy_2025_r-generated_regionCH.nc")), # alternativ "regionBern.nc" oder "regionEUROPE.nc"
) |> mutate(time = lubridate::ymd(time)) |> arrange(time)

# ERA5-Land-Karte darstellen
date_to_plot <- "2026-08-04"
raster_to_plot_ERA5LAND_PCWD <- cwd_ERA5Land[[time(cwd_ERA5Land) %in% date_to_plot]]

# Eine dem VHI ähnliche Palette definieren:
# CONTINUOUS PALETTE:
# pal_ERA5LAND_PCWD <- colorNumeric(
#   #palette = "viridis",
#   palette = rev(vhi_cols),
#   domain = values(raster_to_plot_ERA5LAND_PCWD),
#   na.color = "transparent"
# )
# Diskretisierte Palette:
pal_ERA5LAND_PCWD <- colorBin(
  palette = rev(vhi_cols),
  domain = values(raster_to_plot_ERA5LAND_PCWD),
  bins = 15,
  na.color = "transparent"
)

# Zeitreihe des regionalen Mittels vorbereiten (wird in die Karte eingebettet)
cwd_ERA5Land_df_mean <- cwd_ERA5Land_df |> 
  group_by(time) |> summarise(pcwd_mm = mean(pcwd_mm)) |> 
  slice_head(n = -1) # Letzte Zeile entfernen, die offenbar auf pcwd_mm = 0 gesetzt ist

plt_ERA5Land_temp <- ggplot(cwd_ERA5Land_df_mean, aes(x = time, y=pcwd_mm)) +
  geom_line() + 
  theme_bw() + 
  labs(x=NULL, y= "Regionales PCWD-Mittel (mm)") +
  geom_vline(xintercept = ymd(date_to_plot), color = "red") +
  scale_x_date(NULL, date_breaks = "2 month", date_minor_breaks = "1 month", labels = \(x) month_labels_de[lubridate::month(x)]) +
  geom_text(data = \(df) slice(df, 1),  # Beschriftung nur einmal erzeugen
            x = ymd(date_to_plot), y = Inf, 
            label = "Karten-\ndatum", color = "red", vjust=1.2, hjust = -0.5, angle = 270) +
  general_plot_theme

# Grafik als PNG rendern und für die Einbettung in die Karte als Daten-URI kodieren
tmp_png <- tempfile(fileext = ".png")
ggsave(filename = tmp_png, plot = plt_ERA5Land_temp + labs(y=NULL),
       width = 600, height = 220, units = "px", dpi = 150)
img_uri <- base64enc::dataURI(file = tmp_png, mime = "image/png")

# Leaflet-Karte erzeugen
leaflet() |>
  addMapPane("basemap", zIndex = 1) |> # Pane ermöglicht eine bessere Kontrolle der Ebenenreihenfolge
  addProviderTiles(providers$SwissFederalGeoportal.NationalMapGrey, group = "swisstopo Topo",       options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addProviderTiles(providers$SwissFederalGeoportal.SWISSIMAGE,      group = "swisstopo SWISSIMAGE", options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addProviderTiles(providers$Stadia.StamenTonerLite,                group = "Stamen Graustufen",    options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addLayersControl(
    baseGroups = c("swisstopo Topo", "swisstopo SWISSIMAGE", "Stamen Graustufen", "Kein Hintergrund"),
    overlayGroups = c(sprintf("ERA5-Land PCWD (%s)", date_to_plot)),
    position = "topleft",
    options = layersControlOptions(collapsed = FALSE)
  ) |>
  # Eingebettete Grafik hinzufügen:
  addControl(
    position = "topleft",
    html = paste0("<style>
                  .leaflet-control-layers { width:220px !important; box-sizing:border-box; }
                  </style>", 
                  sprintf(
                    "<div style='width:%dpx;background:rgba(255,255,255,0.95);border-radius:4px;'><strong>Regionales PCWD-Mittel (mm)</strong><br/><img src='%s' style='width:100%%;height:auto;display:block;'/></div>",
      220-16, img_uri)) # 220px - 2*8px padding
  ) |>
  # Hauptraster hinzufügen:
  addRasterImage(
    raster_to_plot_ERA5LAND_PCWD,
    colors = pal_ERA5LAND_PCWD,
    opacity = 0.75,
    group = sprintf("ERA5-Land PCWD (%s)", date_to_plot),
    attribution = paste(
      "\n&copy; Informationen des Copernicus Climate Change Service (2019). Muñoz Sabater, J. (2019): Stündliche ERA5-Land-Daten von 1950 bis heute. Copernicus Climate Change Service (C3S), Climate Data Store (CDS). DOI: 10.24381/cds.e2161bac (abgerufen am 16. Juli 2026). Erstellt unter Verwendung veränderter Informationen des Copernicus Climate Change Service <2019>. Weder die Europäische Kommission noch das ECMWF sind für die Verwendung der enthaltenen Copernicus-Informationen oder -Daten verantwortlich."
    )
  ) |>
  addLegend(
    position = "topright",
    pal = pal_ERA5LAND_PCWD, 
    values = values(raster_to_plot_ERA5LAND_PCWD), 
    opacity = 1,
    title = "PCWD (mm)"
  )
Abbildung 5: Potenzielles kumulatives Wasserdefizit in Mitteleuropa am 2026-08-04 aus ERA5-Land-Reanalysedaten (mit Priestley-Taylor-PET).
WarnungBefund

Die Trockenheit, gemessen am potentiellen kumulativen Wasserdefizit, übersteigt die bisherigen Rekorde der vergangenen 45 Jahren um ein Vielfaches. Konkret: das PCWD von 2026 (17. August) übersteigt den bisherigen Rekord von 2023 um 2.3 Standard-Abweichungen der vorhergegangenen jährlichen Werte. Die rapide Zunahme des PCWD in den Sommermonaten seit mitte Juni sticht besonders heraus. Diese meteorologischen Bedingungen setzt die Vegetation enorm unter Druck, da die daraus resultierenden trockenen Böden mit der heissesten Phase im Jahr zusammenfallen. Das Zusammenspiel von trockenen Böden, heissen Lufttemperaturen, und dem daraus resultierenden Wasserdampfdruckdefizit (vapour pressure deficit, VPD) kann für Pflanzen fatal sein und ist physiologisch und physikalisch gesehen der entscheidende Faktor für Wasserstress der Vegetation und Baumschäden. In der Tat sticht das Jahr 2026 auch diesbezüglich heraus. Die Kombination aus trockener Luft und trockenen Böden ist in diesem Jahr weit ausserhalb der Schwankungen der vergangenden 45 Jahre. Wie Bäume darauf reagieren ist unten analysiert.

Die PCWD-Schätzung für die aktuellen Bedingungen basierend auf der Thornthwaite-Methode (361 mm, im Gegensatz zu 468 mm basierend auf MeteoSchweiz FAO-PET) liegt knapp unter dem Rekord von 362 mm aus dem Jahr 1947, wird diesen aber mit Sicherheit dieses Jahr noch übersteigen. Damit wird 2026 sich zur stärksten Trockenheit, gemessen am PCWD, seit Messbeginn entwickeln.

Die regionale Verteilung des aktuellen PCWD in der Schweiz ist relativ heterogen. Entlang des Alpennordhangs und des Alpenhauptkamms sind die Werte deutlich tiefer, was die (allerdings relativ spärlichen) Gewitterniederschläge der letzten Monate in den Gebirgsregionen widerspiegelt. Die höchsten PCWD-Werte treten in mehreren Tieflandregionen auf, darunter Zürich und das Zürcher Unterland, Schaffhausen, Basel, Lausanne und das südliche Tessin. Allerdings sollte auch beachtet werden, dass insbesondere der ERA5-Land-Niederschlag in komplexem Gebirgsgelände weniger zuverlässig ist.

Bodenwasserpotenzial

HinweisErklärung: Bodenwasserpotenzial

Das Bodenwasserpotenzial misst die Bodenfeuchtedürre in Druckeinheiten. Im Gegensatz zum Bodenwassergehalt in Massen- oder Volumeneinheiten beschreibt das Bodenwasserpotenzial die Kraft, welche Pflanzen überwinden müssen, um der Bodenmatrix Wasser zu entziehen. Es bildet daher die physiologischen Auswirkungen des Wasserstresses auf eine Pflanze unmittelbar ab.

Die Bodenwasserpotenziale werden entlang eines bewaldeten Hangs bei Bern gemessen, der sich von einem Standort unmittelbar an der Aare bis zu einer flachen, rund 80 m über dem Fluss gelegenen Position erstreckt. Die drei Positionen (hoch, mittel und tief in den folgenden Grafiken) bezeichnen die Höhe über der Aare als nächstgelegenem Vorfluter.

Die Messkampagne begann 2025 und wird von der Burgergemeinde Bern sowie von Dr. Roman Zweifel (WSL, Birmensdorf) im Rahmen des UPSCALE-Projekts unterstützt.

Code
df_SWP_plot <- df_SWP |>
  mutate(
    year = factor(
      lubridate::year(date),
      levels = c(2025, 2026)
    ),

    # 2025 und 2026 auf dasselbe Referenzjahr abbilden,
    # damit die saisonalen Verläufe direkt verglichen werden können
    plot_date = as.Date(
      sprintf(
        "2000-%02d-%02d",
        lubridate::month(date),
        lubridate::day(date)
      )
    ),

    depth = factor(
      series_height,
      levels = c(-0.1, -0.4, -0.6, -1),
      labels = c("10 cm", "40 cm", "60 cm", "100 cm")
    ),

    # Gewünschte Reihenfolge der Teilgrafiken beibehalten
    plot = factor(
      tree_name,
      levels = c("P3", "P2", "P1", "G1"), labels = c("Hoch","Mittel","Tief", "G1")
    )
  ) |>
  filter(
    year %in% c("2025", "2026"),
    plot %in% c("Hoch","Mittel","Tief"),
    !is.na(SWP_mean),
    !is.na(depth)
  )

p1 <- 
  ggplot(
    df_SWP_plot,
    aes(
      x = plot_date,
      y = SWP_mean,
      colour = year,
    )
  ) +
  geom_line(
    linewidth = 0.7,
    alpha = 0.9,
    na.rm = TRUE
  ) +
  facet_grid(
    cols = vars(plot),
    rows = vars(depth),
    scales = "fixed",
    labeller = labeller(depth = label_both,
                        .default = label_value)
  ) +
  scale_colour_manual(
    values = c(highlight_colours, c("2025" = "darkgrey")),
    drop = FALSE
  ) +
  scale_x_date(
    date_breaks = "2 month",
    date_minor_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)],
    limits = as.Date(c("2000-01-01", "2000-12-31")),
    expand = expansion(mult = c(0.01, 0.01))
  ) +
  scale_y_continuous() + 
  labs(
    title = "Saisonale Dynamik des Bodenwasserpotenzials",
    x = NULL,
    y = "Bodenwasserpotenzial (kPa)",
    colour = NULL,
    caption = paste(
      "Stärker negative Werte zeigen trockenere Bodenbedingungen an."
    )
  ) +
  general_plot_theme +
  theme(
    legend.position = "inside", legend.position.inside = c(0.01,0.01),  legend.justification = c(0,0),
    legend.direction = "vertical", legend.box = "vertical"
  )

p1
Abbildung 6: Saisonale Dynamik des Bodenwasserpotenzials an verschiedenen Landschaftspositionen über der Aare und in unterschiedlichen Bodentiefen in den Jahren 2025 und 2026.
WarnungBefund

Die Bodenaustrocknung setzte 2026 früher ein und hielt länger an als 2025. An der hohen und mittleren Position erreichen die tiefen Sensoren 2026 deutlich stärker negative Werte an als je im Jahr 2025. Im Gegensatz dazu ist der Wald nahe dem Aare-Nivau nicht von der Austrocknung der tieferen Bodenschichten betroffen, da hier der Unterboden bereits im Einflussbereich des Grundwasserspiegels liegt. Während der Boden im Wald auf dem höher gelegenen Plateau quasi komplett ausgetrocknet ist (kein weiterer Abfall des Bodenwasserpotentials in den letzten Wochen in der Tiefe), hat das Bodenwasserpotential in der mittleren Position zuletzt weiter abgenommen und divergiert somit stark von der Entwicklung im Vorjahr.

Diese Analyse zeigt räumlich sehr unterschiedliche Wasserverfügbarkeit im Boden, in Zusammenhang mit der Topographie und der Hydrologie im Boden und Grundwasser. Ergo kann der Wasserstress in tief gelegenenen Lagen dank anhaltend feuchten Bedingungen nahe dem Grundwasserspiegel gepuffert bleiben. Allerdings sind solche Lagen in der Landschaft rar und in der Schweiz häufig landwirtschaftlich genutzt. Wieviel der Waldflächen in der Schweiz vom Grundwasser profitieren kann, ist Sache von aktueller Forschung–auch in unserer Forschungsgruppe.

Baumwasserdefizit

HinweisErklärung: Baumwasserdefizit

Das Baumwasserdefizit misst den tatsächlich von einem Baum erfahrenen Wasserstress. Es wird aus der täglichen Quellung des Stamms während der Nacht und seiner Schrumpfung während des Tages abgeleitet. Eine ungewöhnlich geringe Quellung und starke Schrumpfung führen zu einem hohen Baumwasserdefizit und weisen auf eine geringe Wasserverfügbarkeit im Wurzelraum des betreffenden Baums hin. Gegenüber Messungen des Bodenwasserpotenzials hat das Baumwasserdefizit den Vorteil, dass es den tatsächlich erschlossenen Wurzelraum integriert. Das Bodenwasserpotenzial beschreibt dagegen nur die Bedingungen in der jeweiligen Messtiefe.

Im Rahmen derselben Kampagne wie bei den Bodenwasserpotenzialmessungen (siehe oben) wird auch das Baumwasserdefizit an denselben Positionen gemessen. Die drei Positionen (hoch, mittel und tief in den folgenden Grafiken) bezeichnen die Höhe über der Aare als nächstgelegenem Vorfluter. Die Messungen werden nach zwei Baumarten unterschieden (Weisstanne und Rotbuche), da die Reaktionen auf Wasserstress stark artspezifisch sind.

Code
df_TWD_blog <- df_TWD |>
  mutate(
    # Jahr für die Farbzuordnung
    year = factor(
      lubridate::year(date),
      levels = c(2025, 2026)
    ),

    # Beide Jahre auf derselben saisonalen x-Achse darstellen
    plot_date = as.Date(
      sprintf(
        "2000-%02d-%02d",
        lubridate::month(date),
        lubridate::day(date)
      )
    ),

    # Standortkennung aus dem Baumnamen extrahieren
    site = stringr::str_sub(tree_name, -2, -1),

    # Beschriftung und Reihenfolge der Landschaftspositionen definieren
    plot = factor(
      site,
      levels = c("P3", "P2", "P1", "G1"),
      labels = c("Hoch", "Mittel", "Tief", "G1")
    ),

    # Deutsche Trivialnamen für die Facettenbeschriftung
    species = factor(
      tree_genus_species,
      levels = c(
        "Abies alba",
        "Fagus sylvatica"
      ),
      labels = c(
        "Weisstanne",
        "Rotbuche"
      )
    )
  ) |>
  filter(
    year %in% c("2025", "2026"),
    plot %in% c("Hoch", "Mittel", "Tief"),
    tree_genus_species %in% c(
      "Abies alba",
      "Fagus sylvatica"
    ),
    lubridate::month(date) >= 4,
    lubridate::month(date) <= 10
  ) |>

  # Einzelne Bäume getrennt halten
  group_by(
    plot_date,
    year,
    tree_name,
    plot,
    species
  ) |>
  summarise(
    TWD = mean(TWD_mean, na.rm = TRUE),
    .groups = "drop"
  ) |>
  filter(
    is.finite(TWD)
  )

df_TWD_summary <- df_TWD_blog |>
  group_by(plot_date, year, plot, species) |>
  summarise(
    TWD_q25 = quantile(TWD, 0.25, na.rm = TRUE),
    TWD_q75 = quantile(TWD, 0.75, na.rm = TRUE),
    TWD = median(TWD, na.rm = TRUE),
    .groups = "drop"
  )

p_twd_blog <- ggplot(
  df_TWD_summary,
  aes(
    x = plot_date,
    y = TWD,
    colour = year,
    fill = year,
    group = year
  )
) +
  geom_ribbon(
    aes(ymin = TWD_q25, ymax = TWD_q75),
    colour = NA,
    alpha = 0.18,
    na.rm = TRUE
  ) +
  geom_line(
    linewidth = 0.7,
    na.rm = TRUE
  ) +

  # Landschaftspositionen in Spalten, Arten in Zeilen
  facet_grid(
    cols = vars(plot),
    rows = vars(species),
    scales = "fixed"
  ) +

  scale_colour_manual(
    values = c(
      "2025" = "darkgrey",
      "2026" = highlight_colours[["2026"]]
    ),
    drop = FALSE
  ) +

  scale_fill_manual(
    values = c(
      "2025" = "darkgrey",
      "2026" = highlight_colours[["2026"]]
    ),
    drop = FALSE
  ) +

  scale_x_date(
    limits = as.Date(
      c("2000-04-01", "2000-10-31")
    ),
    date_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)],
    expand = expansion(
      mult = c(0.01, 0.01)
    )
  ) +

  labs(
    title = "Baumwasserdefizit der untersuchten Bäume",
    x = NULL,
    y = "Baumwasserdefizit (\u00b5m)",
    colour = NULL,
    fill = NULL,
    caption = paste(
      "Linien zeigen tägliche Mediane; Bänder den Interquartilsbereich zwischen den Bäumen.",
      "Weisstanne entspricht Abies alba; Rotbuche Fagus sylvatica.\n",
      "Höhere Werte zeigen eine stärkere Entleerung des in den elastischen",
      "Stammgeweben gespeicherten Wassers an."
    )
  ) +

  guides(
    colour = guide_legend(
      order = 1
    ),
    fill = "none"
  ) +

  general_plot_theme +

  theme(
    legend.position = "inside",
    legend.position.inside = c(0.01, 1.0),
    legend.justification = c(0, 1),
    legend.direction = "vertical",
    legend.box = "vertical"
  )


p_twd_blog
Abbildung 7: Saisonale Dynamik des Baumwasserdefizits für Rotbuche und Weisstanne an verschiedenen Landschaftspositionen über der Aare in den Jahren 2025 und 2026.

Verringern sommerliche Regenereignisse das Baumwasserdefizit?

Um kurzfristige Veränderungen des Baumwasserdefizits mit Regenfällen zu vergleichen, wird unten (Abbildung 8) zusätzlich der tägliche Niederschlag an der MeteoSchweiz-Station Bern-Zollikofen dargestellt. Der Stationsniederschlag dient als regionaler Indikator. Insbesondere bei konvektivem Sommerregen können die Mengen am Waldstandort abweichen.

Code
summer_limits_2026 <- c(as.Date(c("2026-06-01")), lubridate::today())

rain_2026 <- meteo_pcwd |>
  filter(date >= summer_limits_2026[1], date <= summer_limits_2026[2]) |>
  select(date, precipitation = P)

twd_rain_2026 <- df_TWD |>
  mutate(
    site = stringr::str_sub(tree_name, -2, -1),
    plot = factor(
      site,
      levels = c("P3", "P2", "P1"),
      labels = c("Hoch", "Mittel", "Tief")
    ),
    species = factor(
      tree_genus_species,
      levels = c("Abies alba", "Fagus sylvatica"),
      labels = c("Weisstanne", "Rotbuche")
    )
  ) |>
  filter(
    date >= summer_limits_2026[1],
    date <= summer_limits_2026[2],
    plot == "Hoch",
    species == "Weisstanne",
    is.finite(TWD_mean)
  ) |>
  group_by(date, plot, species) |>
  summarise(
    TWD = median(TWD_mean, na.rm = TRUE),
    TWD_q25 = quantile(TWD_mean, 0.25, na.rm = TRUE),
    TWD_q75 = quantile(TWD_mean, 0.75, na.rm = TRUE),
    .groups = "drop"
  )

p_rain_2026 <- ggplot(rain_2026, aes(x = date, y = precipitation)) +
  geom_col(width = 0.9, fill = "#4575B4") +
  scale_x_date(
    limits = summer_limits_2026,
    date_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)],
    expand = c(0, 0)
  ) +
  scale_y_reverse(expand = expansion(mult = c(0.05, 0.1))) +
  labs(
    title = "Regenereignisse und Baumwasserdefizit im Sommer 2026",
    subtitle = "Hohe Position, Weisstanne; Niederschlag an der MeteoSchweiz-Station Bern-Zollikofen",
    x = NULL,
    y = "Niederschlag (mm)"
  ) +
  general_plot_theme +
  theme(
    plot.margin = margin(5.5, 5.5, 0, 5.5)
  )

p_twd_rain_2026 <- ggplot(
  twd_rain_2026,
  aes(x = date, y = TWD)
) +
  geom_ribbon(
    aes(ymin = TWD_q25, ymax = TWD_q75),
    fill = "#D73027",
    alpha = 0.18
  ) +
  geom_line(colour = "#D73027", linewidth = 0.65) +
  scale_x_date(
    limits = summer_limits_2026,
    date_breaks = "1 month",
    labels = \(x) month_labels_de[lubridate::month(x)],
    expand = c(0, 0)
  ) +
  labs(
    x = NULL,
    y = "Medianes TWD (µm)",
    caption = "Die Linie zeigt den täglichen Median; das Band den Interquartilsbereich zwischen den Bäumen."
  ) +
  general_plot_theme +
  theme(plot.margin = margin(0, 5.5, 5.5, 5.5))

p_rain_2026 / p_twd_rain_2026 +
  plot_layout(heights = c(1, 3.2))
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_col()`).
Abbildung 8: Täglicher Niederschlag in Bern-Zollikofen und Baumwasserdefizit der Weisstanne an der hohen Position im Sommer 2026.
WarnungBefund: Reaktion auf Niederschlag

Bei der Weisstanne an der hohen Position fallen die wichtigsten Regenperioden Anfang Juni (26,8 mm), um den 30. Juni bis 1. Juli (12,3 mm) und vom 14. bis 16. Juli (14,6 mm) mit deutlichen Rückgängen des medianen TWD zusammen. Die kleinen Ereignisse Ende Juli von nur 1–2 mm gehen mit schwächeren, kurzlebigen Rückgängen einher. Das TWD blieb dann hoch. Im allgemeinen stieg das TWD jeweils kurz nach den Regenereignissen rasch erneut an. Diese Ereignisse führten somit zu einer vorübergehenden Entlastung der Stammwasservorräte, stellten aber die niedrigen TWD-Werte vom Juni nicht wieder her.

Steigt das TWD bei sehr trockenem Unterboden schneller an?

Der folgende explorative Vergleich verknüpft jeden positiven täglichen TWD-Zuwachs mit dem in 60 cm Tiefe (hohe Position) beziehungsweise 100 cm Tiefe (mittlere Position) gemessenen Bodenwasserpotenzial. Der tiefe Sensor an der tiefen Position verblieb bei null und wird daher ausgeschlossen. Die Werte werden in beschreibende Trockenheitsklassen eingeteilt.

Code
deep_swp_daily <- df_SWP |>
  mutate(
    plot = dplyr::recode(tree_name, "P3" = "Hoch", "P2" = "Mittel", "P1" = "Tief")
  ) |>
  filter(
    tree_name %in% c("P3", "P2", "P1"),
    series_height <= -0.6,
    SWP_mean < 0
  ) |>
  group_by(date, plot) |>
  summarise(deep_SWP = mean(SWP_mean, na.rm = TRUE), .groups = "drop")

twd_deep_soil <- df_TWD |>
  mutate(
    plot = dplyr::recode(
      stringr::str_sub(tree_name, -2, -1),
      "P3" = "Hoch", "P2" = "Mittel", "P1" = "Tief"
    )
  ) |>
  filter(
    plot %in% c("Hoch", "Mittel", "Tief"),
    lubridate::year(date) %in% c(2025, 2026),
    lubridate::month(date) %in% 4:10
  ) |>
  group_by(tree_name) |>
  arrange(date, .by_group = TRUE) |>
  mutate(
    day_gap = as.numeric(date - lag(date)),
    TWD_increase = TWD_mean - lag(TWD_mean)
  ) |>
  ungroup() |>
  filter(day_gap == 1, TWD_increase > 0) |>
  inner_join(deep_swp_daily, by = c("date", "plot")) |>
  mutate(
    year = factor(lubridate::year(date)),
    soil_state = factor(
      case_when(
        deep_SWP <= -1000 ~ "Extrem trocken\n(≤ −1000 kPa)",
        deep_SWP <= -100 ~ "Trocken\n(−1000 bis −100 kPa)",
        TRUE ~ "Relativ feucht\n(> −100 kPa)"
      ),
      levels = c(
        "Relativ feucht\n(> −100 kPa)",
        "Trocken\n(−1000 bis −100 kPa)",
        "Extrem trocken\n(≤ −1000 kPa)"
      )
    )
  )

twd_deep_stats <- twd_deep_soil |>
  summarise(
    rho = cor(deep_SWP, TWD_increase, method = "spearman"),
    median_wet = median(TWD_increase[deep_SWP > -100], na.rm = TRUE),
    median_extreme = median(TWD_increase[deep_SWP <= -1000], na.rm = TRUE)
  )

ggplot(twd_deep_soil, aes(x = soil_state, y = TWD_increase, fill = soil_state)) +
  geom_boxplot(
    width = 0.65,
    outlier.alpha = 0.12,
    show.legend = FALSE
  ) +
  scale_fill_manual(values = c("#fee8c8", "#fdbb84", "#e34a33")) +
  coord_cartesian(ylim = c(0, 50)) +
  labs(
    title = "Das TWD steigt bei trockenerem Unterboden schneller an",
    subtitle = "Positive TWD Tageszuwächse, Apr.-Okt. 2025–2026 von April bis Oktober.",
    x = "Klasse des Bodenwasserpotenzials im Unterboden",
    y = "Täglicher TWD-Zuwachs (µm Tag⁻¹)",
    caption = "Die y-Achse ist bei 50 µm Tag⁻¹ abgeschnitten; in die Boxplots gehen alle Beobachtungen ein."
  ) +
  general_plot_theme
Abbildung 9: Positive tägliche Veränderungen des Baumwasserdefizits bei unterschiedlichen Bodenwasserpotenzialen im Unterboden in den Jahren 2025 und 2026.
WarnungBefund: Trockenheit im Unterboden

Positive tägliche TWD-Zuwächse waren bei trockenerem Unterboden jeweils grösser. Dies deutet darauf hin, dass ein eingeschränkter Zugang der Bäume zu tiefem Bodenwasser die erneute Entleerung der Stammwasservorräte nach (relativ beschränkten) Regenereignissen beschleunigt. Mit andern Worten: Solange die Niederschlagsmengen nicht ausreichen, um den Unterboden ausreichend zu befeuchten, entspannt sich der Wasserstress an den Bäumen nicht. Das Regenereignis vom 17.8. war mit ca. 20 mm seit anfangs Juni das grösste. Das hat zu einer kurzzeitigen Enspannung des Wasserstress geführt, wie im TWD-Abfall ersichtlich, und sogar den Unterboden in 100 cm Tiefe befeuchtet(mittlere Hangposition, siehe Abbildung 6). Allerdings blieb der Unterboden absolut gesehen extrem trocken (≤ −1000 kPa) und es muss damit gerechnet werden, dass sich hohe TWD Werte bei weiter ausbleibendem Regen schnell wieder einstellen.

Vegetationsgesundheitsindex (VHI)

HinweisErklärung: Vegetationsgesundheitsindex

Der Vegetationsgesundheitsindex misst die Auswirkungen der Dürre auf die Gesundheit der Vegetation, also auf ihre Begrünung und Aktivität (Transpiration). Der SwissEO Vegetationsgesundheitsindex (VHI) kombiniert aus Sentinel-2 abgeleitete Beobachtungen des normalisierten differenzierten Vegetationsindex (NDVI) mit Daten zur Landoberflächentemperatur (LST), um den Vegetationsstress abzuschätzen. Der Index reicht von 0 bis 100; niedrigere Werte weisen auf eine weniger gesunde Vegetation und eine höhere Wahrscheinlichkeit dürrebedingter Auswirkungen hin. Die LST bildet die Vegetationsaktivität ab, da Transpiration die Oberfläche kühlt. Eine hohe Landoberflächentemperatur kann daher auf geringe Transpirationsraten und Wasserstress hinweisen. Der Vorteil dieses satellitengestützten Index liegt in seiner flächigen Abdeckung. Nachteilig ist das stärkere “Messrauschen”, das Zuverlässigkeit und Interpretierbarkeit einschränkt.

Die folgende Karte zeigt die neuesten verfügbaren VHI-Daten für die Region Bern (2026-08-13 (neuester gültiger verfügbarer Wert)). Der mediane VHI im Untersuchungsgebiet betrug 19; die Werte reichten von 0 bis 100. Dies weist auf einen deutlichen Stress der Vegetation hin. Allerdings ist der Fehler in den Messungen hier besonders hoch und Regionen mit offenbar geringem Stress (z.B. nahe Orvin, siehe Abbildung 10) sind mit Vorsicht zu interpretieren.

Code
pal_vhi <- colorBin(
  palette = vhi_cols,
  domain = terra::values(vhi_rast_wgs84),
  bins = vhi_bins,
  na.color = "transparent",
  right = FALSE
)

raster_groups <- paste0("VHI ", time(vhi_rast_wgs84))

vhi_map <- leaflet() |>
  addMapPane("basemap", zIndex = 1) |> # Pane ermöglicht eine bessere Kontrolle der Ebenenreihenfolge
  addProviderTiles(providers$SwissFederalGeoportal.NationalMapGrey, group = "swisstopo Topo",       options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addProviderTiles(providers$SwissFederalGeoportal.SWISSIMAGE,      group = "swisstopo SWISSIMAGE", options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addProviderTiles(providers$Stadia.StamenTonerLite,                group = "Stamen Graustufen",    options = providerTileOptions(opacity = 1.0, pane = "basemap")) |>
  addLayersControl(
    baseGroups = c("Kein Hintergrund", "swisstopo Topo", "swisstopo SWISSIMAGE", "Stamen Graustufen"),
    overlayGroups = raster_groups,
    position = "topleft",
    options = layersControlOptions(collapsed = FALSE)
  ) 

for (i in seq_along(raster_groups)){
  vhi_map <- vhi_map |>
    addRasterImage(
      vhi_rast_wgs84[[i]],
      colors = pal_vhi,
      opacity = 1.0, # Da die VHI-Karte nur Waldflächen umfasst, kann 1,0 verwendet werden
      group = raster_groups[i],
      attribution = paste(
        "VHI-Ebene: \n&copy; swisstopo, enthält veränderte Copernicus-Sentinel-Daten 2026"
      )
    )
}

vhi_map <- vhi_map |>
  hideGroup(raster_groups[-1]) |>
  showGroup(raster_groups[1]) |>
  addLegend(
    position = "bottomright",
    colors = vhi_cols,
    opacity = 1,
    labels = c(
      "0–9: Extrem gestresst",
      "10–19: Stark gestresst",
      "20–29: Gestresst",
      "30–39: Leicht gestresst",
      "40–49: Normal",
      "50–59: Gut",
      "60–100: Ausgezeichnet"
    ),
    title = "VHI"
  )
vhi_map
Abbildung 10: Neuester swissEO-Vegetationsgesundheitsindex im Raum Bern (Stand: 2026-08-13 (neuester gültiger verfügbarer Wert) ).
WarnungBefund

Die neueste verfügbare Karte weist einen regionalen medianen VHI von 19 und einen Mittelwert von 18,3 auf. Ein typisches Pixel fällt damit in die Klasse «stark gestresst». Niedrige VHI-Werte sind weit verbreitet und stimmen mit den Stations- und Feldindikatoren überein. Die gesamte Spannweite von 0 bis 100 zeigt jedoch auch starke räumliche Unterschiede. Die Wälder am Jurasüdfuss rund um Biel stehen besonders heraus und zeigen grossflächig extrem gestresste Bestände an.

Zusammenfassung der aktuellen Dürresituation

Zusammen zeigen die Indikatoren eine aussergewöhnlich schwere Dürre im Jahr 2026. Bis zum 17. August hatte das FAO-basierte PCWD jedes frühere Jahresmaximum der Reihe 1981–2026 überschritten. Die Kombination aus trockener Luft und ausgetrockneten Böden macht die Bedingungen im Sommer 2026 besonders gravierend für Pflanzen. Bodenwasserpotenzial und TWD weisen insbesondere an der hier gemessenen hohen und mittleren Waldposition auf einen früher einsetzenden und anhaltenderen Stress als 2025 hin. Der satellitenbasierte Vegetation Health Index (VHI) fällt grossflächig in die Klasse “extrem gestresst”.

Sommerliche Regenereignisse führten an der hohen Position zu sichtbaren, aber meist kurzlebigen TWD-Rückgängen. Bei extrem trockenem Unterboden akkumulierte das TWD schneller. Dies deutet darauf hin, dass kleine Regenereignisse die unmittelbare Entleerung der Stammwasservorräte verringerten, ohne den tieferen Wasservorrat vollständig aufzufüllen. Die tiefe Landschaftsposition blieb vergleichsweise gut gepuffert. Insgesamt kennzeichnen die atmosphärischen, bodenbezogenen, baumphysiologischen und satellitengestützten Indikatoren das Jahr 2026 übereinstimmend als extremes Dürrejahr.