install.packages("ggmap", contriburl = "both")
2 Geocodificación
La geocodificación es el proceso de transformar las direcciones físicas de los domicilios a coordenadas geográficas (latitud y longitud). La geocodificación se realiza a través del servicio de Geocoding API de Google, con la función ggmap::geocode del paquete ggmap & la funcion denhotspots::geocoden() del paquete denhotspots. El proceso de geocodificación se realiza en tres fases. En la primera fase se sube la base de datos de los casos del SINAVE a RStudio y se extrae la información del país/estado/municipio de interés. Si la geocodificación se realiza la primera vez, el proceso es más simple que la segunda vez. Dado que la frecuencia de la geocodificación es semanal y las bases de dengue son bases de datos acumulados, se requiere extraer la base de la semana actual de los casos no geocodificados (casos nuevos, casos de la presente semana) a través de realizar la diferencia entre la semana pasada (casos acumulados geocodificados, asumiendo que se geocodificó desde el primero de enero hasta la semana pasada) y la semana actual (geocodificación por segunda vez). La idea es geocodificar solo los casos que salieron la presente semana y no volver a geocodificar todas las semanas acumuladas incluida la semana actual. Finalmente el archivo se guarda con extensión csv y con el nombre del estado y la fecha, por ejemplo dengue_aguascalientes_2025_03_11 ó dengue_edo01_2025_03_11..
En la segunda fase, el archivo csv se sube a RStudio, se crea un vector de direcciones, se realiza manipulación del vector de direcciones si se requiere (por ejemplo, se sustituye # por NUM o NUMERO), se geocodifica y se guarda en archivo temporal, une la base de coordenadas y la base del sinave, finalmente se guarda en un archivo RData.
En la tercera fase, cuando se geocodifica por primera vez (casos acumulados del 1 de enero al 3 marzo, el archivo resultado de la segunda fase, se sube y se guarda. Pero cuando se geocodifica la segunda ves se requiere eliminar los casos descartados y unir la base acumulada (1 enero al 3 marzo) con la base de la ultima semana (10 marzo). Acontinuación se describen los procesos para poder geocodificar en R.
3 APIs de Google
Para realizar el proceso de geocodificación descrito en los parrafos precedentes requiere que el personal de vectores gestione dos APIs de Google Geocoding API y Static Maps API. La primera API sirve para geocodificar las bases de los casos de dengue del sinave y la segunda API sirve para extraer los mapas satelitales para la visualización de las cadenas de transmisión y los mapas de calor.
API
es un acrónimo de “Interfaz de Programación de Aplicaciones”. Es un conjunto de reglas y protocolos que permiten que las aplicaciones de software se comuniquen entre si.
4 Geocodificación en R
Los requisito básicos para la geocodificación en R son:
- Tener instalado R & RStudio
- Instalar los paquetes ggmap y denhotspots
- Contar con su proyecto de geocodificación
Instalación de ggmap
Instalación de denhotspots
pak::pkg_install("fdzul/denhotspots")
En caso de que no se pueda instalar con el paquete pak, lo cual es poco probable, se puede intentar instalar con los paquetes remotes o devtools.
remotes::install_github("fdzul/denhotspots")
devtools::install_github("fdzul/denhotspots")
4.1 Proyecto de geocodificación
Bajar la carpeta geocodificación_dengue_sinave alojada en github y descomprimirla. La carpeta contiene los 32 folder para cada entidad federativa, y cada estado seleccionará su carpeta correspondiente con su entidad.
En el proyecto se encontrarán cuatro carpetas o folders (1.data, 2.script, 3.geocoded_data, 4.RData) y el nombre del proyecto personalizado por estado. Como ejemplo se usa el proyecto del estado de Jalisco 14 (geocodificacion_dengue_sinave_edo14) para ilustrar las carpeta alojadas en el proyecto.
En la carpeta 1.data se encuentran don subfolders (1.semana_actual_recientes & 2.ultima_semana_acumulado), en el primero se guardó la base del SINAVE con la fecha más reciente donde se encuentran los casos de la última semana (2025-03-10) y en el segundo folder se encuentra la base del SINAVE con fecha del 2025-03-03.
fs::dir_tree("/Users/felipedzul/Desktop/geocodificacion_dengue_sinave_edo14",
recurse = 3)
/Users/felipedzul/Desktop/geocodificacion_dengue_sinave_edo14
├── 1.data
│ ├── 1.semana_actual_recientes
│ │ ├── DENGUE2025_10-3-2025.rar
│ │ └── DENGUE2_.txt
│ └── 2.ultima_semana_acumulado
│ ├── DENGUE2025_3-3-2025.rar
│ └── DENGUE2_.txt
├── 2.script
│ ├── 1.primera_vez
│ │ ├── 1.0.cargar_la_base_datos_dengue_primera_vez.R
│ │ ├── 2.0.geocodificación_dengue_dataset.R
│ │ └── 3.0.guardar_acumulados.R
│ └── 2.segunda_vez
│ ├── 1.1.cargar_la_base_datos_dengue.R
│ ├── 2.1.geocodificación_dengue_dataset.R
│ └── 3.1.unir_ultima_semana_&_acumulados.R
├── 3.geocoded_data
├── 4.RData
└── geocodificacion_dengue_sinave_edo14.Rproj
La carpeta 2.script contiene dos folders, la 1.primera_vez y 2.segunda_vez. La primera carpeta (1.primera_vez) tiene la función de geocodificar los casos de dengue de la base del SINAVE del 1 de enero de 2025 al 3 de marzo del 2025 (casos acumulados hasta el 3 de marzo) y la segunda carpeta (2.segunda_vez) su meta es actualizar la geocodificación con los casos del 4 de marzo al 10 de marzo, de tal forma que actualiza la base de casos geocodificados hasta el 10 de marzo. En conclusión primero se corren los scripts de la carpeta 1.primera_vez y posteriormente se corren los scripts de la carpeta 2.segunda_vez, al final tendremos un archivo actualizado del 1 enero al 10 de marzo del presente año. En ambos casos los scripts se deben correr secuencialmente de acuerdo con el número de scripts.
Las carpetas 3.geocoded_data y 4.RData, conforme se corran los scripts de las carpetas 1.primera_vez y 2.segunda_vez, se iran generando archivo R.Data que se usarán como input para algunos segmentos de código y como input para las cadenas de transmisión o mapas de calor.
En la próxima semana (17 de marzo que es día festivo ó 18 de marzo), recuerden que tienen que bajar la base de datos del SINAVE con fecha del 17 ó 18. Guardar el archivo con extensión rar en el carpeta 1.semana_actual_reciente y descomprimirlo. El archivo con fecha 10 de marzo del 2025 se debe pasar a la carpeta 2.ultima_semana_acumulado.
Este proceso tiene que iterativamente realizarse cada semana junto con la geocodificación.
4.2 Geocodificación por primera vez.
Abrimos la carpeta del la proyecto (geocodificacion_dengue_sinave_edo14) dandole doble click y acontinuación abrimos el proyecto en RStudio al darle doble click al archivo del mismo nombre del proyecto con extensión R.proj
(geocodificacion_dengue_sinave_edo14.Rproj). Este archivo lo identificamos debido a que al al principio tiene un icono característico de RStudio.
Acontinuación entramos en la carpeta 2.script
, nos vamos al folder 1.primera_vez
. En esta carpeta se alojan tres archivos que corresponden con las 3 fases de la geocodificación.
fs::dir_tree("/Users/felipedzul/Desktop/geocodificacion_dengue_sinave_edo14/2.script/1.primera_vez",
recurse = 1)
/Users/felipedzul/Desktop/geocodificacion_dengue_sinave_edo14/2.script/1.primera_vez
├── 1.0.cargar_la_base_datos_dengue_primera_vez.R
├── 2.0.geocodificación_dengue_dataset.R
└── 3.0.guardar_acumulados.R
Fase | Script |
---|---|
I | 1.0.cargar_la_base_datos_dengue_primera_vez.R |
II | 2.0.geocodificación_dengue_dataset.R |
III | 3.0.guardar_acumulados.R |
4.2.2 Fase 2
El segundo script (2.0.geocodificación_dengue_dataset.R) de la carpeta 1.primera_vez corresponde a la segunda fase de la geocodificación. La segunda fase se divide en siete pasos.
4.2.2.1 Paso 1. Nombre de la base
En este paso recuperamos el nombre del archivo como lo guardamos en el fase 1, paso 2 y lo asignamos a un objeto llamado infile
infile <- "dengue_edo14_2025_03_03"
4.2.2.2 Paso 2. Direcciones a gecodificar
En el paso 2. se extrae el vectores de direcciones de los domicilios de los casos probables y confirmados con la finalidad de geocodificarlos. La función que realiza esta tarea es data_geocoden del paquete denhotspots y la función cuenta con tres argumentos.
Argumento | Definición | Tipo de Dato | Valores |
---|---|---|---|
infile | Nombre de la base dengue guardado como csv | texto | infile |
data | Es un valor logico para definir si regresa la base completa (TRUE) o el vector de direcciones(F) | Lógico | TRUE o FALSE |
sinave_new | Es un valor lógico para definir la base, si es TRUE regres una base con estructura del 2016 al año en curso, de lo contrario regresa una base del 2008-2015 | Lógico | TRUE o FALSE |
4.2.2.2.1 Código
addresses <- denhotspots::data_geocoden(infile = infile,
data = FALSE,
sinave_new = TRUE)
head(addresses)
[1] "PRIVADA PABLO ,Colonia EL CAMPESINO , 45597 SAN PEDRO TLAQUEPAQUE, Jalisco,Mexico"
[2] "CALLE ALBAÑILES 3335, LAS CABAÑITAS , 45180 ZAPOPAN, Jalisco,Mexico"
[3] "CALLE TONALA 180, LOMAS DE LA PRIMAVERA , 45065 ZAPOPAN, Jalisco,Mexico"
[4] "CALLE PERDIZ 1461, MORELOS , 44910 GUADALAJARA JAL, Jalisco,Mexico"
[5] "CALLE LAZARO CARDENAS 25, Congregaci EL CORCOVADO , 48914 AUTLAN DE NAVARRO, Jalisco,Mexico"
[6] "CALLE MORLEOS 09, Congregaci SAN MIGUEL HIDALGO , 48715 LIMON EL, Jalisco,Mexico"
4.2.2.3 Paso 3. Manipulación de las direcciones
Este paso es unicamente necesario cuando el proceso de geocodificación de detenga por un error en los elementos que comforman el vector de direcciones. Por ejemplo si el vector de direcciones es la siguiente “Avenida Reforma 36, CENTRO CENTRO, 62744 CUAUTLA MOR, Morelos, Mexico”, el elemento (“CENTRO CENTRO,”), puede causar un error debido a que se repite la colonia CENTRO y también esta de más la palabra MOR. Para corregir el error primero entramos usamos la función str_replace_all del paquete stringr o lo realizamos manual
4.2.2.3.1 Código
addresses <- stringr::str_replace_all(addresses,
pattern = "CENTRO CENTRO,",
replacement = " CENTRO,")
addresses <- stringr::str_replace_all(addresses,
pattern = "CUAUTLA MOR,",
replacement = " CUAUTLA,")
Manual
addresses[5] <- "Avenida Reforma 36, CENTRO, 62744 CUAUTLA, Morelos, Mexico"