Datos
Recien acaban de publicar una librerĆa que le estaba dando seguimieto a su desarrollo (a base de leer sus teets) llamada mapgl. El autor de la librerĆa es Kyle Walker, seguramente has trabajado con alguna de las multiples librerĆas que ha desarrollado.
Pero bueno regresando al ejemplo, la librerĆa se publicó hace dos o tres dĆas, este es un ejemplo sencillo de la librerĆa para probarla con datos del C5.
En este ejemplo igual uso la librerĆa H3jsr que bĆ”sicamente conecta los hexĆ”gonos que desarrolló UBEr H3
Te dejo mis redes por si gustas contactarme :)
Lectura de los datos del c5,
UsarƩ la base de datos de incidentes del c5 manteniendo solo aquelos que fueron confirmados por alguna autoridad (A) y Excluyo los que no tienen longitud ni latitud.
library(tidyverse)
c5 = read_delim(
"https://archivo.datos.cdmx.gob.mx/C5/incidentes_viales/inViales_2022_2024.csv",
delim = ",",
col_names = T
) %>%
filter(codigo_cierre=="A",
!is.na(longitud),
!is.na(longitud)
)
Usa el token de mapbox
La librerĆa requiere el token de mapbox, Si no lo tienes lo puedes solicitar super rĆ”pido en su pagina
library(mapgl)
token_mb = "aca va tu token"
Indexación con H3
La librerĆa H3jsr permite Indexar la zona y hacer conteos muy rĆ”pido, por lo que integrando el id del H3, me quedo con la zona que tiene mayor incidentes.
El indice de resolución que usé es 9 , solo con fines didacticos, pero mientras mÔs grande el número, (va de 0 a 15) mÔs pequeño es el hexÔgono y niveles de resolución mÔs pequeños el hexÔgono es mÔs grande.
id=c5 %>%
sf::st_as_sf(coords = c("longitud","latitud"),crs=4326) %>%
select(folio,geometry) %>%
as_tibble() %>%
mutate(h3=h3jsr::point_to_cell(geometry,res=9)) %>%
count(h3,sort = T) %>%
head(1) %>%
pull(h3)
Mantengo solo los de la zona que presenta mayor nĆŗmero de incidentes confirmados.
pegriloso = c5 %>%
sf::st_as_sf(coords = c("longitud","latitud"),crs=4326) %>%
select(folio,geometry) %>%
as_tibble() %>%
mutate(h3 = h3jsr::point_to_cell(geometry,res=9)) %>%
filter(h3==id)
Por alguna razón debe ser data.frame sf
prueba2 = pegriloso %>%
as.data.frame() %>%
sf::st_as_sf()
Voila
Mi primer mapa com MapGL, para ver el entorno en 3d, si estƔs desde tu equipo de computo es con la tecla cntrl + arrastrar el cursor hacia arriba/abajo.
mapboxgl(access_token = token_mb) |>
fit_bounds(prueba2, animate = FALSE) %>%
add_circle_layer(
id = "poi-layer",
source = prueba2,
circle_color = "#e31a1c",
circle_radius = 8
)
Función Compare
IntentƩ hacer un ejercicio para comparar pero no tuve Ʃxito
m1 <- mapboxgl(access_token = token_mb) %>%
fit_bounds(prueba2, animate = FALSE) %>%
add_circle_layer(
id = "poi-layer",
source = prueba2,
circle_color = "#e31a1c",
circle_radius = 8
)
m2 <- mapboxgl(mapbox_style("satellite-streets"),
access_token = token_mb) %>%
fit_bounds(prueba2, animate = FALSE) %>%
add_circle_layer(
id = "poi-layer",
source = prueba2,
circle_color = "#e31a1c",
circle_radius = 8
)
compare(
map1 = m1,
map2 = m2,
width = "50%",
elementId = "poi-layer"
)
pero lo volverĆ© a intentar en los otros dĆas :), sin embargo puedes crear una con la librerĆa htmltools, aunque no me convence mucho.
library(htmltools)
browsable(
tagList(list(
tags$div(
style = 'width:50%;display:block;float:left;',
m1
),
tags$div(
style = 'width:50%;display:block;float:left;',
m2
)
))
)