Skip to contents

Vorbereitung

# load libraries
library(hydflood)
library(elbe1d)
library(sf)
library(leaflet)
library(htmltools)
library(DT)

# base path
path <- paste0("~/freigaben/Projekte/Geodaten/Geo-Basisdaten/Daten-sonstige",
               "/Vektordaten/BfN_Schutzgebiete-DE/")
if (dir.exists(path)) {
  eval <- TRUE
} else {
  eval <- FALSE
}

# crs
crs <- st_crs("EPSG:25833")
wgs84 <- st_crs("EPSG:4326")

# afe
afe <- sf.af("Elbe")
afe_wgs84 <- st_transform(afe, wgs84)

# sf.axis
st_crs(sf.axis) <- st_crs("EPSG:25833")
axis <- st_buffer(sf.axis, 50)

# bundesländer
bl <- c("BB" = "Brandenburg", "NI" = "Niedersachsen",
        "SH" = "Schleswig- Holstein", "SN" = "Sachsen",
        "ST" = "Sachsen-Anhalt")

Naturschutzgebiete

nsg <- st_read(paste0(path, "Naturschutzgebiete_2021"), "NSG_BRD_2021",
               quiet = TRUE)
nsg <- st_transform(nsg, crs)

Aktive, rezente Aue

id <- which(st_intersects(nsg, afe, sparse = FALSE)[, 1])
nsg_sel <- nsg[id, ]
nsg_sel_wgs84 <- st_transform(nsg_sel, wgs84)
nsg_sel_wgs84_center <- st_centroid(nsg_sel_wgs84)
nsg_sel.df <- as.data.frame(nsg_sel[,
  c("NAME", "FLAECHE", "BL", "LEG_DATE", "LEG_LINK", "LEG_TITEL")])
nsg_sel.df$FLAECHE <- as.numeric(nsg_sel.df$FLAECHE)
nsg_sel.df$BL <- bl[nsg_sel.df$BL]
nsg_sel.df$LEG_DATE <- as.Date(nsg_sel.df$LEG_DATE)
nsg_sel.df$url <- ifelse(is.na(nsg_sel.df$LEG_LINK), nsg_sel.df$LEG_TITEL,
                         paste0('<a href="', nsg_sel.df$LEG_LINK,
                                '"  target="_blank" rel="noopener">',
                                ifelse(is.na(nsg_sel.df$LEG_TITEL),
                                       "Verordnung", nsg_sel.df$LEG_TITEL),
                                '</a>'))
leaflet() %>%
  leaflet::addTiles() %>%
  leaflet::addPolygons(fillColor = "darkblue", fillOpacity = 0.1,
                       color = "darkblue", opacity= 1, weight = 0.5,
                       stroke = TRUE, data = afe_wgs84) %>%
  leaflet::addPolygons(color = "blue", stroke = TRUE, weight = 2,
                       opacity = 1, fillColor = "blue", fillOpacity = 0.5,
                       data = nsg_sel_wgs84) %>%
  leaflet::addLabelOnlyMarkers(label = ~NAME,
                               data = nsg_sel_wgs84_center,
                               labelOptions = labelOptions(noHide = TRUE,
                                                           direction = "top",
                                                           textOnly = TRUE,
                                                           textsize = "15px"))
datatable(nsg_sel.df[, c("NAME", "FLAECHE", "BL", "LEG_DATE", "url")],
          colnames = c("Name", "Fläche [Ha]", "Bundesland",
                       "Datum der Ausweisung", "Ausweisungstext"),
          rownames = FALSE, escape = FALSE) %>%
  formatCurrency(columns = 2, currency = "", mark = ".", dec.mark = ",") %>%
  formatDate(columns = 4, method = 'toLocaleDateString')

Gewässerachse

id <- which(st_intersects(nsg, axis, sparse = FALSE)[, 1])
nsg_sel_axis <- nsg[id, ]
nsg_sel_axis_wgs84 <- st_transform(nsg_sel_axis, wgs84)
nsg_sel_axis_wgs84_center <- st_centroid(nsg_sel_axis_wgs84)
nsg_sel_axis.df <- as.data.frame(nsg_sel_axis[,
  c("NAME", "FLAECHE", "BL", "LEG_DATE", "LEG_LINK", "LEG_TITEL")])
nsg_sel_axis.df$FLAECHE <- as.numeric(nsg_sel_axis.df$FLAECHE)
nsg_sel_axis.df$BL <- bl[nsg_sel_axis.df$BL]
nsg_sel_axis.df$LEG_DATE <- as.Date(nsg_sel_axis.df$LEG_DATE)
nsg_sel_axis.df$url <- ifelse(is.na(nsg_sel_axis.df$LEG_LINK),
                        nsg_sel_axis.df$LEG_TITEL,
                        paste0('<a href="', nsg_sel_axis.df$LEG_LINK,
                               '"  target="_blank" rel="noopener">',
                               ifelse(is.na(nsg_sel_axis.df$LEG_TITEL),
                                      "Verordnung", nsg_sel_axis.df$LEG_TITEL),
                               '</a>'))
leaflet() %>%
  leaflet::addTiles() %>%
  leaflet::addPolygons(fillColor = "darkblue", fillOpacity = 0.1,
                       color = "darkblue", opacity= 1, weight = 0.5,
                       stroke = TRUE, data = afe_wgs84) %>%
  leaflet::addPolygons(color = "blue", stroke = TRUE, weight = 2,
                       opacity = 1, fillColor = "blue", fillOpacity = 0.5,
                       data = nsg_sel_axis_wgs84) %>%
  leaflet::addLabelOnlyMarkers(label = ~NAME,
                               data = nsg_sel_axis_wgs84_center,
                               labelOptions = labelOptions(noHide = TRUE,
                                                           direction = "top",
                                                           textOnly = TRUE,
                                                           textsize = "15px"))
datatable(nsg_sel_axis.df[, c("NAME", "FLAECHE", "BL", "LEG_DATE", "url")],
          colnames = c("Name", "Fläche [Ha]", "Bundesland",
                       "Datum der Ausweisung", "Ausweisungstext"),
          rownames = FALSE, escape = FALSE) %>%
  formatCurrency(columns = 2, currency = "", mark = ".", dec.mark = ",") %>%
  formatDate(columns = 4, method = 'toLocaleDateString')
nsg_sel.df$axis <- nsg_sel.df$NAME %in% nsg_sel_axis.df$NAME
nsg_sel.df$geometry <- NULL
names(nsg_sel.df) <- c("Gebietsname", "Fläche (ha)", "Datum der Ausweisung",
                       "URL des Ausweisungstextes", "Ausweisungstitel",
                       "Link zum Auseisungstext",
                       "Überschneidung mit der Gewässerachse")
write.table(nsg_sel.df, file = "df.nsg.csv", sep = ";",
            row.names = FALSE)

FFH-Gebiete

ffh <- st_read(paste0(path, "Natura2000_2019"), "ffh_de_2019",
               quiet = TRUE)
ffh <- st_transform(ffh, crs)
# natura 2000 mapviewer
# ffh$url <- paste0("https://natura2000.eea.europa.eu/?sitecode=",
#                   ffh$SITECODE)
# natura 2000 biodiversity
ffh$url <- paste0("https://biodiversity.europa.eu/sites/natura2000/",
                  ffh$SITECODE)

Aktive, rezente Aue

id <- which(st_intersects(ffh, afe, sparse = FALSE)[, 1])
ffh_sel <- ffh[id, ]
ffh_sel_wgs84 <- st_transform(ffh_sel, wgs84)
ffh_sel_wgs84_center <- st_centroid(ffh_sel_wgs84)
ffh_sel.df <- as.data.frame(ffh_sel[, c("NAME", "SITECODE", "FLAECHE", "BL",
                                        "LEG_DATE", "LEG_TITEL")])
ffh_sel.df$FLAECHE <- as.numeric(ffh_sel.df$FLAECHE)
ffh_sel.df$BL <- bl[ffh_sel.df$BL]
ffh_sel.df$LEG_DATE <- as.Date(ffh_sel.df$LEG_DATE)
ffh_sel.df$siteurl <- paste0(
  '<a href="https://biodiversity.europa.eu/sites/natura2000/',
  ffh_sel.df$SITECODE, '"  target="_blank" rel="noopener">',
  ffh_sel.df$SITECODE, '</a>')
ffh_sel.df <- ffh_sel.df[order(ffh_sel.df$SITECODE), ]

# habitat typen
# database downloaded from:
# https://www.eea.europa.eu/data-and-maps/data/natura-14
# https://www.eea.europa.eu/data-and-maps/data/natura-14/natura-2000-tabular-data-12-tables/natura-2000-comma-separated-values-files/at_download/file
# and extracted into "data-raw/Natura2000_end2021_rev1_csv/"
h <- read.table(paste0("../data-raw/Natura2000_end2021_rev1_csv/Natura2000_end",
                       "2021_rev1_HABITATS.csv"),
                sep = ",", header = TRUE)
h_sel <- h[which(h$SITECODE %in% ffh_sel.df$SITECODE), ]
h_sel <- h_sel[order(h_sel$HABITATCODE), ]

ffh_sel.df$habitattypes <- character(nrow(ffh_sel.df))

for (a_site in ffh_sel.df$SITECODE) {
  id <- which(ffh_sel.df$SITECODE == a_site)
  id_h <- which(h_sel$SITECODE == a_site)
  
  ffh_sel.df$habitattypes[id] <- 
    paste0(
      paste0('<a href="https://biodiversity.europa.eu/habitats/',
             h_sel[id_h, "HABITATCODE"], '"  target="_blank" rel="noopener">',
             h_sel[id_h, "HABITATCODE"], '</a>'),
      collapse = ", ")
}
leaflet() %>%
  leaflet::addTiles() %>%
  leaflet::addPolygons(fillColor = "darkblue", fillOpacity = 0.1,
                       color = "darkblue", opacity= 1, weight = 0.5,
                       stroke = TRUE, data = afe_wgs84) %>%
  leaflet::addPolygons(color = "blue", stroke = TRUE, weight = 2,
                       opacity = 1, fillColor = "blue", fillOpacity = 0.5,
                       data = ffh_sel_wgs84,
                       popup = paste0('<a href="', ffh_sel_wgs84$url,
                                      '"  target="_blank" rel="noopener">',
                                      ffh_sel_wgs84$NAME, '</a>'))
datatable(ffh_sel.df[, c("NAME", "siteurl", "FLAECHE", "BL", "LEG_DATE",
                         "LEG_TITEL", "habitattypes")],
          colnames = c("Name", "Sitecode", "Fläche [Ha]", "Bundesland",
                       "Datum der Ausweisung", "Ausweisungstext",
                       "Lebensraumtypen"),
          rownames = FALSE, escape = FALSE) %>%
  formatCurrency(columns = 3, currency = "", mark = ".", dec.mark = ",") %>%
  formatDate(columns = 5, method = 'toLocaleDateString')

Gewässerachse

id <- which(st_intersects(ffh, axis, sparse = FALSE)[, 1])
ffh_sel_axis <- ffh[id, ]
ffh_sel_axis_wgs84 <- st_transform(ffh_sel_axis, wgs84)
ffh_sel_axis_wgs84_center <- st_centroid(ffh_sel_axis_wgs84)
ffh_sel_axis.df <- as.data.frame(ffh_sel_axis[, c("NAME", "SITECODE", "FLAECHE", "BL",
                                        "LEG_DATE", "LEG_TITEL")])
ffh_sel_axis.df$FLAECHE <- as.numeric(ffh_sel_axis.df$FLAECHE)
ffh_sel_axis.df$BL <- bl[ffh_sel_axis.df$BL]
ffh_sel_axis.df$LEG_DATE <- as.Date(ffh_sel_axis.df$LEG_DATE)
ffh_sel_axis.df$siteurl <- paste0(
  '<a href="https://biodiversity.europa.eu/sites/natura2000/',
  ffh_sel_axis.df$SITECODE, '"  target="_blank" rel="noopener">',
  ffh_sel_axis.df$SITECODE, '</a>')
ffh_sel_axis.df <- ffh_sel_axis.df[order(ffh_sel_axis.df$SITECODE), ]

# habitat typen
h <- read.table(paste0("../data-raw/Natura2000_end2021_rev1_csv/Natura2000_end",
                       "2021_rev1_HABITATS.csv"),
                sep = ",", header = TRUE)
h_sel_axis <- h[which(h$SITECODE %in% ffh_sel_axis.df$SITECODE), ]
h_sel_axis <- h_sel_axis[order(h_sel_axis$HABITATCODE), ]

ffh_sel_axis.df$habitattypes <- character(nrow(ffh_sel_axis.df))

for (a_site in ffh_sel_axis.df$SITECODE) {
  id <- which(ffh_sel_axis.df$SITECODE == a_site)
  id_h <- which(h_sel_axis$SITECODE == a_site)
  
  ffh_sel_axis.df$habitattypes[id] <- 
    paste0(
      paste0('<a href="https://biodiversity.europa.eu/habitats/',
             h_sel_axis[id_h, "HABITATCODE"], '"  target="_blank" rel="noopener">',
             h_sel_axis[id_h, "HABITATCODE"], '</a>'),
      collapse = ", ")
}
leaflet() %>%
  leaflet::addTiles() %>%
  leaflet::addPolygons(fillColor = "darkblue", fillOpacity = 0.1,
                       color = "darkblue", opacity= 1, weight = 0.5,
                       stroke = TRUE, data = afe_wgs84) %>%
  leaflet::addPolygons(color = "blue", stroke = TRUE, weight = 2,
                       opacity = 1, fillColor = "blue", fillOpacity = 0.5,
                       data = ffh_sel_axis_wgs84,
                       popup = paste0('<a href="', ffh_sel_axis_wgs84$url,
                                      '"  target="_blank" rel="noopener">',
                                      ffh_sel_axis_wgs84$NAME, '</a>'))
datatable(ffh_sel_axis.df[, c("NAME", "siteurl", "FLAECHE", "BL", "LEG_DATE",
                         "LEG_TITEL", "habitattypes")],
          colnames = c("Name", "Sitecode", "Fläche [Ha]", "Bundesland",
                       "Datum der Ausweisung", "Ausweisungstext",
                       "Lebensraumtypen"),
          rownames = FALSE, escape = FALSE) %>%
  formatCurrency(columns = 3, currency = "", mark = ".", dec.mark = ",") %>%
  formatDate(columns = 5, method = 'toLocaleDateString')
ffh_sel.df$axis <- ffh_sel.df$NAME %in% ffh_sel_axis.df$NAME
ffh_sel.df$geometry <- NULL
names(ffh_sel.df) <- c("Gebietsname", "Fläche (ha)", "Datum der Ausweisung",
                       "URL des Ausweisungstextes", "Ausweisungstitel",
                       "Link zum Auseisungstext",
                       "Überschneidung mit der Gewässerachse")
write.table(ffh_sel.df, file = "df.ffh.csv", sep = ";",
            row.names = FALSE)