ANTECEDENTES.
El presente trabajo se centra en el análisis del contexto territorial del Parque Clouthier, emplazado en la zona norponiente del municipio de San Pedro Garza García, Nuevo León. Dicha zona constituye el sector de mayor densidad poblacional del municipio y presenta retos socioeconómicos que contrastan con los altos niveles de ingreso que caracterizan al territorio municipal en su conjunto. El parque fue recientemente remodelado y su operación se realiza bajo la gestión de un organismo descentralizado, el cual se encarga de garantizar el mantenimiento y la programación de actividades.
El objetivo general es evaluar el potencial de proximidad del entorno inmediato para orientar decisiones de programación, vinculación comunitaria y gestión.
Se plantea analizar en qué medida el entorno cercano favorece la activación social del parque. En particular, se investiga:
¿En qué medida el entorno cercano favorece la activación social del Parque Clouthier?
¿Existe una concentración de equipamientos y servicios en el entorno inmediato con capacidad para articular acciones de comunicación comunitaria?
Acción: se cargan y se filtra la información requerida de las bases de datos disponibles.
Equipamientos.shp la cual forma parte del marco geoestadístico del Censo de Población y vivienda. Fuente: INEGI, 2020. En este hace un filter para extraer las ESCUELAS, específicamente de los municipios San Pedro Garza García (019) y Santa Catarina (048); así como de los AGEB específicos que son de interés para el ejercicio.
Directorio Estadístico Nacional de Unidade seconómicas (DENUE), de igual manera se extrae información por municipio, por ageb y específimente información información cuyo nombre mencione “comercio al por menor” en cualquiera de sus vertientes.
EQUIPAMIENTO_URB <- st_read("data/EQUIPAMIENTO/EQUIPAMIENTO_.shp",
stringsAsFactors = TRUE,
options = "ENCODING=UTF-8")
## options: ENCODING=UTF-8
## Reading layer `EQUIPAMIENTO_' from data source
## `C:\Users\jblan\Downloads\PROYECTO_SPP_PRO\DATA\EQUIPAMIENTO\EQUIPAMIENTO_.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 10231 features and 11 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 289245.7 ymin: 2571278 xmax: 507900.8 ymax: 3064606
## Projected CRS: WGS 84 / UTM zone 14N
DENUE_NL <- read_csv("data/DENUE_NL.csv",
locale = locale(encoding = "WINDOWS-1252"),
show_col_types = FALSE)
ESCUELAS_SP <- EQUIPAMIENTO_URB %>%
filter(GEOGRAFICO %in% c("Escuela"),
CVE_MUN %in% c("019", "048"),
CVE_AGEB %in% c("0193","023A","0403","0026","0011","0609","0327","0331"))
ESCUELAS_sf <- st_as_sf(ESCUELAS_SP, wkt = "geometry", crs = 6372)
ESCUELAS_wgs <- st_transform(ESCUELAS_sf,4326)
DENUE_SP_F <- DENUE_NL %>%
filter(municipio %in% c("San Pedro Garza García", "Santa Catarina"),
ageb %in% c("0193","023A","0403","0026","0011","0609","0327","0331")) %>%
filter(str_detect(str_to_lower(nombre_act),
stringr::fixed("comercio al por menor", ignore_case = TRUE))) %>%
select(nom_estab, nombre_act, nomb_asent, cve_mun, municipio, ageb, latitud, longitud)
Acción: contabilizar comercios al por menor y agrupar en la categoría “otras” aquellos que tengan una frecuencia menor para facilitar la graficación de la información.
Tabla_ue<- DENUE_SP_F %>%
count(nombre_act)
Tabla_top <- Tabla_ue %>%
mutate(nombre_act = fct_lump_n(nombre_act, n = 15, w = n, other_level = "Otras")) %>%
group_by(nombre_act) %>% summarise(n = sum(n), .groups = "drop") %>%
arrange(desc(n))
Acción: obtener ubicación del Parque a través de OSM.
parque <- tibble(direccion = "Parque Clouthier, San Pedro Garza García, Nuevo León, México") %>%
tidygeocoder::geocode(
address = direccion,
method = "osm",
limit = 1,
full_results = TRUE,
custom_query = list(countrycodes = "MX")
)
## Passing 1 address to the Nominatim single address geocoder
## Query completed in: 1 seconds
Acción: cálculo de isócronas “foot”
isocrona <- osrmIsochrone(loc = c(parque$long, parque$lat),
breaks = seq(from=0,to=20,by=5),
res = 35,
osrm.profile = "foot")
Acción: cálculo de isócronas “bike”
isocrona2 <- osrmIsochrone(loc = c(parque$long, parque$lat),
breaks = seq(from=0,to=20,by=5),
res = 35,
osrm.profile = "bike")
Acción: definición de escuelas dentro del rango de las isócronas.
ESCUELAS_ISO1 <- st_intersection(ESCUELAS_wgs, isocrona)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
Se presenta la ubicación de referencia del Parque Clouthier con el fin de situar su posición relativa en el contexto urbano, así como su área de influencia cotidiana.
leaflet(parque) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addMarkers(~long, ~lat, popup = ~display_name)%>%
addMiniMap(tiles=providers$CartoDB.Positron)
Se visualiza la intensidad espacial del comercio al por menor en el entorno del parque mediante un mapa de calor. Este insumo permite identificar manchas de concentración y posibles corredores de actividad, útiles para la difusión territorial de la programación y para la articulación con actores locales.
## Assuming "long" and "lat" are longitude and latitude, respectively
Se sintetiza la composición de giros mediante una gráfica de barras que destaca la preponderancia de tiendas de abarrotes, ultramarinos y misceláneas. Tales giros operan como nodos barriales de interacción, constituyendo canales idóneos para apoyo logístico y comunicación comunitaria, así como para estrategias de comercio de proximidad vinculadas a actividades del parque.
ggplot(Tabla_top, aes(x = fct_reorder(nombre_act, n), y = n)) +
geom_col(width = 0.8) +
coord_flip(clip = "off") +
scale_x_discrete(labels = function(x) str_wrap(x, width = 45)) +
theme_minimal(base_size = 10) +
theme(
axis.text.y = element_text(size = 6.5, lineheight = 0.95),
axis.title = element_blank())+
theme(panel.spacing = grid::unit(12, "pt"))+
geom_col(aes(fill = nombre_act),
colour = "black",
alpha = 1.0) +
guides(fill = "none")
Se evalúa la accesibilidad peatonal mediante isócronas en rangos de 5 minutos hasta 20–25 minutos, sobre las que se superpone el equipamiento educativo cercano. Los resultados muestran una masa crítica de escuelas dentro de tiempos razonables a pie, favorable a la educación cívica y ambiental, así como a procesos de apropiación temprana del espacio público por parte de niñas, niños y familias del entorno.
leaflet(isocrona) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(fillColor = ~colorBin("YlOrRd", domain = isocrona$isomax)(isomax),
color = NA,
fillOpacity = 0.5) %>%
addMarkers(data=parque)%>%
addMiniMap(tiles=providers$CartoDB.Positron)
## Assuming "long" and "lat" are longitude and latitude, respectively
leaflet(isocrona) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(fillColor = ~colorBin("YlOrRd", domain = isocrona$isomax)(isomax),
color = NA,
fillOpacity = 0.5) %>%
addMarkers(data=parque)%>%
addCircleMarkers(data=ESCUELAS_ISO1,
radius=3,
stroke=FALSE,
fillOpacity =0.85,
color="forestgreen")%>%
addMiniMap(tiles=providers$CartoDB.Positron)
## Assuming "long" and "lat" are longitude and latitude, respectively
Dado el emplazamiento en el límite con el municipio de Santa Catarina, se explora la proximidad en bicicleta para valorar el alcance intermunicipal del parque. Esta dimensión permite identificar oportunidades de conectividad activa y coordinación con redes educativas y vecinales del municipio colindante, en complemento con iniciativas como biciescuela.
leaflet(isocrona2) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(fillColor = ~colorBin("YlOrRd", domain = isocrona$isomax)(isomax),
color = NA,
fillOpacity = 0.5) %>%
addMarkers(data=parque)%>%
addCircleMarkers(data=ESCUELAS_wgs,
radius=3,
stroke=FALSE,
fillOpacity =0.85,
color="forestgreen")%>%
addMiniMap(tiles=providers$CartoDB.Positron)
## Assuming "long" and "lat" are longitude and latitude, respectively
Acción: definición de estructura para el ruteo.
ruteo_funcion <- function(nombre_origen, lon_origen, lat_origen,
nombre_destino, lon_destino, lat_destino)
{
ruta <- osrmRoute(src = c(lon_origen, lat_origen),
dst = c(lon_destino, lat_destino),
overview = "full",
osrm.profile = "foot")
ruta %>%
mutate(src=nombre_origen,
dst=nombre_destino)
}
ESCUELAS_wgs <- ESCUELAS_wgs %>%
mutate(long = st_coordinates(.)[,1],
lat = st_coordinates(.)[,2]) %>%
st_drop_geometry()
ruteo <- list("PARQUE CLOUTHIER", parque$long, parque$lat,
ESCUELAS_wgs$CVE_SERV,ESCUELAS_wgs$long, ESCUELAS_wgs$lat)
ruteo <- pmap(ruteo, ruteo_funcion)
ruteo <- ruteo %>%
reduce(rbind)
paleta <- c(low="gold", high= "deeppink4")
Se incorporan rutas desde el parque hacia escuelas ubicadas dentro de los rangos de accesibilidad definidos, reportando distancias y tiempos estimados. Este insumo posibilita la priorización de alianzas por cercanía efectiva, el ajuste de horarios y la evaluación de recorridos seguros para visitas y actividades pedagógicas.
leaflet(ruteo) %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolylines(color = ~colorNumeric(paleta, ruteo$distance)(distance),
label = paste("Desde", ruteo$src, "hasta", ruteo$dst, "|", "Distancia:", round(ruteo$distance, 2), "km", "|", "Duración:", round(ruteo$duration, 2), "min")) %>%
addLegend("bottomright", pal = colorNumeric(paleta, ruteo$distance), values = ~distance,
title = "Distancia",
labFormat = labelFormat(suffix = "km")) %>%
addCircleMarkers(data=parque, ~long, ~lat,
popup = paste("ORIGEN:PARQUE CLOUTHIER"),
color="white",
fillOpacity = 1,
radius=8) %>%
addCircleMarkers(data=ESCUELAS_wgs, ~long, ~lat,
popup = paste("DESTINO:", ESCUELAS_wgs$CVE_SERV),
color="gray",
fillOpacity = 1,
radius=6)%>%
addMiniMap(tiles=providers$CartoDB.DarkMatter)
Se constata una alta densidad de comercio al por menor en el entorno del parque, con giro dominante de abarrotes/misceláneas, lo que sugiere capacidad para difusión territorial y apoyo comunitario a la programación. Se verifican niveles de accesibilidad peatonal suficientes hacia equipamientos educativos relevantes, condición que favorece el diseño de actividades formativas y su continuidad. La dimensión intermunicipal ofrece posibilidades adicionales de articulación mediante movilidad activa.