Datos de hospitales en València

salud
geocoding
datos-espaciales
Autor/a
Afiliación

María Fernanda Noya

Universitat de València

Fecha de publicación

9 de abril de 2026

Input

Se ha obtenido un conjunto de datos abierto y oficial del Ajuntament de València, concretamente un fichero CSV con información sobre hospitales y otros centros sanitarios del municipio de València. A partir de este conjunto de datos se ha seleccionado el subconjunto correspondiente únicamente a los hospitales.

hospitales <- read_delim(
  "../data/2526020036/hospitales.csv",
  delim = ";",
  locale = locale(encoding = "UTF-8"),
  show_col_types = FALSE
)
dim(hospitales)
[1] 62 14
glimpse(hospitales)
Rows: 62
Columns: 14
$ geo_point_2d <chr> "39.45307565703261, -0.39488128525927624", "39.4698684105…
$ `Geo Shape`  <chr> "{\"coordinates\": [[-0.394881285259276, 39.4530756570326…
$ Nombre       <chr> "Hospital pare Jofre", "Consultorio Local Valencia L'Alge…
$ Financiaci   <chr> "Publico", "Publico", "Publico", "Publico", "Privado", "P…
$ Tipo         <chr> "Hospital", "Consultorio", "Centro de Salud", "Centro de …
$ Camas        <dbl> 125, 0, 0, 0, 79, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Direccion    <chr> "San Llátzer s/n", "Carrer de l'Alguer, 28", "Carrer de S…
$ Fecha        <date> 2021-06-30, 2021-06-30, 2021-06-30, 2021-06-30, 2021-06-…
$ Barrio       <chr> "FAVARA", "BETERO", "RUSSAFA", "LA CREU DEL GRAU", "EXPOS…
$ codbarrio    <dbl> 5, 4, 1, 3, 1, 3, 1, 1, 1, 5, 4, 3, 1, 2, 2, 3, 7, 3, 6, …
$ coddistbar   <chr> "085", "114", "021", "123", "061", "103", "031", "161", "…
$ coddistrit   <dbl> 8, 11, 2, 12, 6, 10, 3, 16, 18, 5, 5, 10, 16, 11, 9, 3, 1…
$ X            <dbl> 724151.1, 728851.5, 726071.4, 728403.8, 726688.9, 725872.…
$ Y            <dbl> 4370296, 4372299, 4371572, 4371329, 4373145, 4369286, 437…
names(hospitales)
 [1] "geo_point_2d" "Geo Shape"    "Nombre"       "Financiaci"   "Tipo"        
 [6] "Camas"        "Direccion"    "Fecha"        "Barrio"       "codbarrio"   
[11] "coddistbar"   "coddistrit"   "X"            "Y"           

Descripción

El conjunto de datos utilizado procede del portal oficial de datos abiertos del Ajuntament de València, que ofrece información pública reutilizable sobre diferentes ámbitos municipales.

El dataset seleccionado contiene información sobre hospitales y otros centros sanitarios del municipio de València, incluyendo variables como el nombre del centro, tipo de establecimiento, dirección postal, número de camas, barrio, fecha de actualización y coordenadas aproximadas.

Aunque el recurso ya está delimitado espacialmente al municipio de València, no está preparado directamente para su uso en análisis geoespacial. Por una parte, incluye distintos tipos de centros sanitarios, por lo que requiere un filtrado temático. Por otra, aunque incorpora información espacial, esta no se encuentra organizada en un formato estándar listo para su utilización en herramientas SIG.

Por este motivo, se realiza un proceso de mejora del dataset que incluye el filtrado de hospitales, la construcción de direcciones completas, la validación y obtención de coordenadas mediante geocodificación, la generación de un objeto espacial sf y la exportación del resultado en formatos reutilizables.

Tratamiento

El tratamiento realizado consta de los siguientes pasos:

  1. Filtrado temático para conservar únicamente los hospitales del municipio de València.
  2. Construcción de una dirección completa a partir del nombre y la dirección postal de cada centro.
  3. Obtención de coordenadas mediante forward geocoding utilizando la librería tidygeocoder y el servicio basado en OpenStreetMap (Nominatim).
  4. Conversión del resultado a objeto espacial mediante la librería sf, generando geometrías de tipo punto en el sistema de referencia EPSG:4326.
  5. Exportación del dataset mejorado a formatos reutilizables, concretamente CSV para datos tabulares y GeoPackage (gpkg) para datos espaciales.

1. Ver nombres de columnas

Este paso permite identificar con precisión los nombres de las variables del dataset original y comprobar qué campos están disponibles para el análisis y el proceso de mejora.

names(hospitales)
 [1] "geo_point_2d" "Geo Shape"    "Nombre"       "Financiaci"   "Tipo"        
 [6] "Camas"        "Direccion"    "Fecha"        "Barrio"       "codbarrio"   
[11] "coddistbar"   "coddistrit"   "X"            "Y"           

2. Filtrar hospitales

En este paso se pasa del conjunto general de centros sanitarios al subconjunto específico de hospitales, que es el objeto de interés del trabajo.

hospitales_valencia <- hospitales %>%
  filter(trimws(Tipo) == "Hospital")

hospitales_valencia %>%
  select(Nombre, Tipo, Direccion, Barrio)
# A tibble: 14 × 4
   Nombre                                               Tipo    Direccion Barrio
   <chr>                                                <chr>   <chr>     <chr> 
 1 Hospital pare Jofre                                  Hospit… San Llát… FAVARA
 2 Clinica Quiron de Valencia, S.A.                     Hospit… Av. Blas… EXPOS…
 3 Hospital Universitario y Politecnico La Fe           Hospit… Avinguda… MALIL…
 4 Clinica Fontana                                      Hospit… Calle Al… RUSSA…
 5 Hospital 9 de Octubre                                Hospit… Av. Vall… SANT …
 6 Hospital Arnau de Vilanova                           Hospit… Calle Sa… SANT …
 7 Consorcio Hospital General Universitario De Valencia Hospit… Av. Tres… LA FO…
 8 Hospital de Valencia al Mar                          Hospit… Río Tajo… LA MA…
 9 Hospital la Malva-Rosa                               Hospit… Calle Is… LA MA…
10 Hospital Universitario Dr. Peset                     Hospit… Av. Gasp… FAVARA
11 ClInica Casa de la Salud                             Hospit… Dr. Manu… ALBORS
12 Fundacion Instituto Valenciano de Oncologia          Hospit… Profesor… CAMPA…
13 Hospital Clinico Universitario de Valencia           Hospit… Av. Blas… CIUTA…
14 Clinica Virgen del Consuelo                          Hospit… Calle Ca… LA RA…

3. Construir dirección completa

Se construye una variable de dirección completa que servirá como entrada para el proceso de geocodificación.

hospitales_valencia <- hospitales_valencia %>%
  mutate(direccion_completa = paste(Nombre, Direccion, "València", "España", sep = ", "))

hospitales_valencia %>%
  select(Nombre, Direccion, direccion_completa)
# A tibble: 14 × 3
   Nombre                                           Direccion direccion_completa
   <chr>                                            <chr>     <chr>             
 1 Hospital pare Jofre                              San Llát… Hospital pare Jof…
 2 Clinica Quiron de Valencia, S.A.                 Av. Blas… Clinica Quiron de…
 3 Hospital Universitario y Politecnico La Fe       Avinguda… Hospital Universi…
 4 Clinica Fontana                                  Calle Al… Clinica Fontana, …
 5 Hospital 9 de Octubre                            Av. Vall… Hospital 9 de Oct…
 6 Hospital Arnau de Vilanova                       Calle Sa… Hospital Arnau de…
 7 Consorcio Hospital General Universitario De Val… Av. Tres… Consorcio Hospita…
 8 Hospital de Valencia al Mar                      Río Tajo… Hospital de Valen…
 9 Hospital la Malva-Rosa                           Calle Is… Hospital la Malva…
10 Hospital Universitario Dr. Peset                 Av. Gasp… Hospital Universi…
11 ClInica Casa de la Salud                         Dr. Manu… ClInica Casa de l…
12 Fundacion Instituto Valenciano de Oncologia      Profesor… Fundacion Institu…
13 Hospital Clinico Universitario de Valencia       Av. Blas… Hospital Clinico …
14 Clinica Virgen del Consuelo                      Calle Ca… Clinica Virgen de…
hospitales_valencia$direccion_completa <- enc2utf8(hospitales_valencia$direccion_completa)

4. Geocodificación

Se aplica forward geocoding con tidygeocoder. Tras realizar pruebas comparativas con distintos motores de búsqueda, se ha optado por utilizar ArcGIS en lugar de OpenStreetMap (OSM). Esta decisión técnica se fundamenta en la mayor robustez del algoritmo de ArcGIS para interpretar direcciones en entornos urbanos españoles, lo que permite obtener las coordenadas de la totalidad de los hospitales (0% de valores NA) y garantiza una mayor precisión geoespacial en el conjunto de datos final.

# Geocodificamos las direcciones completas.
# El resultado añade columnas de latitud y longitud.
hospitales_geo <- hospitales_valencia %>%
  tidygeocoder::geocode(
    address = direccion_completa,
    method = "arcgis"
  )

#Verificación de resultados: Mostramos los primeros registros geocodificados
hospitales_geo %>%
  select(Nombre, direccion_completa, lat, long)
# A tibble: 14 × 4
   Nombre                                        direccion_completa   lat   long
   <chr>                                         <chr>              <dbl>  <dbl>
 1 Hospital pare Jofre                           Hospital pare Jof…  39.5 -0.395
 2 Clinica Quiron de Valencia, S.A.              Clinica Quiron de…  39.5 -0.364
 3 Hospital Universitario y Politecnico La Fe    Hospital Universi…  39.4 -0.376
 4 Clinica Fontana                               Clinica Fontana, …  39.5 -0.378
 5 Hospital 9 de Octubre                         Hospital 9 de Oct…  39.5 -0.402
 6 Hospital Arnau de Vilanova                    Hospital Arnau de…  39.5 -0.404
 7 Consorcio Hospital General Universitario De … Consorcio Hospita…  39.5 -0.409
 8 Hospital de Valencia al Mar                   Hospital de Valen…  39.5 -0.331
 9 Hospital la Malva-Rosa                        Hospital la Malva…  39.5 -0.325
10 Hospital Universitario Dr. Peset              Hospital Universi…  39.5 -0.394
11 ClInica Casa de la Salud                      ClInica Casa de l…  39.5 -0.350
12 Fundacion Instituto Valenciano de Oncologia   Fundacion Institu…  39.5 -0.391
13 Hospital Clinico Universitario de Valencia    Hospital Clinico …  39.5 -0.361
14 Clinica Virgen del Consuelo                   Clinica Virgen de…  39.5 -0.387
# Control de calidad: Comprobamos si algún hospital no ha sido localizado (NA)
cat("Número de hospitales no localizados:", sum(is.na(hospitales_geo$lat)))
Número de hospitales no localizados: 0

5. Conversión a objeto espacial

Una vez obtenidas las coordenadas, se realiza un proceso de “rescate” o limpieza: si el geocodificador ha fallado en algún punto, se recupera la coordenada original del Ayuntamiento (columna geo_point_2d).

hospitales_sf <- hospitales_geo %>%
  # Separamos la columna de coordenadas originales en latitud y longitud
  separate(geo_point_2d, into = c("lat_orig", "long_orig"), 
           sep = ",[ ]*", convert = TRUE) %>%
  # Separamos la columna de coordenadas originales en latitud y longitud
  mutate(
    lat = if_else(is.na(lat), lat_orig, lat),
    long = if_else(is.na(long), long_orig, long)
  ) %>%
  st_as_sf(coords = c("long", "lat"), crs = 4326, na.fail = FALSE)

# Verificamos que ya es un objeto espacial sf
hospitales_sf
Simple feature collection with 14 features and 16 fields
Geometry type: POINT
Dimension:     XY
Bounding box:  xmin: -0.408528 ymin: 39.4435 xmax: -0.3253479 ymax: 39.4906
Geodetic CRS:  WGS 84
# A tibble: 14 × 17
   lat_orig long_orig `Geo Shape`        Nombre Financiaci Tipo  Camas Direccion
 *    <dbl>     <dbl> <chr>              <chr>  <chr>      <chr> <dbl> <chr>    
 1     39.5    -0.395 "{\"coordinates\"… Hospi… Publico    Hosp…   125 San Llát…
 2     39.5    -0.364 "{\"coordinates\"… Clini… Privado    Hosp…    79 Av. Blas…
 3     39.4    -0.375 "{\"coordinates\"… Hospi… Publico    Hosp…  1000 Avinguda…
 4     39.5    -0.378 "{\"coordinates\"… Clini… Privado    Hosp…     7 Calle Al…
 5     39.5    -0.402 "{\"coordinates\"… Hospi… Privado    Hosp…   300 Av. Vall…
 6     39.5    -0.404 "{\"coordinates\"… Hospi… Publico    Hosp…   302 Calle Sa…
 7     39.5    -0.409 "{\"coordinates\"… Conso… Publico    Hosp…   592 Av. Tres…
 8     39.5    -0.331 "{\"coordinates\"… Hospi… Publico    Hosp…    70 Río Tajo…
 9     39.5    -0.325 "{\"coordinates\"… Hospi… Publico    Hosp…    47 Calle Is…
10     39.5    -0.394 "{\"coordinates\"… Hospi… Publico    Hosp…   539 Av. Gasp…
11     39.5    -0.351 "{\"coordinates\"… ClIni… Privado    Hosp…   192 Dr. Manu…
12     39.5    -0.391 "{\"coordinates\"… Funda… Concertado Hosp…   160 Profesor…
13     39.5    -0.362 "{\"coordinates\"… Hospi… Publico    Hosp…   587 Av. Blas…
14     39.5    -0.387 "{\"coordinates\"… Clini… Privado    Hosp…   156 Calle Ca…
# ℹ 9 more variables: Fecha <date>, Barrio <chr>, codbarrio <dbl>,
#   coddistbar <chr>, coddistrit <dbl>, X <dbl>, Y <dbl>,
#   direccion_completa <chr>, geometry <POINT [°]>

Se utiliza el sistema de referencia EPSG:4326, compatible con la mayoría de herramientas SIG y con la librería leaflet, lo que permite representar los datos correctamente en mapas interactivos.

# Comprobamos el sistema de referencia del objeto espacial
st_crs(hospitales_sf)
Coordinate Reference System:
  User input: EPSG:4326 
  wkt:
GEOGCRS["WGS 84",
    ENSEMBLE["World Geodetic System 1984 ensemble",
        MEMBER["World Geodetic System 1984 (Transit)"],
        MEMBER["World Geodetic System 1984 (G730)"],
        MEMBER["World Geodetic System 1984 (G873)"],
        MEMBER["World Geodetic System 1984 (G1150)"],
        MEMBER["World Geodetic System 1984 (G1674)"],
        MEMBER["World Geodetic System 1984 (G1762)"],
        MEMBER["World Geodetic System 1984 (G2139)"],
        MEMBER["World Geodetic System 1984 (G2296)"],
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]],
        ENSEMBLEACCURACY[2.0]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    USAGE[
        SCOPE["Horizontal component of 3D system."],
        AREA["World."],
        BBOX[-90,-180,90,180]],
    ID["EPSG",4326]]

6. Guardar el resultado

Se guarda el conjunto de datos mejorado tanto en formato CSV como en formato GeoPackage.

# Seleccionamos las variables finales que formarán parte del dataset mejorado
hospitales_sf2 <- hospitales_sf %>%
  select(Nombre, Financiaci, Tipo, Camas, Direccion, direccion_completa,
         Fecha, Barrio, codbarrio, coddistrit, geometry)
# Guardamos el resultado espacial en formato GeoPackage.
sf::st_write(
  hospitales_sf2,
  "guardar/hospitales_valencia.gpkg",
  delete_dsn = TRUE,
  quiet = TRUE
)

# Guardamos también una versión tabular sin geometría en CSV
readr::write_csv(
  st_drop_geometry(hospitales_sf2),
  "guardar/hospitales_valencia.csv"
)

7. Comprobación de calidad: ¿Cuántos hospitales se han quedado sin coordenadas?

En este paso se verifica que el objeto espacial final no contiene hospitales sin coordenadas.

sum(is.na(st_coordinates(hospitales_sf)))
[1] 0

8. Mostrar un mapa

Se genera un mapa interactivo utilizando la librería leaflet para comprobar visualmente la correcta localización de los hospitales dentro del municipio de València.

Además, los hospitales se representan con distintos colores según su tipo de financiación, utilizando rojo para hospitales públicos, azul para hospitales privados y naranja para hospitales concertados, lo que permite una mejor interpretación del conjunto de datos.

leaflet(hospitales_sf2) %>%
  addProviderTiles("CartoDB.Positron") %>%
  addCircleMarkers(
    color = ~case_when(
      toupper(Financiaci) == "PUBLICO" ~ "red",
      toupper(Financiaci) == "PRIVADO" ~ "blue",
      TRUE ~ "orange"
    ),
    radius = 7,
    stroke = TRUE,
    fillOpacity = 0.8,
    popup = ~paste0(
      "<b>", Nombre, "</b><br>",
      "Financiación: ", Financiaci, "<br>",
      "Dirección: ", Direccion
    )
  )

Output

Se ha obtenido un conjunto de datos centrado exclusivamente en los hospitales del municipio de València, a partir de una fuente oficial del Ajuntament de València. El resultado final contiene un total de 14 hospitales correctamente georreferenciados, y queda disponible en formato tabular (csv) y en formato geográfico (gpkg) para su reutilización en análisis espaciales y cartografía.

El conjunto de datos generado se encuentra en la carpeta guardar/, donde se han exportado los ficheros resultantes en formato CSV y GeoPackage, listos para su uso en herramientas de análisis geoespacial y sistemas de información geográfica (SIG).

El fichero generado con este procedimiento se puede descargar de aquí.



Proyecto de Innovación Educativa Emergente (PIEE-3898312)