Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
BFN_data.R 1.47 KiB
# Only needed to be run one time to get bfn data
# can be adjusted to load data for other layers (nationalparks etc.)
library(xml2)
library(terra)
library(sf)
library(tidyverse)
library(gdalUtilities)

url <- "https://geodienste.bfn.de/ogc/wfs/schutzgebiet?REQUEST=GetCapabilities&SERVICE=WFS&VERSION=2.0.0"
wms_capabilities <- read_xml(url)

layers <- st_layers(url)

data_nasc <- read_sf(url, layer= "bfn_sch_Schutzgebiet:Naturschutzgebiete")

data_nasc <- data_nasc %>% mutate(value=1)

ggplot(data=data_nasc) +
  #geom_sf(data=germany_geo) +
  geom_sf(fill="darkgreen", col="darkgreen") 

#ggsave("Figures/bfn_map.png", width = 5, height = 4)


# Rasterize data  #

# Issue with conversion use function to convert data first before vectorizing
ensure_multipolygons <- function(X) {
  tmp1 <- tempfile(fileext = ".gpkg")
  tmp2 <- tempfile(fileext = ".gpkg")
  st_write(X, tmp1)
  ogr2ogr(tmp1, tmp2, f = "GPKG", nlt = "MULTIPOLYGON")
  Y <- st_read(tmp2)
  st_sf(st_drop_geometry(X), geom = st_geometry(Y))
}

data_nasc_con <- ensure_multipolygons(data_nasc)

data_nasc_con <- st_transform(data_nasc_con, crs="epsg:3035")

vec_nasc <- vect(data_nasc_con)

empty_raster <- rast(vec_nasc, resolution(1,1))
res(empty_raster) <- c(100, 100)

raster_nasc <- rasterize(vec_nasc, empty_raster, "value")

plot(raster_nasc, col="darkgreen")

saveRDS(raster_nasc, "data/gis/protected_bfn_raster.rds")

# Check if conversion and storage worked #
raster_bfn <- readRDS("data/gis/protected_bfn_raster.rds") # works