Video con la explicación del código https://youtu.be/DTD1G0Qkuts?si=Bd7iy8ZYUNciSh4T
Datos del Directorio Estadístico Nacional de Unidades Económicas (DENUE) en la plataforma del INEGI
https://www.inegi.org.mx/app/descarga/
Para el estado de Coahuila de Zaragoza
https://www.inegi.org.mx/contenidos/masiva/denue/denue_05_shp.zip
Código de actividad SCIAN https://www.inegi.org.mx/scian/#
ruta<-"C:/Users/cguer/Documents/Claudia/Midropbox/Investigacion y escritos/karamanis/data/conjunto_de_datos/"
infile <- "denue_inegi_05_.shp"
nomarchi<-as.filename(paste0(ruta,infile))
a<-"SELECT * FROM denue_inegi_05 WHERE cve_mun ='035'AND codigo_act in ('622111','622112','622211','622212','622311','622312')"
a<-"SELECT * FROM denue_inegi_05 WHERE cve_mun ='035'AND codigo_act in ('622111','622112','622211','622212')"
datadenuet<- read_sf(nomarchi,options = "ENCODING=latin1",query=a)
#datadenuet<- read_sf(nomarchi,options = "ENCODING=latin1")
datadenuet= st_transform(datadenuet, crs = 4326)
datadenuet_geom <- st_geometry(datadenuet)
Contexto geográfico
Incorporación de la zona municipal de Torreón en el polígono urbano Uso de consultas para la lectura filtrada del Shapefile del contexto estatal filtrado municipal
ruta<-"C:/Users/cguer/Documents/Claudia/Midropbox/Investigacion y escritos/karamanis/data/conjunto_de_datos/"
infile <- "05mun.shp"
nomarchi<-as.filename(paste0(ruta,infile))
nomfil<-"05mun"
a<-"SELECT * FROM \"05mun\" WHERE CVE_ENT = '05' AND CVE_MUN='035'"
datageot<- read_sf(nomarchi,options = "ENCODING=latin1",query=a)
datageot= st_transform(datageot, crs = 4326)
datageo_geom <- st_geometry(datageot)
polygon = st_cast(datageo_geom, "POLYGON")
tor<-polygon[2]
plot(polygon)
plot(polygon[2])
Incorporación de contexto vial como referencia local de ubicación uso de librería OSMDATA Elección territorial del polígono de Torreón urbano (polygon[2])
Delimitación en el área urbana del municipio de Torreón
city = "Torreón Coahuila"
viasosm <- opq(city) %>%
add_osm_feature(key = "highway") %>%
osmdata_sf()
viasosm_sf <- viasosm$osm_lines
st_crs(viasosm_sf) <-4326
recorteviasosm_sf <-viasosm_sf[tor, ]
recorteviasosm_sf <-viasosm_sf|> st_intersection(tor)
recorteviasosm_sf <-subset(recorteviasosm_sf,recorteviasosm_sf$highway %in% c("primary","secondary","tertiary"))
recortedenue_sf <-datadenuet|> st_intersection(tor)
#recortedenue_sf <-subset(recortedenue_sf,recortedenue_sf$codigo_act %in% c("622111","622112","622211","622212","622311","622312"))
#recortedenue_sf <-subset(recortedenue_sf,recortedenue_sf$codigo_act %in% c("541120"))
recortedenue_sf <-subset(recortedenue_sf,recortedenue_sf$per_ocu %in% c("101 a 250 personas","251 y más personas","51 a 100 personas"))
recortedenue_sf$id2<-paste0(recortedenue_sf$latitud,recortedenue_sf$longitud)
recortedenue_sf$id3<- as.integer(row.names(recortedenue_sf))
# Plotting the rough maps
g <- ggplot() +
geom_sf(data = tor, fill = NA) +
geom_sf(data = recorteviasosm_sf, fill = NA, linewidth = 0.1) +
geom_sf(
data = recortedenue_sf,
# alpha = 0.3,
size = 1,
color="red"
) +
labs(
title = "Puntos DENUE"
) +
theme_minimal(
base_family = "body_font",
base_line_size = unit(0.1, "mm")
) +
theme(
plot.title = element_text(size = 30)
)
g
Preparación con la librería de OSRM que proporciona la información de las rutas más cortas Con el paquete osrm que dirige las consultas al servidor OSRM Generación de la simulación de puntos dentro del polígono municipal de Torreón para la deerminación de la ruta más corta al hospital más cercano
torpuntos <- st_cast(tor, "POINT")
#Get unique coords
coords = as.data.frame(unique(st_coordinates(torpuntos)))
lonmin<-min(coords$X)
lonmax<-max(coords$X)
latmin<-min(coords$Y)
latmax<-max(coords$Y)
#Asses minimimun and unique
#Generación de 1000 puntos distribuidos dentro de esos márgenes
# Generación de dos corridas de 1000 con seed 123 y seed 321 para crear dftt y no perder las coordenadas de fuentes y destinos
n <- 1000
set.seed(123)
puntosaleaotrios <- tibble(id=1:n,
lon = runif(n, min = lonmin, max = lonmax),
lat = runif(n, min = latmin, max = latmax))
#class(puntosaleaotrios)
puntosaleatorios_sf<-puntosaleaotrios %>% st_as_sf(coords = c("lon", "lat"), crs = st_crs(4326))
puntosaleatorios_sf <-puntosaleatorios_sf|> st_intersection(tor)
#Acotar los puntos a las zonas habitadas por las AGEB
ruta<-"C:/Users/cguer/Documents/Claudia/Midropbox/Investigacion y escritos/karamanis/data/conjunto_de_datos/"
infile <- "05a.shp"
nomarchi<-as.filename(paste0(ruta,infile))
nomfil<-"05a"
a<-"SELECT * FROM \"05a\" WHERE CVE_ENT = '05' AND CVE_MUN='035'"
datageotab<- read_sf(nomarchi,options = "ENCODING=latin1",query=a)
datageotab= st_transform(datageotab, crs = 4326)
puntosaleatorios_sf <-puntosaleatorios_sf|> st_intersection(datageotab)
puntosaleatorios_sf$id<- as.integer(row.names(puntosaleatorios_sf))
# Plotting the rough maps
g <- ggplot() +
geom_sf(data = tor, fill = NA) +
geom_sf(data = recorteviasosm_sf, fill = NA, linewidth = 0.1) +
geom_sf(
data = recortedenue_sf,
# alpha = 0.3,
size = 1,
color="red"
) +
geom_sf(
data = puntosaleatorios_sf,
# alpha = 0.3,
size = 1,
color="navyblue"
) +
labs(
title = "Hospitales y puntos aleatorios"
) +
theme_minimal(
base_family = "body_font",
base_line_size = unit(0.1, "mm")
) +
theme(
plot.title = element_text(size = 30)
)
g
La identificación de la ruta a través del servido OSRM Se utiliza la
función osrmTable(origen,destino) El origen será simulado por los puntos
aleatorios y el destino serán las unidades hospitalarias identificadas
en el DENUE. Se alcula el tiempo de traslado
nomfile<-paste0("C:/Users/cguer/Documents/Claudia/Midropbox/Investigacion y escritos/karamanis/data/","sourcedestdosgeom.shp")
#referencia documental a archivo Proximidadhospitalariaurbana.Rmd
simulacionhosp<- read_sf(nomfile,options = "ENCODING=latin1")
#simulacionhosp<- st_join(simulacionhosp, recortedenue_sf, by=c('dest'='id3'))
Agrupamiento de hospitales y puntos aleatorios
breaks <- classInt::classIntervals(simulacionhosp$tiempo, n=10, style='equal')
names(breaks)
[1] “var” “brks”
simulacionhosp$clasif<-cut(simulacionhosp$tiempo, breaks = breaks$brks, include.lowest = TRUE)
simulacionhospg<-simulacionhosp%>%
group_by(nom_stb,dest, clasif) %>%
summarize(Cuenta = n())
simulacionhospg <-as.data.frame(simulacionhospg)
simulacionhospg <- simulacionhospg %>%
dplyr::select(-geometry)
simulacionhospg2 <- left_join(simulacionhospg, recortedenue_sf, by=c('dest'='id3'))
#class(simulacionhospg2)
dft<-dplyr::select(simulacionhospg2, nom_stb, dest, clasif, Cuenta,`_ogr_geometry_`)
data_sf <- dft %>%
st_as_sf()
library(cptcity)
colors <- paletteer::paletteer_d("Polychrome::light")
colors <- paletteer::paletteer_d("khroma::soil")
colors <- paletteer::paletteer_d("Polychrome::kelly")
colors <- paletteer::paletteer_d("trekcolors::lcars_cardassian")
source("grafhospi.R")
source("grafhospicla.R")
source("grafhospi2.R")
Hospitalales y tiempo desde los puntos aleatorios
Rangos de tiempo desde los puntos aleatorioas al hospital
Hospitalales y tiempo desde los puntos aleatorios