hyd1d & hydflood

R-Pakete zur Interpolation von 1d-Wasserspiegellagen mit Pegeldaten und zur Ãœberflutungsdauerberechnung

Arnd Weber, Marcus Hatz, Stephan Rosenzweig

18.01.2023

Wie erhält man Wasserstandsinformationen für einen Punkt oder eine Strecke an einer Bundeswasserstraße zu einem ausgewählten Zeitpunkt?

21.12.2016

Wie aggregiert man diese flächige Wasserstandsinformation über die Zeit zu Überflutungsdauern?

Wie aggregiert man diese flächige Wasserstandsinformation über die Zeit zu Überflutungsdauern?

http://r.bafg.de/shiny/WeberA/07-flood3/

PEGELONLINE

Abfrage der nächstgelegenen Pegel

Wasserstände der angrenzenden Pegel

Lineare Interpolation

FLYS3

Einleitung

Verfügbare Wasserspiegellagen

Verfügbare Wasserspiegellagen

Ausgewählte Wasserspiegellagen

Interpolierte Wasserspiegellagen

Interpolierte Wasserspiegellagen

Interpolierte Wasserspiegellagen

Interpolierte Wasserspiegellagen

Interpolierte Wasserspiegellagen

Vergleich der Wasserspiegellagen

Zusammenfassung

  • FLYS3 interpoliert stationäre Wasserspiegellagen abschnittsweise mit jeweils einem Bezugspegel
  • Die Auswahl des Bezugspegels und dessen relativer Abfluss kann starken Einfluss auf die resultierende Wasserspiegellage haben
  • Ungleichwertige Abflüsse großer Nebengewässer können Differenzen von mehreren Dezimetern zwischen mit FLYS3 abschnittsweise berechneten Wasserspiegellagen verursachen
  • Sprünge, bzw. Diskontinuitäten an Abschnittsgrenzen sind daher unvermeidbar

hyd1d

Einleitung

  • hyd1d ist als R-Paket programmiert und über CRAN unter der GPL2 veröffentlicht
  • hyd1d integriert Paket-eigene Pegeldaten aus der HyDaBa, aktuelle Pegeldaten von PEGELONLINE, und Wasserspiegellagen von FLYS3
  • Pegel- und Wasserspiegeldaten werden so miteinander interpoliert, dass resultierenden Wasserspiegellagen auch über lange Strecken keine Diskontinuitäten aufweisen

Methodik

  1. Bestimmung der relevanten Pegel für den Berechnungsort, bzw. die Berechnungsstrecke
  2. Bestimmung der Wasserstände dieser Pegeln zum gewählten Zeitpunkt
  3. Aufteilung der Berechnungsstrecke in Abschnitte, die von jeweils zwei Pegeln eingerahmt werden
  4. Abschnittsweise Bestimmung, welche FLYS3-Wasserspiegellagen die Wasserspiegellagen an den beiden Pegeln einrahmen
  5. Abschnittsweise, entfernungsabhängige Interpolation zwischen den einrahmenden FLYS3-Wasserspiegellagen

1. Streckenrelevante Pegel

2. Wasserstände

3. Aufteilung der Berechnungsstrecke

4. Einrahmende Wasserspiegellagen

5.1 Gewichtung an den Pegeln

5.2 Gewichtung entlang der Strecke

5.3 Interpolation der Wasserspiegellage

5.4 Interpolationen zusammengefasst

Vergleich der Wasserspiegellagen

Vergleich der Wasserspiegellagen

Vergleich der Wasserspiegellagen

Zusammenfassung

  • hyd1d interpoliert stationäre Wasserspiegellagen von FLYS3 abschnittsweise mit Hilfe der umliegenden Pegel
  • Die Interpolation wird mit allen für den Zeitpunkt und den Gewässerabschnitt verfügbaren Pegeldaten durchgeführt
  • Ungleichwertige Abflüsse großer Nebengewässer werden durch die Pegel abgebildet.
  • Sprünge, bzw. Diskontinuitäten werden durch das abschnittssweise Aufhängen der resultierenden Wasserspiegellage an den Pegeln unmöglich

Das R-Paket

Installation

  • hyd1d ist über CRAN verfügbar. Zur Installation und zum Laden reicht:
install.packages("hyd1d")
library("hyd1d")
  • Zur Installation der aktuellsten Entwicklungsversion von Github sind folgende Befehle nötig:
install.packages("devtools")
library("devtools")
install_github("bafg-bund/hyd1d")

S4-Klasse WaterLevelDataFrame

  • Eine S4-Klasse auf Basis der S3-Klasse data.frame
  • In diesem wird intern die Wasserspiegellage abgelegt
  • 8 weitere Slots beinhalten alle weiteren berechnungs- und darstellungsrelevanten Informationen

S4-Klasse WaterLevelDataFrame

## 'data.frame':    51 obs. of  6 variables:
## Formal class 'WaterLevelDataFrame' [package "hyd1d"] with 9 slots
##   ..@ .Data                   :List of 6
##   ..@ river                   : chr "Elbe"
##   ..@ time                    : POSIXct, format: "2016-12-21"
##   ..@ gauging_stations        :'data.frame': 4 obs. of  27 variables:
##   ..@ gauging_stations_missing: chr 
##   ..@ comment                 : chr "Computed by waterLevel()."
##   ..@ names                   : chr  "station" "station_int" "w" ...
##   ..@ row.names               : chr  "1" "2" "3" ...
##   ..@ .S3Class                : chr "data.frame"

S4-Klasse WaterLevelDataFrame

##   station station_int     w section   weight_x  weight_y
## 1   257.0      257000 55.35       1 0.06557377 0.1833680
## 2   257.1      257100 55.33       1 0.05737705 0.1845542
## 3   257.2      257200 55.31       1 0.04918033 0.1857403
## 4   257.3      257300 55.29       1 0.04098361 0.1869264
## 5   257.4      257400 55.27       1 0.03278689 0.1881126
## 6   257.5      257500 55.25       1 0.02459016 0.1892987

S4-Klasse WaterLevelDataFrame

## 'data.frame':    4 obs. of  27 variables:
##  $ id                : int  13 14 15 16
##  $ gauging_station   : chr  "VOCKERODE" "ROSSLAU" "DESSAU" ...
##  $ uuid              : chr  "ae93f2a5-612e-4514-b5fd-9c8aecdd73c7" "e97116a4-7d30-4671-8ba1-cdce0a153d1d" "1edc5fa4-88af-47f5-95a4-0e77a06fe8b1" ...
##  $ km                : num  246 258 261 275
##  $ km_qps            : num  246 258 261 275
##  $ river             : chr  "ELBE" "ELBE" "ELBE" ...
##  $ longitude         : num  12.4 12.2 12.2 12.1
##  $ latitude          : num  51.9 51.9 51.9 51.9
##  $ mw                : num  2.35 2.11 2.27 2.15
##  $ mw_timespan       : chr  "2000-11-01 - 2010-10-31" "2000-11-01 - 2010-10-31" "2000-11-01 - 2010-10-31" ...
##  $ pnp               : num  55.9 53.8 52.9 50.2
##  $ w                 : num  152 137 165 150
##  $ wl                : num  57.5 55.2 54.6 51.7
##  $ n_wls_below_w_do  : int  NA 3 4 4
##  $ n_wls_above_w_do  : int  NA 27 26 26
##  $ n_wls_below_w_up  : int  3 3 4 NA
##  $ n_wls_above_w_up  : int  27 27 26 NA
##  $ name_wl_below_w_do: chr  NA "0.5MQ" "0.5MQ" ...
##  $ name_wl_above_w_do: chr  NA "a" "0.75MQ" ...
##  $ name_wl_below_w_up: chr  "0.5MQ" "0.5MQ" "a" ...
##  $ name_wl_above_w_up: chr  "a" "0.75MQ" "0.75MQ" ...
##  $ w_wl_below_w_do   : num  NA 55.1 54.2 51.7
##  $ w_wl_above_w_do   : num  NA 55.4 54.8 51.9
##  $ w_wl_below_w_up   : num  57.4 55.1 54.5 NA
##  $ w_wl_above_w_up   : num  57.7 55.7 54.8 NA
##  $ weight_up         : num  0.0481 0.1 0.2654 NA
##  $ weight_do         : num  NA 0.193 0.646 0.173

waterLevel…()-Funktionen

hydflood

Einleitung

  • hydflood ist als R-Paket programmiert und über CRAN unter der GPL2 veröffentlicht
  • hydflood dient der Berechnung von Ãœberflutungsflächen und -dauern, äquivalent zum INFORM-Modul Flut 3.
  • Wasserspiegellagen, die mittels hyd1d berechnet wurden, werden über Querprofilflächen in die Aue extrapoliert und mit digitalen Geländemodellen (DGM’s) verglichen

Datengrundlagen

  • Querprofilspuren aus den SOBEK-Modellen für FLYS3, umgerechnet zu Querprofilflächen (qpf)
  • Wasserspiegellagen von hyd1d
  • Digitale Geländemodelle (dgm)

flood3()-Funktion

  • Berechnung der Wasserspiegellage
  • Ãœbertrag der Wasserspiegellage über das Join-Feld station_int auf die Querprofilflächen (qpf)
  • ufd[qpf > dgm] = ufd[qpf > dgm] + 1
  • gegebenenfalls Wiederholung über eine Sequenz von Zeitschritten

21.12.2016

2002

2016

Vergleich von Ãœberflutungsdauern

  • Es fehlt ein Vergleich zwischen den Ãœberflutungsdauern nach flood3 und einem instationären 2D- oder 3D-Hydraulik-Modell und realen Messdaten

Zusammenfassung

  • hydflood verwendet interpolierte Wasserspiegellagen von hyd1d, um mittels der Funktion flood3() Ãœberflutungsflächen und -dauern zu berechnen
  • Vorteile:
    • wenige, bereits vorhandene Eingangsdatensätze (DGM, Querprofilspuren, Pegeldaten)
    • hohe räumliche und zeitliche Auflösung
    • kachelweise parallelisierbare, schnelle und großflächige Berechnung
  • Nachteil:
    • kein physikalisches Modell, auch Flächen ohne Zufluss werden überflutet

Das R-Paket

Installation

  • hydflood ist über CRAN verfügbar. Zur Installation und zum Laden reicht:
install.packages("hydflood")
library("hydflood")
  • Zur Installation der aktuellsten Entwicklungsversion von Github sind folgende Befehle nötig:
install.packages("devtools")
library("devtools")
install_github("bafg-bund/hydflood")

hydSpatRaster

  • Ein Objekt auf Basis der S4-Klasse SpatRaster
  • Beinhaltet Layer des digitalen Geländemodells (dgm) und der Querprofilflächen (qpf)
  • eigene Datensätze sind verwendbar, ansonsten stehen Paket-eigene Querprofilfächen und downloadbare digitale Geländemodelle (dgm) zur Verfügung
  • für diese automatisierte Erstellung eines SpatRaster müssen nur die Ausdehnung (ext) und das Koordinatensystem (crs) angegeben werden

hydSpatRaster

  • Initialisierung des hydSpatRaster mit Nutzer-eigenen Datensätzen
x <- hydSpatRaster(filename_dem = "data-raw/raster.dem.tif",
                   filename_csa = "data-raw/raster.csa.tif")
  • mit extent(x) und CRS(x) SpatRaster initialisieren und Daten herunterladen
ext <- extent(x)
crs <- CRS(x)
x <- hydSpatRaster(ext = ext, crs = crs)

hydSpatRaster

## S4 class 'SpatRaster' [package "terra"]

flood3()

# Initialisierung von x mit eigenen Datensätzen
x <- hydSpatRaster(filename_dem = "data-raw/raster.dem.tif",
                   filename_csa = "data-raw/raster.csa.tif")

# Sequenz des Berechnungszeitraums
seq <- seq.Date(from = as.Date("2017-01-01"),
                to = as.Date("2017-12-31"),
                by = "day")

# Berechnung der Ãœberflutungsdauer
ufd <- flood3(x = x, seq = seq)

Produkte

Veröffentlichung

hyd1d

  • OpenSource-Package auf CRAN
  • Dokumentationswebseite
  • beinhaltet eine Veröffentlichung von FLYS3-Wasserspiegellagen und HyDaBa-Pegeldaten
  • vorberechnete 1d-Wasserspiegellagen für Rhein und Elbe vom 01.01.1990 bis gestern
  • Shiny-Services waterLevel() und waterLevelPegelonline()
  • Einbettung der Shiny-Services in FLYS3 3.3

hydflood

  • OpenSource-Package auf CRAN
  • Dokumentationswebseite
  • beinhaltet eine (Wieder-)Veröffentlichung der DGM-W’s und der Querprofilflächen
  • jährliche Ãœberflutungsdauerraster von 1990 bis 2019
  • langjährig aggregierte Ãœberflutungsdauerraster
  • WMS-Dienste der jährlichen und aggregierten Ãœberflutungsdauerraster
  • Shiny-Services flood3daily und flood3wms
  • Einbettung der WMS-Dienste in FLYS3 3.3
  • Einbettung der Shiny-Services in FLYS3 3.3

Danke

Danke

  • Z2: Klaus Reuter, Kai Schramm
  • M1: Wilfried Wiechmann und das Team der Datenstelle M1
  • M2: Wolfgang Stürmer, Markus Promny, Bastian Klein
  • M3: Marcel Reiss
  • M4: Torsten Fay, Thomas Recknagel
  • M5: Lars Schumann
  • U3: Peter Horchler, Elmar Fuchs, Uwe Schröder

Fragen?

Vielen Dank für Ihre Aufmerksamkeit