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

https://inegi.org.mx/contenidos/productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marcogeo/794551132173_s.zip

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