1. Introducción


La presente actividad busca analizar los patrones espaciales de movilidad en la ciudad de Cali a partir de la Encuesta Origen-Destino, la cual recopila trayectos realizados por distintos medios de transporte.


El objetivo principal es identificar desde qué comunas se originan la mayoría de los viajes y hacia dónde se dirigen, además de comparar los patrones según el tipo de vehículo utilizado: bicicleta, motocicleta y automóvil.


El análisis combina herramientas de procesamiento de datos en R y cartografía en formato shapefile, generando mapas interactivos que permiten visualizar la distribución espacial de los flujos de transporte urb

# Cargar datos
datos <- read_excel("EncuestaOrigenDestino.xlsx", sheet = "Hoja1") %>%
  clean_names() %>% 
  rename(tipo_vehiculo = tipo_de_vehiculo)

# Convertir códigos numéricos en texto ("COMUNA X")
datos <- datos %>%
  mutate(
    comuna_origen_nom  = paste("COMUNA", as.numeric(comuna_origen)),
    comuna_destino_nom = paste("COMUNA", as.numeric(comuna_destino))
  )

# Estandarizar a mayúsculas
datos <- datos %>%
  mutate(across(ends_with("_nom"), str_to_upper))

# Reemplazar los códigos de tipo de vehículo
datos <- datos %>%
  mutate(
    tipo_vehiculo = case_when(
      tipo_vehiculo == 1 ~ "Bicicleta",
      tipo_vehiculo == 2 ~ "Moto",
      tipo_vehiculo == 3 ~ "Automovil",
      TRUE ~ NA_character_
    )
  )



# Cargar shapefile y transformar CRS
comunas <- st_read("Comunas.shp", quiet = TRUE) %>%
  st_transform(crs = 4326) %>%
  mutate(nombre = str_trim(str_to_upper(nombre)))

2. Procesamiento de Datos


El procesamiento de datos constituye una etapa esencial para garantizar la calidad y consistencia de la información empleada en el análisis espacial. En esta fase se ejecutan tareas de estandarización, conteo y vinculación con la cartografía base de las comunas de Cali, permitiendo preparar los datos para su visualización en los mapas temáticos posteriores.


• Limpieza y estandarización de nombres

Se homogenizan los nombres de las comunas tanto de origen como de destino para evitar inconsistencias derivadas de mayúsculas, minúsculas o espacios.

Aplicación de las Técnicas


Se emplearon técnicas de análisis espacial en R mediante los paquetes sf, dplyr y tmap, lo que permitió integrar datos tabulares y geográficos a través de uniones (left_join()).

Los datos fueron proyectados en el sistema de coordenadas geográficas EPSG:4326, garantizando coherencia espacial con la cartografía de comunas de Cali.

Los mapas se generaron en modo interactivo utilizando tmap y leaflet, asegurando una visualización clara, dinámica y fácilmente exploratoria de los resultados.



3. Resultados: Mapa de Origen - General


En esta sección se presenta un conteo general de los registros contenidos en el archivo EncuestaOrigenDestino.xlsx, considerando únicamente a las personas cuyo lugar de origen pertenece a alguna de las comunas de la ciudad de Cali.

A partir de este filtrado, se obtiene el número total de individuos por comuna de origen, con el propósito de analizar y representar gráficamente los flujos de movilidad dentro del territorio urbano.

Este análisis permite identificar las comunas con mayor y menor participación en la generación de viajes, proporcionando una base sólida para la interpretación espacial de los patrones de desplazamiento en la ciudad.


tmap_mode("view")

tm_shape(comunas_origen) +
  tm_polygons(
    col = "viajes_origen",
    palette = "-YlOrRd",
    style = "quantile",
    alpha = 0.9,
    border.col = "gray40",
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes:" = "viajes_origen"),
    title = "Número de viajes"
  ) +
  tm_bubbles(size = "viajes_origen", col = "darkred", alpha = 0.5, border.col = "white") +
  tm_layout(
    title = "Mapa 1. Comuna de Origen - Todos los vehículos",
    frame = FALSE,
    legend.outside = TRUE,
    main.title.size = 1.3
  )
# Calcular top 5 y bottom 5 comunas según número de viajes de origen
top5_origen <- comunas_origen %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_origen)) %>%
  slice_head(n = 5)

bottom5_origen <- comunas_origen %>%
  st_drop_geometry() %>%
  arrange(viajes_origen) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_origen, caption = "Top 5 comunas con mayor número de viajes de origen")
Top 5 comunas con mayor número de viajes de origen
OBJECTID gid comuna nombre viajes_origen
1 107 2 COMUNA 2 2968
4 110 19 COMUNA 19 2850
6 104 17 COMUNA 17 2377
3 109 3 COMUNA 3 2121
7 105 18 COMUNA 18 1536
knitr::kable(bottom5_origen, caption = "Top 5 comunas con menor número de viajes de origen")
Top 5 comunas con menor número de viajes de origen
OBJECTID gid comuna nombre viajes_origen
17 97 12 COMUNA 12 348
11 91 5 COMUNA 5 664
18 98 14 COMUNA 14 685
21 101 20 COMUNA 20 733
12 92 7 COMUNA 7 734

Análisis


  • Concentración de viajes en comunas específicas:
    Se observa una alta concentración de viajes originados en las comunas 2, 19 y 17, las cuales presentan los valores más elevados con 2968, 2850 y 2377 registros, respectivamente. Esto sugiere que dichas zonas actúan como principales puntos emisores de desplazamientos dentro de la ciudad, probablemente debido a su densidad poblacional, presencia de centros educativos, comerciales o laborales.

  • Distribución desigual del flujo de movilidad:
    Existe una diferencia notable entre las comunas con mayor y menor cantidad de registros. Mientras las cinco primeras acumulan una proporción significativa del total de viajes, las comunas con menor participación —como la 12, 5, 14 y 20— registran menos de 700 desplazamientos, evidenciando una menor intensidad de movilidad en estos sectores.

  • Tendencias espaciales de origen de viajes:
    En términos espaciales, se puede inferir que los mayores flujos de movilidad provienen de sectores centrales y nororientales de la ciudad (donde suelen ubicarse las comunas 2, 3, 17 y 19), mientras que las zonas periféricas o de menor densidad urbana muestran una menor generación de viajes.

  • Implicaciones para la planificación urbana:
    Estos resultados son relevantes para la gestión del transporte y la planificación del territorio, ya que permiten identificar las áreas que demandan una mayor cobertura de servicios de movilidad y aquellas donde podrían promoverse alternativas sostenibles como la bicicleta o el transporte público.



3.1 Origen - Bicicleta


En esta subsección se analiza el uso de la bicicleta como medio de transporte, a partir del conteo de registros por comuna de origen.
El objetivo es identificar las zonas de Cali donde se concentra el uso de este vehículo y reconocer patrones espaciales de movilidad sostenible dentro de la ciudad.


datos_bici <- datos %>% filter(tipo_vehiculo == "Bicicleta")
conteo_bici <- datos_bici %>% count(comuna_origen_nom, name = "viajes_bici")

comunas_bici <- comunas %>%
  left_join(conteo_bici, by = c("nombre" = "comuna_origen_nom"))
comunas_bici$viajes_bici[is.na(comunas_bici$viajes_bici)] <- 0

tm_shape(comunas_bici) +
  tm_polygons(
    "viajes_bici",
    palette = "Greens",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes (bici):" = "viajes_bici")
  ) +
  tm_bubbles(size = "viajes_bici", col = "darkgreen", alpha = 0.5) +
  tm_layout(title = "Mapa 2. Origen - Bicicleta", frame = FALSE)
# Calcular top 5 y bottom 5 comunas según número de viajes bici
top5_origen_bici <- comunas_bici %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_bici)) %>%
  slice_head(n = 5)

bottom5_origen_bici <- comunas_bici %>%
  st_drop_geometry() %>%
  arrange(viajes_bici) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_origen_bici, caption = "Top 5 comunas con mayor número de viajes de bici")
Top 5 comunas con mayor número de viajes de bici
OBJECTID gid comuna nombre viajes_bici
1 107 2 COMUNA 2 159
4 110 19 COMUNA 19 141
6 104 17 COMUNA 17 141
7 105 18 COMUNA 18 111
3 109 3 COMUNA 3 99
knitr::kable(bottom5_origen_bici, caption = "Top 5 comunas con menor número de viajes de bici")
Top 5 comunas con menor número de viajes de bici
OBJECTID gid comuna nombre viajes_bici
17 97 12 COMUNA 12 14
12 92 7 COMUNA 7 35
2 108 1 COMUNA 1 36
18 98 14 COMUNA 14 37
11 91 5 COMUNA 5 38

Análisis


  • Alta concentración en comunas específicas:
    Las comunas 2, 17, 19, 18 y 3 presentan los mayores valores de registros en bicicleta, con conteos que oscilan entre 159 y 99 viajes. Esto evidencia una alta concentración de desplazamientos en bicicleta en zonas específicas, posiblemente asociadas a una mejor infraestructura vial, mayor conectividad con el centro de la ciudad o presencia de equipamientos educativos y laborales.

  • Coincidencia con el patrón general de movilidad:
    Al comparar estos resultados con el total de viajes por todos los medios de transporte, se observa que las comunas con más registros en bicicleta coinciden con aquellas que también generan más desplazamientos en general (como las comunas 2, 17 y 19). Esto sugiere que el uso de la bicicleta podría ser una alternativa complementaria o de proximidad en zonas ya altamente dinámicas en términos de movilidad.

  • Menor uso en zonas periféricas:
    A medida que se avanza hacia comunas con menor densidad urbana o localizadas en la periferia (por ejemplo, las comunas 12, 7, 1 y 14), el número de viajes en bicicleta disminuye significativamente, llegando a menos de 40 registros. Esto puede estar asociado a mayores distancias de desplazamiento, condiciones topográficas desfavorables o ausencia de infraestructura segura para ciclistas.

  • Oportunidades para fomentar la movilidad sostenible:
    Los resultados reflejan el potencial de consolidar la bicicleta como medio de transporte urbano, especialmente en las comunas donde ya existe una cultura de uso activa. La información obtenida puede orientar estrategias de planificación y promoción de ciclorutas, priorizando la conexión entre comunas con alta demanda y aquellas con bajo uso, fomentando una red más equilibrada y sostenible de movilidad urbana.



3.2 Origen - Moto


En este apartado se analizan los desplazamientos cuyo medio de transporte es la motocicleta.
El objetivo es identificar las comunas que concentran la mayor cantidad de viajes en este tipo de vehículo y comprender cómo su distribución contribuye a los patrones generales de movilidad en la ciudad de Cali.


datos_moto <- datos %>% filter(tipo_vehiculo == "Moto")
conteo_moto <- datos_moto %>% count(comuna_origen_nom, name = "viajes_moto")

comunas_moto <- comunas %>%
  left_join(conteo_moto, by = c("nombre" = "comuna_origen_nom"))
comunas_moto$viajes_moto[is.na(comunas_moto$viajes_moto)] <- 0

tm_shape(comunas_moto) +
  tm_polygons(
    "viajes_moto",
    palette = "Blues",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes (moto):" = "viajes_moto")
  ) +
  tm_bubbles(size = "viajes_moto", col = "navy", alpha = 0.5) +
  tm_layout(title = "Mapa 3. Origen - Moto", frame = FALSE)
# Calcular top 5 y bottom 5 comunas según número de viajes moto
top5_origen_moto <- comunas_moto %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_moto)) %>%
  slice_head(n = 5)

bottom5_origen_moto <- comunas_moto %>%
  st_drop_geometry() %>%
  arrange(viajes_moto) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_origen_moto, caption = "Top 5 comunas con mayor número de viajes de moto")
Top 5 comunas con mayor número de viajes de moto
OBJECTID gid comuna nombre viajes_moto
1 107 2 COMUNA 2 1414
4 110 19 COMUNA 19 1280
6 104 17 COMUNA 17 1136
3 109 3 COMUNA 3 970
7 105 18 COMUNA 18 746
knitr::kable(bottom5_origen_moto, caption = "Top 5 comunas con menor número de viajes de moto")
Top 5 comunas con menor número de viajes de moto
OBJECTID gid comuna nombre viajes_moto
17 97 12 COMUNA 12 176
18 98 14 COMUNA 14 310
11 91 5 COMUNA 5 319
21 101 20 COMUNA 20 339
12 92 7 COMUNA 7 350

Análisis


  • Concentración de viajes en comunas principales:
    Las comunas 2, 19 y 17 concentran la mayor cantidad de viajes, con más de 1.100 registros cada una, lo que indica que son los principales puntos de origen dentro de la ciudad.

  • Menor participación en comunas periféricas:
    Las comunas 12, 14 y 5 presentan los menores valores, con menos de 320 registros, reflejando una baja participación en la generación de viajes y menor dinamismo en términos de movilidad.

  • Concentración espacial del flujo:
    En general, los desplazamientos se concentran en las zonas centrales y nororientales de la ciudad, mientras que las áreas periféricas muestran una menor movilidad, evidenciando un patrón de centralización del tráfico urbano.



3.3 Origen - Automóvil


En esta sección se analizan los viajes cuyo medio de transporte es el automóvil, con el fin de identificar las comunas que generan la mayor cantidad de desplazamientos particulares.
El propósito es reconocer cómo el uso del vehículo privado contribuye a los flujos de movilidad urbana y su relación con los patrones espaciales observados en la ciudad de Cali.


datos_auto <- datos %>% filter(tipo_vehiculo == "Automovil")
conteo_auto <- datos_auto %>% count(comuna_origen_nom, name = "viajes_auto")

comunas_auto <- comunas %>%
  left_join(conteo_auto, by = c("nombre" = "comuna_origen_nom"))
comunas_auto$viajes_auto[is.na(comunas_auto$viajes_auto)] <- 0

tm_shape(comunas_auto) +
  tm_polygons(
    "viajes_auto",
    palette = "Purples",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes (automóvil):" = "viajes_auto")
  ) +
  tm_bubbles(size = "viajes_auto", col = "purple4", alpha = 0.5) +
  tm_layout(title = "Mapa 4. Origen - Automóvil", frame = FALSE)
# Calcular top 5 y bottom 5 comunas según número de viajes auto
top5_origen_auto <- comunas_auto %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_auto)) %>%
  slice_head(n = 5)

bottom5_origen_auto <- comunas_auto %>%
  st_drop_geometry() %>%
  arrange(viajes_auto) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_origen_auto, caption = "Top 5 comunas con mayor número de viajes de auto")
Top 5 comunas con mayor número de viajes de auto
OBJECTID gid comuna nombre viajes_auto
4 110 19 COMUNA 19 1165
1 107 2 COMUNA 2 1121
6 104 17 COMUNA 17 899
3 109 3 COMUNA 3 854
7 105 18 COMUNA 18 559
knitr::kable(bottom5_origen_auto, caption = "Top 5 comunas con menor número de viajes de auto")
Top 5 comunas con menor número de viajes de auto
OBJECTID gid comuna nombre viajes_auto
17 97 12 COMUNA 12 123
11 91 5 COMUNA 5 241
18 98 14 COMUNA 14 272
21 101 20 COMUNA 20 272
12 92 7 COMUNA 7 283

Análisis


  • Comunas con mayor generación de viajes:
    Las comunas 19, 2 y 17 registran la mayor cantidad de viajes en automóvil, superando los 850 desplazamientos, lo que evidencia su papel como principales generadoras de movilidad motorizada dentro de la ciudad.

  • Bajo uso del automóvil en zonas periféricas:
    Las comunas 12, 5, 14 y 20 presentan los valores más bajos, con menos de 250 registros, reflejando un menor uso del automóvil en estas áreas, probablemente asociado a factores socioeconómicos o de infraestructura vial limitada.

  • Concentración espacial de la movilidad:
    En conjunto, se mantiene una concentración de viajes en las zonas norte y centro de la ciudad, mientras que las comunas periféricas muestran una menor participación, reforzando la tendencia de centralización de la movilidad urbana.



4. Resultados: Mapas de Destino


En esta nueva sección se analizan los patrones de destino de los desplazamientos dentro de la ciudad de Cali.
El objetivo es identificar las comunas que actúan como principales polos de atracción de viajes según el medio de transporte utilizado (bicicleta, motocicleta y automóvil), contrastando estos resultados con los patrones observados en las comunas de origen.


tm_shape(comunas_destino) +
  tm_polygons(
    "viajes_destino",
    palette = "YlGnBu",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes destino:" = "viajes_destino")
  ) +
  tm_bubbles(size = "viajes_destino", col = "blue", alpha = 0.4) +
  tm_layout(title = "Mapa 5. Comuna de Destino - Todos los vehículos", frame = FALSE)
# Calcular top 5 y bottom 5 comunas según número de viajes
top5_destino <- comunas_destino %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_destino)) %>%
  slice_head(n = 5)

bottom5_destino <- comunas_destino %>%
  st_drop_geometry() %>%
  arrange(viajes_destino) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_destino, caption = "Top 5 comunas con mayor número de viajes")
Top 5 comunas con mayor número de viajes
OBJECTID gid comuna nombre viajes_destino
1 107 2 COMUNA 2 4810
3 109 3 COMUNA 3 3859
4 110 19 COMUNA 19 3158
6 104 17 COMUNA 17 2164
8 106 22 COMUNA 22 1860
knitr::kable(bottom5_destino, caption = "Top 5 comunas con menor número de viajes")
Top 5 comunas con menor número de viajes
OBJECTID gid comuna nombre viajes_destino
2 108 1 COMUNA 1 230
17 97 12 COMUNA 12 246
21 101 20 COMUNA 20 351
18 98 14 COMUNA 14 379
15 95 21 COMUNA 21 515

Análisis


  • Concentración de destinos en comunas principales:
    Las comunas 2, 3 y 19 concentran la mayor cantidad de destinos, superando los 3.000 registros, lo que indica que son los principales puntos de atracción de viajes en la ciudad.

  • Menor recepción en zonas periféricas:
    Las comunas 1, 12 y 20 presentan los valores más bajos, con menos de 400 registros, reflejando una menor recepción de desplazamientos y una baja participación en los flujos urbanos de destino.

  • Tendencia hacia el norte y centro de la ciudad:
    En general, los viajes se dirigen principalmente hacia las zonas centrales y norte de Cali, donde se ubican centros comerciales, educativos y de servicios, consolidando estos sectores como focos de movilidad urbana.



4.1 Destino - Bicicleta


En este apartado se analizan los desplazamientos cuyo medio de transporte es la bicicleta, con el fin de identificar las comunas que reciben la mayor cantidad de viajes realizados en este tipo de vehículo.
El objetivo es reconocer los principales polos de atracción para la movilidad sostenible dentro del territorio urbano de Cali y comparar su comportamiento frente a los patrones observados en el origen.


# Conteo y unión para bicicleta (destinos)
conteo_dest_bici <- datos_bici %>%
  count(comuna_destino_nom, name = "viajes_dest_bici")

comunas_dest_bici <- comunas %>%
  left_join(conteo_dest_bici, by = c("nombre" = "comuna_destino_nom"))
comunas_dest_bici$viajes_dest_bici[is.na(comunas_dest_bici$viajes_dest_bici)] <- 0

# Mapa interactivo
tm_shape(comunas_dest_bici) +
  tm_polygons(
    "viajes_dest_bici",
    palette = "Greens",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes destino (bici):" = "viajes_dest_bici")
  ) +
  tm_bubbles(size = "viajes_dest_bici", col = "darkgreen", alpha = 0.5, border.col = "white") +
  tm_layout(
    title = "Mapa 6. Destino - Bicicleta",
    frame = FALSE,
    legend.outside = TRUE
  )
# Calcular top 5 y bottom 5 comunas según número de viajes
top5_destino_bici <- comunas_dest_bici %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_dest_bici)) %>%
  slice_head(n = 5)

bottom5_destino_bici <- comunas_dest_bici %>%
  st_drop_geometry() %>%
  arrange(viajes_dest_bici) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_destino_bici, caption = "Top 5 comunas con mayor número de viajes Bici")
Top 5 comunas con mayor número de viajes Bici
OBJECTID gid comuna nombre viajes_dest_bici
1 107 2 COMUNA 2 218
3 109 3 COMUNA 3 189
4 110 19 COMUNA 19 147
6 104 17 COMUNA 17 115
8 106 22 COMUNA 22 100
knitr::kable(bottom5_destino_bici, caption = "Top 5 comunas con menor número de viajes Bici")
Top 5 comunas con menor número de viajes Bici
OBJECTID gid comuna nombre viajes_dest_bici
2 108 1 COMUNA 1 12
17 97 12 COMUNA 12 15
5 103 15 COMUNA 15 20
18 98 14 COMUNA 14 22
21 101 20 COMUNA 20 25

Análisis


  • Concentración en comunas centrales:
    Las comunas 2, 3 y 19 concentran el mayor número de destinos en bicicleta, con más de 140 registros, lo que indica una alta atracción de viajes sostenibles hacia estas zonas.

  • Baja llegada de ciclistas en zonas periféricas:
    Las comunas 1, 12 y 15 registran los valores más bajos, con menos de 20 desplazamientos, reflejando una baja llegada de ciclistas y una menor presencia de infraestructura apta para este medio de transporte.

  • Tendencia espacial de los flujos:
    En general, los viajes en bicicleta se dirigen principalmente hacia las zonas centrales y norte de la ciudad, donde existen mejores condiciones de accesibilidad y conectividad vial para este tipo de movilidad.



4.2 Destino - Moto


En esta sección se examinan los desplazamientos cuyo medio de transporte es la motocicleta, con el propósito de identificar las comunas que actúan como principales polos de atracción de este tipo de viajes.
Este análisis permite comprender cómo la moto contribuye al patrón general de movilidad urbana en Cali y qué sectores concentran la mayor llegada de vehículos motorizados de dos ruedas.


# Conteo y unión para moto (destinos)
conteo_dest_moto <- datos_moto %>%
  count(comuna_destino_nom, name = "viajes_dest_moto")

comunas_dest_moto <- comunas %>%
  left_join(conteo_dest_moto, by = c("nombre" = "comuna_destino_nom"))
comunas_dest_moto$viajes_dest_moto[is.na(comunas_dest_moto$viajes_dest_moto)] <- 0

# Mapa interactivo
tm_shape(comunas_dest_moto) +
  tm_polygons(
    "viajes_dest_moto",
    palette = "Blues",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes destino (moto):" = "viajes_dest_moto")
  ) +
  tm_bubbles(size = "viajes_dest_moto", col = "navy", alpha = 0.5, border.col = "white") +
  tm_layout(
    title = "Mapa 7. Destino - Moto",
    frame = FALSE,
    legend.outside = TRUE
  )
# Calcular top 5 y bottom 5 comunas según número de viajes moto
top5_destino_moto <- comunas_dest_moto %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_dest_moto)) %>%
  slice_head(n = 5)

bottom5_destino_moto <- comunas_dest_moto %>%
  st_drop_geometry() %>%
  arrange(viajes_dest_moto) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_destino_moto, caption = "Top 5 comunas con mayor número de viajes Moto")
Top 5 comunas con mayor número de viajes Moto
OBJECTID gid comuna nombre viajes_dest_moto
1 107 2 COMUNA 2 2177
3 109 3 COMUNA 3 1734
4 110 19 COMUNA 19 1421
6 104 17 COMUNA 17 927
8 106 22 COMUNA 22 911
knitr::kable(bottom5_destino_moto, caption = "Top 5 comunas con menor número de viajes Moto")
Top 5 comunas con menor número de viajes Moto
OBJECTID gid comuna nombre viajes_dest_moto
2 108 1 COMUNA 1 112
17 97 12 COMUNA 12 128
21 101 20 COMUNA 20 151
18 98 14 COMUNA 14 188
11 91 5 COMUNA 5 215

Análisis


  • Concentración de destinos en comunas principales:
    Las comunas 2, 3 y 19 presentan la mayor cantidad de destinos en motocicleta, con más de 1.400 registros, consolidándose como los principales puntos de atracción de este tipo de viajes.

  • Baja afluencia en zonas periféricas:
    Las comunas 1, 12 y 20 registran los menores valores, con menos de 160 desplazamientos, evidenciando una baja afluencia de motocicletas hacia estas zonas, lo que puede asociarse a menor densidad urbana o ausencia de equipamientos de atracción.

  • Concentración espacial del flujo motorizado:
    En general, los viajes en moto se concentran en sectores centrales y norte de la ciudad, donde existe una mayor actividad económica y densidad urbana, reforzando su papel como zonas de destino preferente para la movilidad laboral y comercial.



4.3 Destino - Automóvil


En este apartado se analizan los desplazamientos cuyo medio de transporte es el automóvil, con el fin de identificar las comunas que reciben la mayor cantidad de viajes particulares.
El propósito es reconocer las áreas de la ciudad con mayor atracción de vehículos privados y comprender su relación con los ejes de actividad económica y residencial de Cali.


# Conteo y unión para automóvil (destinos)
conteo_dest_auto <- datos_auto %>%
  count(comuna_destino_nom, name = "viajes_dest_auto")

comunas_dest_auto <- comunas %>%
  left_join(conteo_dest_auto, by = c("nombre" = "comuna_destino_nom"))
comunas_dest_auto$viajes_dest_auto[is.na(comunas_dest_auto$viajes_dest_auto)] <- 0

# Mapa interactivo
tm_shape(comunas_dest_auto) +
  tm_polygons(
    "viajes_dest_auto",
    palette = "Purples",
    style = "quantile",
    alpha = 0.9,
    id = "nombre",
    popup.vars = c("Comuna:" = "nombre", "Viajes destino (auto):" = "viajes_dest_auto")
  ) +
  tm_bubbles(size = "viajes_dest_auto", col = "purple4", alpha = 0.5, border.col = "white") +
  tm_layout(
    title = "Mapa 8. Destino - Automóvil",
    frame = FALSE,
    legend.outside = TRUE
  )
# Calcular top 5 y bottom 5 comunas según número de viajes auto
top5_destino_auto <- comunas_dest_auto %>%
  st_drop_geometry() %>%       # elimina la geometría para poder ordenar
  arrange(desc(viajes_dest_auto)) %>%
  slice_head(n = 5)

bottom5_destino_auto <- comunas_dest_auto %>%
  st_drop_geometry() %>%
  arrange(viajes_dest_auto) %>%
  slice_head(n = 5)

# Mostrar tablas en consola o en el documento
knitr::kable(top5_destino_auto, caption = "Top 5 comunas con mayor número de viajes Auto")
Top 5 comunas con mayor número de viajes Auto
OBJECTID gid comuna nombre viajes_dest_auto
1 107 2 COMUNA 2 2006
3 109 3 COMUNA 3 1557
4 110 19 COMUNA 19 1302
6 104 17 COMUNA 17 959
10 90 4 COMUNA 4 757
knitr::kable(bottom5_destino_auto, caption = "Top 5 comunas con menor número de viajes Auto")
Top 5 comunas con menor número de viajes Auto
OBJECTID gid comuna nombre viajes_dest_auto
17 97 12 COMUNA 12 85
2 108 1 COMUNA 1 86
18 98 14 COMUNA 14 138
21 101 20 COMUNA 20 144
15 95 21 COMUNA 21 198

Análisis


  • Concentración de destinos en comunas principales:
    Las comunas 2, 3 y 19 concentran la mayor cantidad de destinos en automóvil, superando los 1.300 registros, lo que refleja su papel como principales zonas receptoras de viajes motorizados.

  • Baja llegada de vehículos particulares:
    Las comunas 1, 12 y 14 presentan los menores valores, con menos de 150 registros, indicando una baja llegada de automóviles y una menor densidad vehicular en estas áreas.

  • Concentración espacial del flujo vehicular:
    En general, los desplazamientos en carro se dirigen hacia las zonas norte y centro de la ciudad, donde se ubican áreas comerciales, institucionales y de servicios que atraen un alto flujo vehicular.



5. Conclusiones


El análisis de los patrones de movilidad en la ciudad de Cali, basado en la Encuesta Origen–Destino y segmentado por tipo de vehículo (bicicleta, motocicleta y automóvil), permite identificar una estructura urbana policéntrica, aunque con una fuerte centralización funcional en torno a unas pocas comunas que concentran la mayor parte de los flujos de origen y destino.



• Concentración espacial y jerarquía urbana

Los resultados confirman que las Comunas 2, 3, 17, 19 y 22 conforman el eje dominante de la movilidad caleña, actuando como polos tanto de generación como de atracción de viajes.

La Comuna 2 emerge como el máximo centro de destino para todos los modos de transporte, especialmente moto y carro, lo que refuerza su rol como núcleo de servicios, oficinas, comercio y empleo.

La Comuna 3 (centro histórico) mantiene una función estructural de conexión y actividad, recibiendo altos flujos diarios.

Las Comunas 17 y 19, en el suroccidente, combinan funciones residenciales de estratos medio-altos con una creciente centralidad comercial y educativa, configurándose como subcentros urbanos consolidados.

La Comuna 22, aunque originalmente residencial, muestra un rol dual: punto de origen de viajes y nuevo destino emergente vinculado al desarrollo universitario y empresarial del sur.


• Movilidad y desigualdad territorial

El estudio revela una marcada desigualdad espacial en la distribución de los desplazamientos.
Las comunas periféricas (como la 1, 5, 12, 14 y 20) tienen baja participación tanto en origen como en destino, lo que evidencia limitaciones de conectividad, acceso a empleo y concentración de servicios en el eje central y suroccidental de la ciudad.
Esta asimetría indica que la movilidad en Cali no solo responde a patrones de transporte, sino también a desigualdades socioespaciales históricas entre el centro y la periferia.


• Diferencias por tipo de vehículo

El análisis por medio de transporte muestra patrones complementarios que refuerzan la estructura general:


  • Motocicleta: Es el modo de transporte con mayor volumen y alcance, concentrado en las comunas 2, 3 y 19 como principales destinos. Su uso masivo refleja la necesidad de desplazamientos ágiles y económicos hacia los centros laborales.
  • Automóvil: Presenta una concentración similar, pero asociada a niveles socioeconómicos más altos, con fuerte flujo entre las comunas 19 (origen) y 2 (destino). Indica una movilidad pendular desde zonas residenciales hacia áreas de servicios y comercio.
  • Bicicleta: Aunque su participación es menor, sigue un patrón comparable al general, concentrándose en las comunas 2, 3 y 19. Este resultado revela el potencial de expansión de la movilidad sostenible, especialmente si se fortalecen las infraestructuras seguras de conexión entre comunas del sur y el centro.


• Implicaciones para la planificación urbana y de transporte

Los resultados evidencian la necesidad de políticas de movilidad diferenciadas por zona y modo de transporte.

En el centro y norte (Comunas 2 y 3), urge priorizar la gestión del tráfico, el estacionamiento y el acceso al transporte público, dada la enorme presión de vehículos y motos.

En el suroccidente (Comunas 17, 19 y 22), se recomienda consolidar corredores integrados que equilibren el flujo entre zonas residenciales y de servicios.

En las comunas periféricas, las estrategias deben centrarse en mejorar la accesibilidad y conectividad mediante transporte público eficiente, ciclovías seguras y soluciones de micromovilidad.


• Síntesis final

En conjunto, el patrón de movilidad en Cali describe una ciudad que, pese a su expansión hacia el sur y occidente, mantiene un corazón funcional altamente concentrado en pocas comunas centrales.
La coexistencia de zonas generadoras y atractoras en el eje 2–3–19–17–22 revela un sistema urbano con flujo pendular dominante, donde los desplazamientos diarios reafirman la relación entre residencia y actividad económica.
Comprender esta estructura es fundamental para orientar las futuras decisiones en infraestructura vial, transporte público, planeación territorial y sostenibilidad urbana.



6. Referencias


  • • Alcaldía de Santiago de Cali – Datos Abiertos Cali
  • • DANE – Encuesta Origen-Destino
  • • Documentación de R: paquetes sf, tmap, dplyr, readxl