Primero, leeré los datos de la localización de las escuelas y la localización de los accidentes viales (según el INEGI)
library(leaflet)
library(sf)
library(sp)
library(dplyr)
mapa_escuelas<-read_sf("C:\\Users\\Hector\\Downloads\\mg_2023_integrado\\conjunto_de_datos\\escuelas2.shp")
mapa_accidentes<-read_sf("C:\\Users\\Hector\\Downloads\\Accidentes\\INEGI_Accidentesdetransito_.shp")
#Checar las proyecciones de ambos datos
#st_crs(mapa_escuelas)
#st_crs(mapa_accidentes)
#Cambiar la proyección a aquella donde se pueda medir en metros
escuelas <- st_transform(mapa_escuelas, 32613)
accidentes <- st_transform(mapa_accidentes, 32613)
Hacer el buffer de dos kilómetros
escuelas_buffer <- st_buffer(escuelas, dist = 2000)
Identificar accidentes dentro de los buffers
accidentes_en_buffers <- st_join(accidentes, escuelas_buffer, join = st_within)
Asignar el número de accidentes a cada escuela (en archivo espacial)
conteo_accidentes <- accidentes_en_buffers %>%
group_by(`Nombre d_1`) %>% # Usa un identificador único de cada escuela
summarise(num_accidentes = n())
#print(conteo_accidentes)
transforma<-as.data.frame(conteo_accidentes[,c("Nombre d_1","num_accidentes")])[,1:2]
colnames(transforma)<-c("Nombre_d1","num_accidentes")
# Unir los conteos a las escuelas
escuelas_con_accidentes <- sp::merge(escuelas,transforma,by.x = "Nombre d_1",by.y= "Nombre_d1")
Regresar la proyección a CRS84 para poder plasmarla en el mapa
escuelas_con_accidentes2<-escuelas_con_accidentes
escuelas_accidentes2 <- st_transform(escuelas_con_accidentes2, "OGC:CRS84")
# Crear el mapa interactivo
mapa <- leaflet(escuelas_accidentes2) %>%
addTiles() %>% # Agregar el fondo del mapa
addCircleMarkers(
lng = ~st_coordinates(geometry)[, 1], # Longitud
lat = ~st_coordinates(geometry)[, 2], # Latitud
radius = 5, # Tamaño del marcador
color = "blue", # Color del borde
fillColor = "lightblue", # Color de relleno
fillOpacity = 0.7,
popup = ~paste0(
"<b>Nombre de la escuela:</b> ", `Nombre d_1`, "<br>",
"<b>Total de accidentes:</b> ", num_accidentes
) # Etiqueta emergente con detalles
) %>%
addLegend(
position = "bottomright",
colors = "blue",
labels = "Escuelas",
title = "Leyenda"
)
# Mostrar el mapa
mapa