WMS Euskadi: Pruebas

Author

Diego Hernangómez

Published

November 30, 2023

Helper fun

bbox_to_sfc <- function(x, crs_in = 4326, crs_out = 4326) {
  x_mod <- x
  class(x_mod) <- "bbox"
  x_mod <- sf::st_as_sfc(x_mod)
  sf::st_crs(x_mod) <- sf::st_crs(crs_in)
  x_poly <- sf::st_transform(x_mod, crs_out)
  x_poly
}

Librerias para visualizar

library(ggplot2)
library(tidyterra)

Alava

x <- c(-2.6747960047, 42.8428940066, -2.6677257018, 42.847653121) # En 4326

x_as_sf <- bbox_to_sfc(x, 4326, crs_out = 25830)


# Llamada a buildings con mapSpain

wms_alava_bu <- mapSpain::esp_make_provider(
  id = "alava_bu",
  q = "https://geo.araba.eus/WMS_INSPIRE_BU?",
  service = "WMS",
  version = "2.0.0",
  crs = "EPSG:25830",
  layer = "BU.Building",
  styles = "INSPIRE_BU:BU.Building.Default",
  transparent = TRUE
)
tile_alava <- mapSpain::esp_getTiles(x_as_sf, wms_alava_bu,
  cache_dir = tempdir(),
  mask = TRUE
)

ggplot() +
  geom_spatraster_rgb(data = tile_alava) +
  geom_sf(data = x_as_sf, fill = NA, aes(color = "bbox"), linewidth = 2) +
  scale_color_manual(values = "red") +
  labs(title = "Vitoria")

Bizkaia

x <- c(-2.9432804686, 43.2588395267, -2.9253418547, 43.2694336275) # En 4326
x_as_sf <- bbox_to_sfc(x, crs_out = 4326)

# Por algun motivo este servicio tiene las coordenadas en ymin, xmin, ymax, xmax
# ??
x_as_sf_rev <- bbox_to_sfc(x[c(2, 1, 4, 3)], crs_out = 4326)

# Llamada a buildings con mapSpain

wms_bizkaia_bu <- mapSpain::esp_make_provider(
  id = "bizkaia_bu",
  q = "https://geo.bizkaia.eus/arcgisserverinspire/rest/services/Catastro/Buildings/MapServer/exts/InspireView/ENG/service?",
  service = "WMS",
  version = "1.3.0",
  crs = "EPSG:4326",
  layer = "BU.Building",
  format = "image/png",
  styles = "BU.Building.default",
  transparent = TRUE
)

tile_bizkaia <- mapSpain::esp_getTiles(x_as_sf_rev, wms_bizkaia_bu,
  cache_dir = tempdir(),
  mask = FALSE
)

# Ahora necesitamos invertir el resultado
ext <- as.vector(terra::ext(tile_bizkaia))
terra::ext(tile_bizkaia) <- ext[c(3, 4, 1, 2)]
tile_bizkaia <- terra::mask(tile_bizkaia, terra::vect(x_as_sf))

ggplot() +
  geom_spatraster_rgb(data = tile_bizkaia) +
  geom_sf(data = x_as_sf, fill = NA, aes(color = "bbox"), linewidth = 2) +
  scale_color_manual(values = "red") +
  labs(title = "Bilbao")

Gipuzkoa

x <- c(-1.968343893677886758, 43.31096042877344132, -1.960927426166767962, 43.31826928127834719) # En 4326
x_as_sf <- bbox_to_sfc(x, crs_out = 4326)

# Por algun motivo este servicio tiene las coordenadas en ymin, xmin, ymax, xmax
# ??
x_as_sf_rev <- bbox_to_sfc(x[c(2, 1, 4, 3)], crs_out = 4326)
wms_gipuzkoa_bu <- mapSpain::esp_make_provider(
  id = "gipuzkoa_bu",
  q = "https://b5m.gipuzkoa.eus/inspire/wms/gipuzkoa_wms?",
  service = "WMS",
  version = "1.3.0",
  crs = "EPSG:4326",
  layer = "bu.building",
  format = "image/png",
  transparent = TRUE,
  language = "eng"
)

tile_gipuzkoa <- mapSpain::esp_getTiles(x_as_sf_rev, wms_gipuzkoa_bu,
  cache_dir = tempdir(),
  mask = FALSE
)


# Ahora necesitamos invertir el resultado
ext <- as.vector(terra::ext(tile_gipuzkoa))
terra::ext(tile_gipuzkoa) <- ext[c(3, 4, 1, 2)]
tile_gipuzkoa <- terra::mask(tile_gipuzkoa, terra::vect(x_as_sf))

ggplot() +
  geom_spatraster_rgb(data = tile_gipuzkoa) +
  geom_sf(data = x_as_sf, fill = NA, aes(color = "bbox"), linewidth = 2) +
  scale_color_manual(values = "red") +
  labs(title = "Donostia/San Sebastián")