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
}WMS Euskadi: Pruebas
Helper fun
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")