Sistema Valenciano de Salud

SANIDAD
COMUNIDAD VALENCIANA
SALUD PÚBLICA
GPKG
Autor/a
Afiliación

Miguel Ibañez Ureña

Universidad de Valencia

Fecha de publicación

29 de marzo de 2025

Input

Se han obtenido los datos desde el portal de datos abiertos de la Generalitat Valenciana (Dades Obertes) donde se ofrecen datos agrupados por diversas temáticas, incluyendo información relacionada con la salud pública. El conjunto de datos elegido se centra en el “Sistema Valenciano de Salud”, donde existe la posibilidad de obtener/descargar datos geográficos y las zonas básicas de salud, la red de hospitales públicos o centros de atención primaria.

El Mapa sanitario descrito en la propia página web como “Representación cartográfica de los 24 departamentos de salud que forman parte del Sistema Valenciano de Salud. Contiene datos procedentes de la Conselleria de Sanidad”. Este recurso proporciona una delimitación geográfica precisa de los departamentos que estructuran la atención sanitaria y de las ubicaciones de los hospitales.

A continuación, se muestra otra información de interés:

Estos datos están disponibles para su descarga en formato CSV y GPKG, además de poder visualizarse mediante un visor web o un servicio WMS y la cartografía en el geoportal de la IDEV.

Para este caso, hemos utilizado el fichero GPKG.

Descripción

Cargamos las librerías necesarias:

libs <- c("kableExtra", "leaflet", "tidyverse", "sf", "mapSpain", "httr", "tidygeocoder")

Leemos el conjunto de datos:

Solamente tenemos una capa disponible MapaSanitario.Departamentos para los departamentos y otra para los hospitales CentrosSanitarios.Hospitales, las cuales vamos a utilizar.

gpkg_data1 <- st_read(temp_file, layer = "MapaSanitario.Departamentos", quiet = TRUE)
gpkg_data2 <- st_read(temp_file1, layer = "CentrosSanitarios.Hospitales", quiet = TRUE)
class(gpkg_data1)
[1] "sf"         "data.frame"
class(gpkg_data2)
[1] "sf"         "data.frame"

Se trata de un objeto sf con 24 objetos y 5 variables para los departamentos y un objeto sf con 35 objetos y 21 variables para los hospitales.

dim(gpkg_data1)
[1] 24  5
dim(gpkg_data2)
[1] 35 21

Transformamos las coordenadas.

gpkg_data1 <- sf::st_transform(gpkg_data1, crs=4326)
gpkg_data2 <- sf::st_transform(gpkg_data2, crs=4326)
# Crear el mapa
leaflet() %>%
  addTiles() %>%
  addPolygons(data = gpkg_data1, 
              color = "blue", 
              weight = 2, 
              fillOpacity = 0.5, 
              group = "Departamentos") %>%
  addCircles(data = gpkg_data2, 
             radius = 500, 
             color = "red", 
             fillColor = "red", 
             fillOpacity = 0.7, 
             group = "Hospitales") %>%
  addLayersControl(
    overlayGroups = c("Departamentos", "Hospitales"),
    options = layersControlOptions(collapsed = FALSE)
  )

Tratamiento

Una vez visualizados los polígonos y los puntos en el mapa, se detecta que no están bien las ubicaciones. Concretamente, se han detectado 2 puntos que no están bien ubicados.

  • Hospital Francesc de Borja de Gandía: (el punto está en la antigua ubicación)
  • Hospital General de Ontinyent: (tiene dos ubicaciones y solamente está cogiendo una)

Resolvemos las ubicaciones modificando la ubicación de las coordenadas del Hospital Francesc de Borja de Gandía y desglosamos las dos ubicaciones que disponemos del Hospital General de Ontinyent, generados desde la capa CentrosSanitarios.Hospitales.

# Creamos una nueva columna donde pasamos todos los puntos originales
gpkg_data2$geometry <- gpkg_data2$geom

# Modificamos el punto del Hospital de Gandia
gandia_idx <- which(gpkg_data2$municipio == "Gandia")
gpkg_data2$geometry[gandia_idx] <- st_sfc(st_point(c(-0.169887, 38.963379)), crs = 4326)

# Duplicamos la línea del Hospital de Ontinyent para poder asignar las dos ubicaciones
ontinyent_idx <- which(gpkg_data2$municipio == "Ontinyent")

# Actualizar la geometría de la fila original (primera ubicación)
gpkg_data2$geometry[ontinyent_idx] <- st_sfc(st_point(c(-0.60348, 38.819803)), crs = 4326)

# Copiar la fila para la segunda ubicación
ontinyent_new <- gpkg_data2[ontinyent_idx, ]
  
# Asignar la nueva geometría a la fila duplicada
ontinyent_new$geometry <- st_sfc(st_point(c(-0.607432, 38.810386)), crs = 4326)

# Cambio nombre del municipio para identificar la nueva ubicación
ontinyent_new$municipio <- "Ontinyent_new"
  
# Añadir la fila duplicada al conjunto de datos
gpkg_data2 <- rbind(gpkg_data2, ontinyent_new)

Output

Se ha obtenido un nuevo objeto sf, con 36 observaciones y 22 variables:

class(gpkg_data2)
[1] "sf"         "data.frame"
dim(gpkg_data2)
[1] 36 22

En la siguiente visualización se puede observar que las nuevas ubicaciones de los hospitales están dentro del nuevo dataset.

# Visualizar el mapa actualizado
leaflet() %>%
  addTiles() %>%
  addPolygons(data = gpkg_data1, 
              color = "blue", 
              weight = 2, 
              fillOpacity = 0.5, 
              group = "Departamentos") %>%
  addCircles(data = gpkg_data2$geometry, 
             radius = 25, 
             color = "red", 
             fillColor = "red", 
             fillOpacity = 0.7, 
             group = "Hospitales") %>%
  addLayersControl(
    overlayGroups = c("Departamentos", "Hospitales"),
    options = layersControlOptions(collapsed = FALSE)
  )

Las ubicaciones manuales se han obtenido desde la web https://www.coordenadas-gps.com/



Proyectos de Innovación Educativa Emergente PIEE-2737007 y PIEE-3325394