library(readxl)
library(dplyr)
library(janitor)
library(stringr)
library(sf)
library(ggplot2)
library(patchwork)
library(scales)
library(knitr)
library(kableExtra)
library(tidyr)
ruta_excel <- "C:/Users/Erick Caicedo Ruiz/Desktop/Maestría Ciencia de Datos/Casos/EncuestaOrigenDestino.xlsx"

ruta_shape <- "C:/Users/Erick Caicedo Ruiz/Desktop/Maestría Ciencia de Datos/Casos/cali/Comunas.shp"
bd <- read_excel(ruta_excel, sheet = "Sheet4") %>%
  clean_names()

comunas <- st_read(ruta_shape, quiet = TRUE) %>%
  clean_names()
names(bd)
names(comunas)
bd <- bd %>%
  rename(
    comuna_origen = comunaorigen,
    comuna_destino = comunadestino,
    tipo_vehiculo = tipodevehiculo
  ) %>%
  mutate(
    comuna_origen = as.character(comuna_origen),
    comuna_destino = as.character(comuna_destino),
    tipo_vehiculo = str_trim(as.character(tipo_vehiculo)),
    tipo_vehiculo_num = suppressWarnings(as.numeric(tipo_vehiculo))
  )

comunas <- comunas %>%
  mutate(
    comuna = as.character(comuna)
  )
origen_bicicleta <- bd %>%
  filter(tipo_vehiculo_num == 1) %>%
  count(comuna_origen, name = "origen_bicicleta") %>%
  rename(comuna = comuna_origen)

origen_moto <- bd %>%
  filter(tipo_vehiculo_num == 2) %>%
  count(comuna_origen, name = "origen_moto") %>%
  rename(comuna = comuna_origen)

origen_automovil <- bd %>%
  filter(tipo_vehiculo_num == 3) %>%
  count(comuna_origen, name = "origen_automovil") %>%
  rename(comuna = comuna_origen)

destino_bicicleta <- bd %>%
  filter(tipo_vehiculo_num == 1) %>%
  count(comuna_destino, name = "destino_bicicleta") %>%
  rename(comuna = comuna_destino)

destino_moto <- bd %>%
  filter(tipo_vehiculo_num == 2) %>%
  count(comuna_destino, name = "destino_moto") %>%
  rename(comuna = comuna_destino)

destino_automovil <- bd %>%
  filter(tipo_vehiculo_num == 3) %>%
  count(comuna_destino, name = "destino_automovil") %>%
  rename(comuna = comuna_destino)
origen_total <- bd %>%
  filter(!is.na(comuna_origen)) %>%
  count(comuna_origen, name = "origen_total") %>%
  rename(comuna = comuna_origen)

destino_total <- bd %>%
  filter(!is.na(comuna_destino)) %>%
  count(comuna_destino, name = "destino_total") %>%
  rename(comuna = comuna_destino)
mapa_comunas <- comunas %>%
  left_join(origen_total, by = "comuna") %>%
  left_join(origen_bicicleta, by = "comuna") %>%
  left_join(origen_moto, by = "comuna") %>%
  left_join(origen_automovil, by = "comuna") %>%
  left_join(destino_total, by = "comuna") %>%
  left_join(destino_bicicleta, by = "comuna") %>%
  left_join(destino_moto, by = "comuna") %>%
  left_join(destino_automovil, by = "comuna") %>%
  mutate(
    across(
      c(origen_total, origen_bicicleta, origen_moto, origen_automovil,
        destino_total, destino_bicicleta, destino_moto, destino_automovil),
      ~replace_na(., 0)
    )
  )
crear_mapa <- function(data, variable, titulo) {
  ggplot(data) +
    geom_sf(aes(fill = .data[[variable]]), color = "white", linewidth = 0.35) +
    geom_sf_text(aes(label = comuna), size = 3, color = "black") +
    scale_fill_gradient(
      low = "#EAF3F8",
      high = "#08519C",
      labels = comma,
      name = "Cantidad"
    ) +
    labs(title = titulo) +
    theme_void() +
    theme(
      plot.title = element_text(face = "bold", size = 13, hjust = 0.5),
      legend.position = "right",
      legend.title = element_text(size = 9, face = "bold"),
      legend.text = element_text(size = 8),
      plot.margin = margin(10, 10, 10, 10)
    )
}
resumen_comunas <- mapa_comunas %>%
  st_drop_geometry() %>%
  select(
    comuna, nombre,
    origen_total, origen_bicicleta, origen_moto, origen_automovil,
    destino_total, destino_bicicleta, destino_moto, destino_automovil
  )
mapa_origen_total <- crear_mapa(mapa_comunas, "origen_total", "Concentración de origen por comuna")
mapa_origen_bicicleta <- crear_mapa(mapa_comunas, "origen_bicicleta", "Origen por bicicleta")
mapa_origen_moto <- crear_mapa(mapa_comunas, "origen_moto", "Origen por moto")
mapa_origen_automovil <- crear_mapa(mapa_comunas, "origen_automovil", "Origen por automóvil")

mapa_destino_total <- crear_mapa(mapa_comunas, "destino_total", "Concentración de destino por comuna")
mapa_destino_bicicleta <- crear_mapa(mapa_comunas, "destino_bicicleta", "Destino por bicicleta")
mapa_destino_moto <- crear_mapa(mapa_comunas, "destino_moto", "Destino por moto")
mapa_destino_automovil <- crear_mapa(mapa_comunas, "destino_automovil", "Destino por automóvil")

1. Introducción

El presente informe desarrolla un análisis espacial de la Encuesta Origen-Destino de Cali, utilizando como unidad territorial de análisis las comunas de la ciudad. El propósito es identificar patrones de concentración de viajes según lugar de origen, lugar de destino y modo de transporte. Para ello, se construyeron ocho mapas temáticos: concentración general de origen, origen por bicicleta, origen por moto, origen por automóvil, concentración general de destino, destino por bicicleta, destino por moto y destino por automóvil.

El análisis se apoya en la integración de una base tabular de encuestas con una capa espacial de comunas. Los modos de transporte se clasificaron de acuerdo con las convenciones de la encuesta, donde bicicleta corresponde al código 1, moto al código 2 y automóvil al código 3. :contentReferenceoaicite:0

2. Metodología

La metodología aplicada consistió en cuatro etapas. Primero, se realizó la lectura y limpieza de la base de datos de la Encuesta Origen-Destino. Segundo, se homologaron las variables de comuna de origen, comuna de destino y tipo de vehículo. Tercero, se calcularon frecuencias absolutas por comuna para cada variable de interés. Finalmente, se integraron estos resultados con el shapefile de comunas de Cali para construir mapas temáticos mediante sf y ggplot2.

Este procedimiento permite observar la distribución espacial de los viajes y comparar la concentración territorial entre modos de transporte. La intensidad del color representa la cantidad de registros asociados a cada comuna: los tonos más claros indican menor concentración y los tonos más oscuros indican mayor concentración.

3. Resultados del análisis espacial

3.1 Comparación general entre comunas de origen y destino

En esta sección se comparan los patrones generales de concentración espacial de los viajes según comuna de origen y comuna de destino. Esta lectura permite observar qué comunas funcionan principalmente como puntos de salida de los desplazamientos y cuáles concentran la llegada de los viajes registrados en la encuesta.

Al comparar los mapas generales de origen y destino, se observa un patrón bastante claro en la estructura de la movilidad de la ciudad. La comuna 2 destaca con la mayor intensidad en ambos mapas, pero es especialmente fuerte en el de destino, lo que indica que no solo genera muchos viajes, sino que concentra aún más llegadas. Esto sugiere que funciona como un punto central dentro de la dinámica urbana.

También se ve un eje importante en el centro–occidente, donde comunas como la 19, 3 y 1 presentan tonos relativamente altos, tanto en origen como en destino. En particular, la comuna 3 gana más peso en el mapa de destino, lo que refuerza su papel como zona de atracción de viajes. Por otro lado, las comunas 17 y 18 muestran una participación relevante en origen, pero con menor intensidad en destino, lo que podría indicar que desde estas zonas salen más viajes de los que llegan.

En contraste, las comunas del oriente, como la 13, 14 y 21, aparecen con tonos mucho más claros en ambos mapas, evidenciando una menor participación en el total de desplazamientos. En conjunto, lo que muestran los mapas es una ciudad donde los viajes se están concentrando hacia un corredor central y occidental, con menor intensidad en las zonas orientales.

mapa_origen_total <- crear_mapa(
  mapa_comunas,
  "origen_total",
  "Concentración de origen por comuna"
)

mapa_destino_total <- crear_mapa(
  mapa_comunas,
  "destino_total",
  "Concentración de destino por comuna"
)

mapa_origen_total + mapa_destino_total

top_origen_total <- resumen_comunas %>%
  arrange(desc(origen_total)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = origen_total
  )

top_destino_total <- resumen_comunas %>%
  arrange(desc(destino_total)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = destino_total
  )
top_origen_total <- resumen_comunas %>%
  arrange(desc(origen_total)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = origen_total
  )

top_destino_total <- resumen_comunas %>%
  arrange(desc(destino_total)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = destino_total
  )

Al mirar el top 5 de comunas de origen, se nota que la mayor cantidad de viajes se concentra principalmente en unas pocas zonas de la ciudad. La comuna 2 lidera claramente como el principal punto de salida, seguida muy de cerca por la comuna 19, lo que indica que en estas áreas hay una alta generación de desplazamientos, posiblemente asociada a una fuerte presencia residencial o a dinámicas cotidianas intensas. También aparecen comunas como la 17, 3 y 18, que aunque con menor volumen, siguen teniendo un peso importante dentro del total de viajes.

En conjunto, este patrón sugiere que buena parte de los desplazamientos en la ciudad se están originando en estas comunas, lo que las convierte en zonas clave para entender la demanda de movilidad. Esto es importante porque permite identificar dónde se concentra la presión inicial sobre el sistema de transporte y, por tanto, dónde podrían priorizarse mejoras en conectividad, oferta de transporte o infraestructura.

tabla_origen <- top_origen_total %>%
  kable(
    caption = "Top 5 comunas de origen",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )

tabla_origen
Top 5 comunas de origen
Ranking Comuna Nombre Viajes
1 2 Comuna 2 2968
2 19 Comuna 19 2850
3 17 Comuna 17 2377
4 3 Comuna 3 2121
5 18 Comuna 18 1536

En el caso de las comunas de destino, se observa una concentración aún más marcada de los viajes. La comuna 2 se mantiene como el principal punto de llegada, con una diferencia considerable frente a las demás, lo que refuerza su papel como una de las principales centralidades de la ciudad. Le siguen las comunas 3 y 19, que también reciben un alto volumen de desplazamientos, lo que sugiere que en estas zonas se concentran actividades clave como empleo, comercio o servicios.

También aparecen las comunas 17 y 22 dentro del top 5, lo que indica que no solo las zonas tradicionales del centro concentran la llegada de viajes, sino que hay otras áreas que también están funcionando como polos de atracción. En conjunto, estos resultados muestran que los destinos están más concentrados que los orígenes, lo que es coherente con una dinámica urbana donde muchas personas se desplazan hacia ciertos puntos específicos para realizar sus actividades diarias.

tabla_destino <- top_destino_total %>%
  kable(
    caption = "Top 5 comunas de destino",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )


tabla_destino
Top 5 comunas de destino
Ranking Comuna Nombre Viajes
1 2 Comuna 2 4810
2 3 Comuna 3 3859
3 19 Comuna 19 3158
4 17 Comuna 17 2164
5 22 Comuna 22 1860

3.2 Movilidad en bicicleta: comparación origen y destino

Al mirar con detalle los mapas de origen y destino en bicicleta, se ve un patrón bastante claro y consistente. La comuna 2 sobresale como el principal punto tanto de salida como de llegada, con la mayor intensidad en ambos mapas. A su alrededor, las comunas 19, 3 y 17 también muestran tonos relativamente oscuros, lo que indica que en este sector de la ciudad hay una mayor concentración de viajes en bicicleta.

Algo importante es que las mismas comunas aparecen fuertes tanto en origen como en destino, lo que sugiere que muchos de estos viajes se están dando dentro de estas zonas o entre comunas cercanas. Es decir, no se observan grandes desplazamientos hacia otras partes de la ciudad, sino más bien una dinámica localizada. Esto se refuerza al ver que comunas del oriente como la 13, 14 y 21 tienen una presencia mucho más baja en ambos mapas.

También se nota que el mapa de destino tiene una intensidad ligeramente mayor en algunas comunas frente al de origen, especialmente en la comuna 2, lo que puede indicar que este sector no solo genera viajes en bicicleta, sino que también actúa como un punto de atracción. En conjunto, el patrón muestra que el uso de la bicicleta está concentrado en un corredor centro–norte y centro–occidente, con menor presencia hacia el oriente de la ciudad.

mapa_origen_bicicleta <- crear_mapa(
  mapa_comunas,
  "origen_bicicleta",
  "Origen en bicicleta por comuna"
)

mapa_destino_bicicleta <- crear_mapa(
  mapa_comunas,
  "destino_bicicleta",
  "Destino en bicicleta por comuna"
)

mapa_origen_bicicleta + mapa_destino_bicicleta

top_origen_bicicleta <- resumen_comunas %>%
  arrange(desc(origen_bicicleta)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = origen_bicicleta
  )

top_destino_bicicleta <- resumen_comunas %>%
  arrange(desc(destino_bicicleta)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = destino_bicicleta
  )

Al revisar el top 5 de comunas de origen en bicicleta, se nota que este modo de transporte se concentra principalmente en unas pocas zonas de la ciudad. La comuna 2 lidera nuevamente como el principal punto de salida, seguida por las comunas 19 y 17, que presentan valores muy similares, lo que indica una dinámica bastante activa en estos territorios. También aparecen las comunas 18 y 3, aunque con menor volumen, pero aún relevantes dentro del total.

Este patrón sugiere que el uso de la bicicleta no está distribuido de forma homogénea, sino que depende mucho de ciertas condiciones locales, como la cercanía entre destinos, la infraestructura disponible o las características del entorno urbano. En ese sentido, estas comunas se pueden entender como zonas donde ya existe una base importante de uso de la bicicleta, lo que las convierte en puntos clave para fortalecer este tipo de movilidad.

tabla_origen_bicicleta <- top_origen_bicicleta %>%
  kable(
    caption = "Top 5 comunas de origen en bicicleta",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )
tabla_origen_bicicleta
Top 5 comunas de origen en bicicleta
Ranking Comuna Nombre Viajes
1 2 Comuna 2 159
2 19 Comuna 19 141
3 17 Comuna 17 141
4 18 Comuna 18 111
5 3 Comuna 3 99

En el caso de las comunas de destino en bicicleta, se mantiene un patrón bastante similar al de origen, aunque con una ligera mayor concentración en ciertos puntos. La comuna 2 vuelve a aparecer como el principal lugar de llegada, lo que refuerza su papel como una zona clave dentro de la dinámica de movilidad en bicicleta. Le siguen las comunas 3 y 19, que también concentran un número importante de viajes, mientras que las comunas 17 y 22 completan el top 5.

Lo interesante aquí es que varias comunas coinciden entre origen y destino, lo que sugiere que muchos de los viajes en bicicleta se están realizando dentro de las mismas zonas o entre comunas cercanas. Esto es coherente con el uso típico de la bicicleta para trayectos cortos. Además, el hecho de que algunas comunas concentren más llegadas que salidas puede indicar que funcionan como pequeños polos de atracción a escala local, lo cual es clave para pensar en la planificación de infraestructura ciclista más conectada y eficiente.

tabla_destino_bicicleta <- top_destino_bicicleta %>%
  kable(
    caption = "Top 5 comunas de destino en bicicleta",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )

tabla_destino_bicicleta
Top 5 comunas de destino en bicicleta
Ranking Comuna Nombre Viajes
1 2 Comuna 2 218
2 3 Comuna 3 189
3 19 Comuna 19 147
4 17 Comuna 17 115
5 22 Comuna 22 100

3.3 Movilidad en moto: comparación origen y destino

Al observar los mapas de origen y destino en moto, se ve un patrón muy claro: la comuna 2 es el punto más fuerte tanto de salida como de llegada, destacándose con la mayor intensidad en ambos mapas. Junto a esta, las comunas 19 y 3 también presentan tonos oscuros, lo que indica que concentran una parte importante de los viajes en moto, especialmente en el centro y suroccidente de la ciudad.

En el caso del destino, la concentración se vuelve aún más marcada en la comuna 2, lo que sugiere que esta zona no solo genera viajes, sino que también atrae una gran cantidad de desplazamientos en moto. Además, se observa que comunas como la 17 y la 10 mantienen una presencia relevante en ambos mapas, lo que indica una dinámica constante de entradas y salidas.

Por otro lado, comunas del oriente como la 13, 14 y 21 aparecen con tonos mucho más claros en ambos mapas, lo que muestra una menor participación en este tipo de movilidad. En conjunto, el patrón evidencia que los viajes en moto están fuertemente concentrados en el corredor centro–norte y centro–occidente de la ciudad, con menor intensidad hacia el oriente.

mapa_origen_moto <- crear_mapa(
  mapa_comunas,
  "origen_moto",
  "Origen en moto por comuna"
)

mapa_destino_moto <- crear_mapa(
  mapa_comunas,
  "destino_moto",
  "Destino en moto por comuna"
)
mapa_origen_moto + mapa_destino_moto

top_origen_moto <- resumen_comunas %>%
  arrange(desc(origen_moto)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = origen_moto
  )

top_destino_moto <- resumen_comunas %>%
  arrange(desc(destino_moto)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = destino_moto
  )

Al revisar el top 5 de comunas de origen en moto, se refuerza lo que ya se veía en el mapa: la comuna 2 concentra claramente la mayor cantidad de salidas, con una diferencia importante frente a las demás. Luego aparecen las comunas 19 y 17, que también tienen un volumen alto de viajes, seguidas por las comunas 3 y 18.

Este resultado muestra que la generación de viajes en moto está bastante concentrada en estas zonas, especialmente en el corredor centro–occidente de la ciudad. Además, el hecho de que estas mismas comunas ya aparecieran con tonos más intensos en el mapa confirma que no es un caso aislado, sino un patrón consistente.

En términos prácticos, esto indica que desde estas comunas se está ejerciendo una mayor presión sobre la movilidad en moto, lo que puede estar relacionado con necesidades de desplazamiento más frecuentes o con condiciones que favorecen el uso de este tipo de vehículo.

tabla_origen_moto <- top_origen_moto %>%
  kable(
    caption = "Top 5 comunas de origen en moto",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )

tabla_origen_moto
Top 5 comunas de origen en moto
Ranking Comuna Nombre Viajes
1 2 Comuna 2 1414
2 19 Comuna 19 1280
3 17 Comuna 17 1136
4 3 Comuna 3 970
5 18 Comuna 18 746

En el caso de las comunas de destino en moto, se mantiene el mismo patrón que se observaba en el mapa, pero con una concentración aún más marcada. La comuna 2 vuelve a ocupar el primer lugar con una diferencia clara frente a las demás, lo que confirma que es el principal punto de llegada de los viajes en este modo. Le siguen las comunas 3 y 19, que también reciben un volumen importante de desplazamientos, consolidando ese eje central de atracción.

También es interesante ver que la comuna 22 aparece dentro del top 5, a diferencia del origen, lo que sugiere que esta zona está recibiendo más viajes en moto de los que genera. En cambio, comunas como la 18, que sí aparecían en el origen, salen del ranking en destino, lo que refuerza la idea de que desde allí se están generando más viajes que los que llegan.

En conjunto, estos datos confirman lo que se veía en los mapas: los destinos en moto están más concentrados que los orígenes, especialmente hacia el centro de la ciudad, lo que muestra una clara dinámica de desplazamiento hacia zonas específicas.

tabla_destino_moto <- top_destino_moto %>%
  kable(
    caption = "Top 5 comunas de destino en moto",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )


tabla_destino_moto
Top 5 comunas de destino en moto
Ranking Comuna Nombre Viajes
1 2 Comuna 2 2177
2 3 Comuna 3 1734
3 19 Comuna 19 1421
4 17 Comuna 17 927
5 22 Comuna 22 911

3.4 Movilidad en automóvil: comparación origen y destino

Al observar los mapas de origen y destino en automóvil, se repite un patrón muy similar al que ya se veía en los otros modos, pero con una concentración aún más marcada en ciertas comunas. La comuna 2 vuelve a destacarse como el principal punto tanto de salida como de llegada, con una intensidad claramente superior, especialmente en el mapa de destino, donde se consolida como el mayor receptor de viajes en vehículo particular.

También se nota un eje fuerte en el centro–occidente, donde comunas como la 19 y la 3 presentan tonos altos en ambos mapas, lo que indica que no solo generan viajes, sino que también reciben una cantidad importante. En el caso de la comuna 17, su presencia es más fuerte en origen que en destino, lo que sugiere que desde allí salen más viajes en automóvil de los que llegan.

Por otro lado, las comunas del oriente, como la 13, 14 y 21, aparecen con niveles bajos en ambos mapas, lo que indica una menor participación en este tipo de movilidad. En conjunto, el patrón muestra que el uso del automóvil está fuertemente concentrado en el corredor centro–norte y centro–occidente de la ciudad, con una clara atracción hacia las comunas más centrales.

mapa_origen_automovil <- crear_mapa(
  mapa_comunas,
  "origen_automovil",
  "Origen en automóvil por comuna"
)

mapa_destino_automovil <- crear_mapa(
  mapa_comunas,
  "destino_automovil",
  "Destino en automóvil por comuna"
)

mapa_origen_automovil + mapa_destino_automovil

top_origen_automovil <- resumen_comunas %>%
  arrange(desc(origen_automovil)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = origen_automovil
  )

top_destino_automovil <- resumen_comunas %>%
  arrange(desc(destino_automovil)) %>%
  slice_head(n = 5) %>%
  mutate(Ranking = row_number()) %>%
  select(
    Ranking,
    Comuna = comuna,
    Nombre = nombre,
    Viajes = destino_automovil
  )

Al revisar el top 5 de comunas de origen en automóvil, se observa un comportamiento interesante frente a lo que mostraban los mapas. A diferencia de otros modos, aquí la comuna 19 ocupa el primer lugar como principal punto de salida, seguida muy de cerca por la comuna 2. Esto indica que, aunque la comuna 2 sigue siendo clave, en el caso del automóvil la generación de viajes está un poco más distribuida entre varias comunas.

También destacan las comunas 17 y 3, que mantienen un volumen importante de viajes, lo que refuerza la idea de que el uso del automóvil está concentrado en el corredor centro–occidente y sur de la ciudad. La presencia de la comuna 18 en el top 5 también es relevante, ya que confirma que desde esta zona se están generando desplazamientos en vehículo particular, aunque en menor proporción.

En conjunto, estos resultados muestran que el origen de los viajes en automóvil no está tan concentrado en una sola comuna, sino que se reparte entre varias zonas con alta actividad, lo que puede estar relacionado con niveles de motorización más altos o con patrones de movilidad asociados a trayectos más largos.

tabla_origen_automovil <- top_origen_automovil %>%
  kable(
    caption = "Top 5 comunas de origen en automóvil",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )
tabla_origen_automovil
Top 5 comunas de origen en automóvil
Ranking Comuna Nombre Viajes
1 19 Comuna 19 1165
2 2 Comuna 2 1121
3 17 Comuna 17 899
4 3 Comuna 3 854
5 18 Comuna 18 559

En el caso de las comunas de destino en automóvil, vuelve a aparecer un patrón más concentrado que en el origen. La comuna 2 se posiciona claramente como el principal punto de llegada, con una diferencia importante frente a las demás, lo que confirma su papel como una de las principales centralidades de la ciudad para este tipo de desplazamientos.

Le siguen las comunas 3 y 19, que también concentran un volumen alto de viajes, manteniendo ese eje central que ya se venía observando en los mapas. La comuna 17 continúa presente en el top 5, lo que indica que tiene una dinámica constante tanto de salida como de llegada de viajes en automóvil. Además, aparece la comuna 4, que no estaba en el origen, lo que sugiere que está recibiendo más viajes de los que genera.

En conjunto, estos resultados refuerzan la idea de que los destinos en automóvil están más concentrados en ciertas comunas centrales, mientras que los orígenes están un poco más distribuidos. Esto es coherente con una dinámica donde las personas se desplazan desde distintas zonas de la ciudad hacia puntos específicos donde se concentran actividades económicas, comerciales o de servicios.

tabla_destino_automovil <- top_destino_automovil %>%
  kable(
    caption = "Top 5 comunas de destino en automóvil",
    align = "c"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed")
  )


tabla_destino_automovil
Top 5 comunas de destino en automóvil
Ranking Comuna Nombre Viajes
1 2 Comuna 2 2006
2 3 Comuna 3 1557
3 19 Comuna 19 1302
4 17 Comuna 17 959
5 4 Comuna 4 757

4. Conclusiones

El análisis espacial evidencia que la movilidad en Cali no está distribuida de manera homogénea, sino que responde a una lógica clara de centralidad urbana. La comuna 2 se consolida como el principal nodo articulador del sistema de movilidad, no solo por su alta generación de viajes, sino especialmente por su capacidad de atracción en todos los modos de transporte. Esto indica que las dinámicas económicas, de servicios y empleo están altamente concentradas, generando presiones estructurales sobre esta zona y su conectividad.

En segundo lugar, se identifica un corredor dominante centro–occidente (comunas 2, 3, 19 y 17) que concentra tanto orígenes como destinos. Este patrón sugiere que la planificación de la movilidad no puede abordarse de forma dispersa, sino que debe priorizar intervenciones en estos ejes estructurantes, donde realmente se está moviendo la ciudad. Inversiones en infraestructura, gestión del tráfico y fortalecimiento del transporte público en este corredor tendrían un impacto mucho más alto que intervenciones generalizadas.

Por otro lado, las comunas del oriente (13, 14 y 21) presentan una participación sistemáticamente baja en todos los modos de transporte. Más que un dato de baja movilidad, esto debe leerse como una señal de desconexión estructural frente a las centralidades urbanas. Esto plantea un reto estratégico: mejorar la integración territorial de estas zonas, no solo desde la oferta de transporte, sino desde la localización de oportunidades (empleo, educación, servicios), para reducir la necesidad de desplazamientos largos y desiguales.

En términos modales, la bicicleta muestra una dinámica altamente localizada, concentrada en pocas comunas y con trayectos cortos. Esto indica que su potencial de expansión no depende únicamente de promover su uso, sino de construir redes conectadas que permitan escalar esos recorridos a distancias mayores. En contraste, la moto y el automóvil evidencian una fuerte dependencia de los corredores centrales, con una concentración aún mayor en los destinos, lo que refuerza problemas de congestión y presión sobre infraestructura vial en zonas específicas.

Finalmente, un hallazgo clave es la diferencia sistemática entre la distribución de orígenes y destinos: mientras los orígenes están relativamente más dispersos, los destinos están altamente concentrados. Esto confirma una estructura urbana monocéntrica o con pocas centralidades fuertes. Desde una perspectiva estratégica, esto implica que cualquier política de movilidad debe articularse con la planificación urbana, promoviendo una ciudad más policéntrica que redistribuya la atracción de viajes y reduzca las cargas sobre los nodos actuales.

En conjunto, los resultados no solo describen cómo se mueve la ciudad, sino que evidencian dónde están los cuellos de botella, las desigualdades territoriales y las oportunidades de intervención. Esto convierte el análisis en una herramienta clave para orientar decisiones de política pública en movilidad, ordenamiento territorial y desarrollo urbano.